IHS空间变换解决全色锐化
什么是全色锐化?
我们知道,使用不同类型的图像传感器,可以得到不同类型的图像。这里两个种类包含在其中:全色图像,多光谱图像。全色图像,是遥感器获取整个可见光波区(一般定义在0.4μ—0.7μ间)的黑白影像称全色影像。多光谱图像是指包含很多带的图像,有时只有3个带(彩色图像就是一个例子)但有时要多得多,甚至上百个。本文讨论的是3通道情况。每个带是一幅灰度图像,它表示根据用来产生该带的传感器的敏感度得到的场景亮度。
全色锐化就是指用多光谱图像的多光谱信息给全色图像“上色”,形成具有多光谱性质的高分辨率彩色图像。全色锐化不一定使用图像融合技术,但是图像融合技术是目前解决全色锐化问题最好的选择。
IHS变换其原理可解决的问题包括且不限于全色锐化,比如红外+可见光融合等。
什么是IHS空间?
IHS是计算机上定量处理色彩时通常采用表色系统。IHS彩色坐标系统对颜色属性易于识别和量化,色彩的调整(数学变换)方便、灵活,因而往往进行RGB系统一IHS系统的彩色空间变换。所谓IHS彩色变换,是指将标准RGB图像有效地分离为代表变间信息的明度(I)和代表波谱信息的色调(H)、饱和度(S)。
IHS变换的原理
1、一幅高分辨率的灰度图像,一幅低分辨率的彩色图像。
2、将两幅源图像都进行RGB→IHS色彩空间的变换。原因在于:RGB的三个通道都保存的是颜色信息。而IHS同样有三个通道,保存的却是I(强度),H(色调),S(饱和度)。不难发现,色调与饱和度和分辨率无关,而R,G,B三个分量都与分辨率紧密联系。
3、因此,将I分量提取出来;用高分辨率灰度图像的I替换低分辨彩色图像的I,同时保留彩色图像的H与S分量,就可以完成全色锐化。
MATLAB实现
function OUT=IHSfusion(A,B) %这里图像A恒为高分图像,B为彩色图像。
IHS=[1/3,1/3,1/3;-(2^0.5)/6,-(2^0.5)/6,(2^1.5)/6;1/(2^0.5),-1/(2^0.5),0];
RGB=[1,-1/(2^0.5),1/(2^0.5);1,-1/(2^0.5),-1/(2^0.5);1,2^0.5,0];
%定义IHS变换矩阵以及RGB变换矩阵。
y1=A;y2=B;
[m,n,d]=size(y1);
yr1=y1(:,:,1);yg1=y1(:,:,2);yb1=y1(:,:,3);
yr1=reshape(yr1,1,m*n); yg1=reshape(yg1,1,m*n);yb1=reshape(yb1,1,m*n);
%整形,使R,G,B这个三维矩阵变成二维矩阵。
yt1=[yr1;yg1;yb1];
Tt1=IHS*yt1;
TI1=Tt1(1,:); % TV11=Tt1(2,:);TV12=Tt1(3,:);
yr2=y2(:,:,1);yg2=y2(:,:,2);yb2=y2(:,:,3); %同上操作
yr2=reshape(yr2,1,m*n); yg2=reshape(yg2,1,m*n);yb2=reshape(yb2,1,m*n);
yt2=[yr2;yg2;yb2];
Tt2=IHS*yt2;
TV21=Tt2(2,:);TV22=Tt2(3,:); % TI2=Tt2(1,:);
TN=[TI1;TV21;TV22]; %用高分亮度替换全色亮度。
TN=double(TN);
R1=RGB*TN;
R=R1(1,:);G=R1(2,:);B=R1(3,:);
RN=reshape(R,m,n);
GN=reshape(G,m,n);
BN=reshape(B,m,n);
TI=cat(3,RN,GN,BN); %链接回三维矩阵。
OUT=uint8(TI);
end
函数调用
clear;clc;close all;
A1=imread('1.png');
A2=imread('2.png');
x1=double(A1);x2=double(A2);
[tem1r,tem1c,d1]=size(x1);[tem2r,tem2c,d2]=size(x2);
if (tem1r*tem1c) > (tem2r*tem2c)
x2=imresize(x2,[tem1r,tem1c]);
OUT=IHSfusion(x1,x2);
else
x1=imresize(x1,[tem2r,tem2c]);
OUT=IHSfusion(x2,x1);
end
subplot 221;imshow(A1);title('源图像1');
subplot 222;imshow(A2);title('源图像2');
subplot 223;imshow(OUT);title('融合图像');
运行结果
方法解释
1、IHS←→RGB转换公式(线性变换)。
2、融合方法为直接替换法。
IHS本来是想放在后面学习的,但是近几年的基于传统方法的一些改进方法使用了IHS/PCA等方法。为了论文的学习,这里只好把它俩提前一下,之后再去做小波的学习。下一篇是基于IHS变换的融合方法。欢迎大家一起交流学习。