IHS全色与多光谱图像融合完整代码 matlab
时间: 2023-08-23 11:36:19 浏览: 111
以下是一份基于Matlab实现的IHS全色与多光谱图像融合完整代码,仅供参考:
```matlab
% IHS图像融合
% 作者:XXX
% 时间:XXXX-XX-XX
% 读入待融合的全色和多光谱图像
I_P = imread('panchromatic_image.jpg');
I_MS = imread('multispectral_image.jpg');
% 将全色图像和多光谱图像转换到IHS空间
I_P_IHS = rgb2hsv(I_P);
I_MS_IHS = rgb2hsv(I_MS);
% 分离IHS空间通道
I_P_I = I_P_IHS(:, :, 3);
I_P_H = I_P_IHS(:, :, 1);
I_P_S = I_P_IHS(:, :, 2);
I_MS_I = I_MS_IHS(:, :, 3);
I_MS_H = I_MS_IHS(:, :, 1);
I_MS_S = I_MS_IHS(:, :, 2);
% 对I和S通道进行直方图匹配,使其在直方图上更加接近
I_P_I_matched = histeq(I_P_I, histeq(I_MS_I));
I_P_S_matched = histeq(I_P_S, histeq(I_MS_S));
I_MS_I_matched = histeq(I_MS_I, histeq(I_P_I));
I_MS_S_matched = histeq(I_MS_S, histeq(I_P_S));
% 将匹配后的I和S通道和原始的H通道合并到一起
I_P_IHS_matched = cat(3, I_P_H, I_P_S_matched, I_P_I_matched);
I_MS_IHS_matched = cat(3, I_MS_H, I_MS_S_matched, I_MS_I_matched);
% 将匹配后的IHS空间图像转换回RGB空间
I_P_matched = hsv2rgb(I_P_IHS_matched);
I_MS_matched = hsv2rgb(I_MS_IHS_matched);
% 显示结果
subplot(1, 3, 1), imshow(I_P), title('Panchromatic Image');
subplot(1, 3, 2), imshow(I_MS), title('Multispectral Image');
subplot(1, 3, 3), imshow(I_MS_matched), title('Fused Image');
```
同样需要注意的是,在直方图匹配时,我们只对I和S通道进行匹配,而保持H通道不变。最后,注意将匹配后的IHS空间图像转换回RGB空间以得到最终的融合图像。
阅读全文