功能介绍
(严格意义上不能称得上系统,只能说是一个处理流程介绍吧。)
对spot和tm影像进行几何校正,各截取出同一区域(任一区域),重采样后采用HIS融合方法进行融合,HIS变换融合方法首先将空间分辨率低的3波段多光谱影像变换到HIS空间,得到色度H、明度I、饱和度S3分量;然后将高空间分辨率影像进行对比度拉伸,使之与I分量有相同的均值和方差。HIS变换融合主要步骤如下:
- 将多光谱图像作IHS变换,分别得I,H,S 3个分量;
- 将全色图像和I分量图像进行灰度直方图匹配,然后用全色图像代替I分量作为新的I分量;
- 利用新的I分量和原来的H,S分量作RGB变换即得到融合后的图像。
代码实现
1.几何校正
读取图片,通过cpselect函数在两张待处理图片中选取配准点对。最后将点对文件进行保存。然后使用fitgeotrans函数建立两组点对之间的映射关系,得到一个变换矩阵。最后基于该变化矩阵,使用imwarp函数对tm影像进行图像变换。得到了校正后的tm影像。
2.裁剪
为了便于后续的HIS变换,需要在spot影像和校准后的tm影像中裁剪出同一块区域。因为两幅影像的尺寸不同,同一个地物在两个影像中的坐标位置也就不一样,因此要找到两幅影像间点对点的映射关系,才能得到一幅影像地物在另一幅影像中的对应坐标范围,进而才能裁剪出同一范围的地图影像。通过步骤cpselect函数找spot影像和校准后的tm影像之间的几组配准点对,然后通过fitgeotrans函数得到映射关系,使用transformPointsForward函数得到spot影像上一点在校准后的tm影像中对应的坐标关系,然后选择合适的范围,使用imcrop函数对这两幅影像进行裁剪。
3.HIS变换
先把tm影像通过rgb2hsv函数转成hsv格式,然后然后提取I分量的数据。使用histeq函数对spot影像进行直方图均衡化,然后把直方图均衡化后的spot影像的值使用imdouble转换成双精度,使其与hsv格式的tm影像的值类型一样。用上一步得到的spot影像替换把tm影像的I分量,最后通过hsv2rgb函数把hsv格式的tm影像转成rgb格式用imshow函数显示即可。
4.完整代码
完整代码及运行结果如下:
clc,clear
spot = imread('D:/桌面/sp.tif'); %基准
tm = imread('D:/桌面/tm.tif'); %待校准
%cpselect(tm,spot); %选择配准点对
load('D:/桌面/movingPoints.mat'); %读取配准点对文件