一种Linux环境下生成遥感图像快视图的方法转让专利

申请号 : CN201210330874.4

文献号 : CN102903089B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 马丕明张璇

申请人 : 山东大学

摘要 :

一种Linux环境下生成遥感图像快视图的方法,属遥感图像处理技术领域,该方法步骤为:1)BSQ格式图像生成TIF格式图像:a.线性映射;b.图像数据小数部分预处理;c.图像数据按阈值裁剪;d.直方图均衡化;e.生成TIF格式影像文件;2)生成JPEG格式快视图文件。本发明的有益效果如下:1、本方法提供的快视图生成方法简单,易操作,生成的快视图能较为准确的描述高光谱图像当前波段的数据信息;2、本发明提供的数据处理从32位单精度浮点型转换为8位无符号字符型数据,该量化方法噪声较小。

权利要求 :

1.一种Linux环境下遥感图像快视图生成的方法,生成快视图过程中所用到的遥感图像数据是由原始高光谱图像经处理后得到的BSQ格式的图像数据文件,该图像文件数据格式为32位单精度浮点型类型,生成快视图时处理的是单波段的图像数据信息,该方法步骤如下:

1)BSQ格式图像生成TIF格式图像

因为不能直接将高光谱图像数据从BSQ格式转换成JPEG格式,所以必须先将BSQ格式的高光谱图像数据转换成TIF格式的图像,然后再从TIF格式转换成JPEG格式;生成TIF格式图像步骤处理如下:a.线性映射

由于处理高光谱图像数据时,其数据范围大小不一,不存在统一的区间,不方便后续处理,所以预先将待处理的BSQ格式的图像数据大小统一映射到区间[0.0,65535.0],之所以选择该区域的原因在于其原始数据处理成BSQ格式数据文件时,其数据整数部分完全在16位无符号短整型数据大小范围之内;

根据全域线性拉伸函数将图像数据线性拉伸到区间[0.0,65535.0];

全域线性拉伸算法如下:

假定原图像像素f(x,y)的灰度区间范围为[a,b],希望增强后图像像素g(x,y)的灰度范围扩展到[c,d],则线性拉伸的基本公式为:由此,先计算BSQ格式的单波段图像像素中的最大灰度值max及最小灰度值min,然后确定其映射公式如下:该部分处理完后数据类型仍然为32位单精度浮点型;

b.图像数据小数部分预处理

采用强制类型转换直接将32位单精度浮点型数据转换为16位无符号短整型数据:由于强制类型转换时计算机采用的是退1算法,直接将小数部分截断,故采取了将图像数据值加上0.5之后再进行强制类型转换,由此实现了计算机对小数的四舍五入算法;

c.图像数据按阈值裁剪

在图像数据小数部分处理完毕之后,将累积概率分布在2%至98%之外的图像数据值进行裁剪,将累积概率在0到2%范围内的数据值赋值为累积概率为2%时所对应的数据值,将累积概率在98%到100%范围内的数据值赋值为累积概率为98%时所对应的数据值;

d.直方图均衡化

进行直方图均衡化,在均衡的过程中将16位的无符号短整型图像数据转化为8位的无符号字符型图像数据,即将生成的图像像素值映射到区间[0,255],以便于生成8位的TIF格式图像影像;

直方图均衡化是对原始图像中的像素灰度做某种映射变换,使变换后的图像灰度的概率密度是均匀分布的,即变换后图像是一幅灰度级均匀分布的图像,从而图像灰度的动态范围得到了增加,提高了图像的对比度;

直方图均衡化具体实现方法:

先将直方图归一化,即把灰度范围压缩至[0,1],归一化的直方图相当于一个概率密度函数,均衡化就是令概率密度为1; r、s分别代表均衡化前后的灰度值, ; 对于图像而言,需要利用其离散形式公式,原图像中某个灰度级像素出现的概率为: ;

其中 是原图像中第k个灰度级像素出现的概率, 是第k个灰度级, 是第k个灰度级 出现的像素个数,N是图像像素总数;由图像的灰度直方图均衡化公式得出均衡化之后的图像的灰度值s:公式中, 来表示原图像的第k个灰度级的转换函数, 表示0~k个灰度级的像素数量之和与图像像素总数的比值,也就是当前灰度级 出现的累积概率, 则表示第0~k的灰度级出现概率累积相加;因为s是归一化的数值,要转换为0~255的颜色值,需要再乘上255,即 , 为灰度范围均衡化到[0,255]范围后的图像的灰度值;

e.生成TIF格式影像文件

调用GDAL数据库中的GDALDatasetRasterIO()函数,将处理后的单波段图像波段数据写入TIF格式文件,生成相应的TIF格式影像文件;

2)生成JPEG格式快视图文件

调用GDAL数据库中的GDALOpen()函数, 打开生成的TIF格式图像影像文件,然后调用GDALCreateCopy()函数,将图像另存为JPEG格式图像,生成JPEG格式快视图图像。

说明书 :

一种Linux环境下生成遥感图像快视图的方法

技术领域

[0001] 本发明属于遥感图像处理技术领域,特别是涉及一种Linux环境下遥感图像快视图的生成方法。

背景技术

[0002] 遥感图像快视图在以下领域中具有广泛的应用前景:
[0003] (1)高光谱遥感是当前遥感技术的前沿领域,它利用感兴趣的物体所反射的电磁波获得相关数据,它包含了丰富的空间、辐射和光谱三重信息。高光谱遥感的出现是遥感界的一场革命,它使本来在宽波段遥感中不可探测的物质,在高光谱遥感中能被探测。而快视图则是高光谱图像处理过程中必要的一个实时的检测方法和辅助手段。
[0004] (2)高光谱遥感图像处理领域中使用快视图可以大大提高遥感图像的分析处理效率。高光谱遥感图像具有几十甚至上百个波段,图像数据维数高,信息量非常巨大。要利用其有效信息,必须对图像进行处理,在每个处理过程可以用快视图来检测处理结果是否正确,防止处理错误后,再做无意义的后续工作。
[0005] (3)在大数据量图像处理方面,快视图使得结果检测更加直观,迅捷。
[0006] 高光谱遥感技术发展非常迅速,高光谱遥感图像的应用也更加广泛,但是鲜有人研究高光谱遥感图像快视图的生成方法,作为高光谱遥感图像研究的一个辅助手段,快视图生成的主要性能指标是快视图生成速度和其准确性(能不能准确的显示当前数据所包含的图像数据信息);作为一种检测方法,快视图相比于专门观测遥感数据的工具,例如ENVI、ERDAS等更加的便捷,直观,使得研究人员在图像处理中,不需要专门的检测工具和软件设施,可以在每个处理阶段实时的检测数据处理的结果,节约了研究人员的时间。浙江大学的章孝灿等在《中国图象图形学报》2002年10月第10期发表的文章《海量遥感图象快速显示技术》(第七卷,1021~1024页)提出了一种中间图像显示技术,该技术较为复杂,不够便捷,且实时性差。

发明内容

[0007] 为了克服现有技术存在的缺陷与不足,本发明提出一种在Linux环境下生成遥感图像快视图的方法,以解决遥感图像处理过程中由于中间处理错误引起的无效运算过多、实时检测性差的问题,保证高光谱遥感图像处理的高效性和有效性。
[0008] 为了实现上述发明目的,本发明采用的技术方案如下:
[0009] 一种Linux环境下遥感图像快视图生成的方法,生成快视图过程中所用到的遥感图像数据都是由原始高光谱图像经处理后得到的BSQ格式的图像数据文件(BSQ为按波段顺序存储的高光谱图像格式的缩略语),该图像文件数据格式为32位单精度浮点型类型,生成快视图时需要处理的都是单波段的图像数据信息,该方法步骤如下:
[0010] 1)BSQ格式图像生成TIF格式图像
[0011] 因为不能直接将高光谱图像数据从BSQ格式转换成JPEG格式,所以必须先将BSQ格式的高光谱图像数据转换成TIF格式的图像,然后再从TIF格式转换成JPEG格式(均是8位的位图);生成TIF格式图像步骤处理如下:
[0012] a.线性映射
[0013] 由于处理高光谱图像数据时,其数据范围大小不一,不存在统一的区间,不方便后续处理,所以预先将待处理的BSQ格式的图像数据大小统一映射到区间[0.0,65535.0],之所以选择该区域的原因在于其原始数据处理成BSQ格式数据文件时,其数据整数部分完全在16位无符号短整型数据大小范围之内;
[0014] 根据全域线性拉伸函数将图像数据线性拉伸到区间[0.0,65535.0];
[0015] 全域线性拉伸基本思想如下:
[0016] 假定原图像像素f(x,y)的灰度区间范围为[a,b],希望增强后图像像素g(x,y)的灰度范围扩展到[c,d],则线性拉伸的基本公式为:
[0017]
[0018] 由此,先计算BSQ格式的单波段图像像素中的最大灰度值max及最小灰度值min,然后确定其映射公式如下:
[0019]
[0020] 该部分处理完后数据类型仍然为32位单精度浮点型;
[0021] b.图像数据小数部分预处理
[0022] 采用强制类型转换直接将32位单精度浮点型数据转换为16位无符号短整型数据:由于强制类型转换时计算机采用的是退1算法,直接将小数部分截断,故采取了将图像数据值加上0.5之后再进行强制类型转换,由此实现了计算机对小数的四舍五入算法,例如:假设图像像素值为1.2,计算机强制类型转换1.2为1,采用该算法:1.2+0.5=1.7,强制转换数据类型后为1;又例如像素值为1.7,而计算机对1.7强制类型转换也为1,采用该算法:1.7+0.5=2.2,强制转换数据类型后为2;
[0023] c.图像数据按阈值裁剪
[0024] 在图像数据小数部分处理完毕之后,将累积概率分布在2%至98%之外的图像数据值进行裁剪,将累积概率在0到2%范围内的数据值赋值为累积概率为2%时所对应的数据值,将累积概率在98%到100%范围内的数据值赋值为累积概率为98%时所对应的数据值;
[0025] d.直方图均衡化
[0026] 对预处理后的图像数据进行直方图均衡化,在均衡的过程中同时将16位的无符号短整型图像数据转化为8位的无符号字符型图像数据,即将生成的图像像素值映射到区间[0,255],以便于生成8位的TIF格式图像影像;
[0027] 直方图均衡化的基本思想是对原始图像中的像素灰度做某种映射变换,使变换后的图像灰度的概率密度是均匀分布的,即变换后图像是一幅灰度级均匀分布的图像,从而图像灰度的动态范围得到了增加,提高了图像的对比度;
[0028] 直方图均衡化具体实现方法:
[0029] 先将直方图归一化,即把灰度范围压缩至[0,1],归一化的直方图相当于一个概率密度函数(PDF,probability density function),均衡化就是令概率密度为1;r、s分别代表均衡化前后的灰度值,r,s∈[0,1];对于图像而言,需要利用其离散形式公式,原图像中某个灰度级像素出现的概率为:Pr(rk)=nk/N;其中Pr(rk)是原图像中第k个灰度级像素出现的概率,rk是第k个灰度级,nk是第k个灰度级rk出现的像素个数,N是图像像素总数(图像大小);由图像的灰度直方图均衡化公式得出均衡化之后的图像的灰度值s:
[0030]
[0031] 公式中,T(rk)来表示原图像的第k个灰度级的转换函数, 表示0~k个灰度级的像素数量之和和与图像像素总数的比值,也就是当前灰度级rk出现的累积概率,则表示第0~k的灰度级出现概率累积相加;因为s是归一化的数值,要转换为0~255的颜色值,需要再乘上255,即 S为灰度范围均衡化到[0,255]范围后的图像的灰度值;
[0032] e.生成TIF格式影像文件
[0033] 对图像数据进行预处理,按阈值裁剪和直方图均衡之后,调用GDAL数据库中的GDALDatasetRasterIO()函数,将处理后的单波段图像波段数据写入TIF格式文件,生成相应的TIF格式影像文件;
[0034] 2)生成JPEG格式快视图文件
[0035] 调用GDAL数据库中的GDALOpen()函数,打开生成的TIF格式图像影像文件,然后调用GDALCreateCopy()函数,将图像另存为JPEG格式图像,生成JPEG格式快视图图像。
[0036] 本发明方法快视图生成可以生成单波段的灰度图像或三个波段的RGB(红绿蓝)图像,由于所需要输入的是按波段顺序存储格式的高光谱图像数据,由此则选择一个或三个波段的高光谱影像数据,相应的输出JPEG格式的灰度或彩色快视图图像。如果数据处理选择的是一个波段的高光谱数据信息,则相应生成其对应的灰度快视图;如果选择处理的是红绿蓝三个波段的高光谱图像数据信息,则生成RGB格式的快视图,与选择一个波段生成的灰度图图像不同之处是选择三个波段的高光谱图像生成快视图时,需要按顺序将三个波段的图像数据信息写入TIF格式文件中。
[0037] 上述GDAL(Geospatial Data Abstraction Library)数据库是一个在X/MIT许可协议下的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式。它还有一系列命令行工具来进行数据转换和处理。本发明中快视图生成所调用的基本函数简要说明如下:
[0038] GDALAllRegister():打开或者创建GDAL所支持的光栅数据之前都要注册驱动,通常调用该函数来注册所有已知的驱动,在此调用该函数注册TIF格式和JPEG格式数据集的驱动,为创建此两种图像文件做准备;
[0039] GDALOpen():打开数据集,此函数用来打开生成的TIF文件;
[0040] GDALCreate():创建指定格式的影像文件(TIF格式);
[0041] GDALCreateCopy():通过已有的TIF格式图像影像文件创建新的JPEG格式的影像文件;
[0042] GDALDatasetRasterIO():图像数据读写函数,将处理好的图像数据写入TIF文件。
[0043] 本发明的有益效果如下:
[0044] 1、本方法提供的快视图生成方法简单,易操作,生成的快视图能较为准确的描述高光谱图像当前波段的数据信息;
[0045] 2、本发明提供的数据处理从32位单精度浮点型转换为8位无符号字符型数据,该量化方法噪声较小。

附图说明

[0046] 图1是本发明方法的处理过程流程框图。其中1)-2)为其步骤。

具体实施方式

[0047] 下面结合附图和实施例对本发明做进一步说明,但不限于此。
[0048] 实施例:
[0049] 本发明实施例如图1所示,一种Linux环境下遥感图像快视图生成的方法,生成快视图过程中所用到的遥感图像数据都是由原始高光谱图像经处理后得到的BSQ格式的图像数据文件(BSQ为按波段顺序存储的高光谱图像格式的缩略语),该图像文件数据格式为32位单精度浮点型类型,生成快视图时需要处理的都是单波段的图像数据信息,该方法步骤如下:
[0050] 1)BSQ格式图像生成TIF格式图像
[0051] 因为不能直接将高光谱图像数据从BSQ格式转换成JPEG格式,所以必须先将BSQ格式的高光谱图像数据转换成TIF格式的图像,然后再从TIF格式转换成JPEG格式(均是8位的位图);生成TIF格式图像步骤处理如下:
[0052] a.线性映射
[0053] 由于处理高光谱图像数据时,其数据范围大小不一,不存在统一的区间,不方便后续处理,所以预先将待处理的BSQ格式的图像数据大小统一映射到区间[0.0,65535.0],之所以选择该区域的原因在于其原始数据处理成BSQ格式数据文件时,其数据整数部分完全在16位无符号短整型数据大小范围之内;
[0054] 根据全域线性拉伸函数将图像数据线性拉伸到区间[0.0,65535.0];
[0055] 全域线性拉伸基本思想如下:
[0056] 假定原图像像素f(x,y)的灰度区间范围为[a,b],希望增强后图像像素g(x,y)的灰度范围扩展到[c,d],则线性拉伸的基本公式为:
[0057]
[0058] 由此,先计算BSQ格式的单波段图像像素中的最大灰度值max及最小灰度值min,然后确定其映射公式如下:
[0059]
[0060] 该部分处理完后数据类型仍然为32位单精度浮点型;
[0061] b.图像数据小数部分预处理
[0062] 采用强制类型转换直接将32位单精度浮点型数据转换为16位无符号短整型数据:由于强制类型转换时计算机采用的是退1算法,直接将小数部分截断,故采取了将图像数据值加上0.5之后再进行强制类型转换,由此实现了计算机对小数的四舍五入算法,例如:假设图像像素值为1.2,计算机强制类型转换1.2为1,采用该算法:1.2+0.5=1.7,强制转换数据类型后为1;又例如像素值为1.7,而计算机对1.7强制类型转换也为1,采用该算法:1.7+0.5=2.2,强制转换数据类型后为2;
[0063] c.图像数据按阈值裁剪
[0064] 在图像数据小数部分处理完毕之后,将累积概率分布在2%至98%之外的图像数据值进行裁剪,将累积概率在0到2%范围内的数据值赋值为累积概率为2%时所对应的数据值,将累积概率在98%到100%范围内的数据值赋值为累积概率为98%时所对应的数据值;
[0065] d.直方图均衡化
[0066] 对预处理后的图像数据进行直方图均衡化,在均衡的过程中同时将16位的无符号短整型图像数据转化为8位的无符号字符型图像数据,即将生成的图像像素值映射到区间[0,255],以便于生成8位的TIF格式图像影像;
[0067] 直方图均衡化的基本思想是对原始图像中的像素灰度做某种映射变换,使变换后的图像灰度的概率密度是均匀分布的,即变换后图像是一幅灰度级均匀分布的图像,从而图像灰度的动态范围得到了增加,提高了图像的对比度;
[0068] 直方图均衡化具体实现方法:
[0069] 先将直方图归一化,即把灰度范围压缩至[0,1],归一化的直方图相当于一个概率密度函数(PDF,probability density function),均衡化就是令概率密度为1;r、s分别代表均衡化前后的灰度值,r,s∈[0,1];对于图像而言,需要利用其离散形式公式,原图像中某个灰度级像素出现的概率为:Pr(rk)=nk/N;其中Pr(rk)是原图像中第k个灰度级像素出现的概率,rk是第k个灰度级,nk是第k个灰度级rk出现的像素个数,N是图像像素总数(图像大小);由图像的灰度直方图均衡化公式得出均衡化之后的图像的灰度值s:
[0070]
[0071] 公式中,T(rk)来表示原图像的第k个灰度级的转换函数, 表示0~k个灰度级的像素数量之和和与图像像素总数的比值,也就是当前灰度级rk出现的累积概率,则表示第0~k的灰度级出现概率累积相加;因为s是归一化的数值,要转换为0~255的颜色值,需要再乘上255,即 S为灰度范围均衡化到[0,255]范围后的图像的灰度值;
[0072] e.生成TIF格式影像文件
[0073] 对图像数据进行预处理,按阈值裁剪和直方图均衡之后,调用GDAL数据库中的GDALDatasetRasterIO()函数,将处理后的单波段图像波段数据写入TIF格式文件,生成相应的TIF格式影像文件;
[0074] 2)生成JPEG格式快视图文件
[0075] 调用GDAL数据库中的GDALOpen()函数,打开生成的TIF格式图像影像文件,然后调用GDALCreateCopy()函数,将图像另存为JPEG格式图像,生成JPEG格式快视图图像。