伪彩色增强的好处:人对图像灰度的分辨能力比较低,而对色彩的辨别能力却非常强,通过伪彩色增强,可以更有效地提取图形信息,使原图像细节更易辨认,目标更容易识别。
伪彩色增强即将灰度图像的各个不同灰度级按照线性或非线性的映射函数变换成不同的彩色,从而得到彩色图像。主要方法有密度分割法、灰度级一彩色变换和频率域伪彩色增强三种。
下面主要讲的是灰度级-彩色变换法,先根据映射函数得到R、G、B三色分量,再将RGB三色分量合成彩色图像。具体变换规则如下:(其中L为灰度级,I(i,j)为某个像素对应的灰度值,R、G、B为对应的颜色分量)
灰度值范围 | R | G | B |
---|---|---|---|
0-L/4 | 0 | 4I(i,j) | L |
L/4-L/2 | 0 | L | -4I(i,j)+2L |
0-L/4 | 4I(i,j)-2L | L | 0 |
0-L/4 | L | -4I(i,j)+4L | 0 |
im=imread('D:\Fig0419(b).tif');
figure('name','灰度级-彩色变换法');
subplot(1,2,1);
imshow(im);
%将灰度值先转换为double类型便于后续处理
im=double(im);
[M,N]=size(im);
%初始化R,G,B,RGB
R=ones(M,N);
G=ones(M,N);
B=ones(M,N);
RGB=ones(M,N,3);
%灰度值范围
L=256;
for i=1:M
for j=1:N
if im(i,j)<=L/4
R(i,j)=0;
G(i,j)=4*im(i,j);
B(i,j)=L;
else
if im(i,j)<=L/2
R(i,j)=0;
G(i,j)=L;
B(i,j)=-4*im(i,j)+2*L;
else
if im(i,j)<=3*L/4
R(i,j)=4*im(i,j)-2*L;
G(i,j)=L;
B(i,j)=0;
else
R(i,j)=L;
G(i,j)=-4*im(i,j)+4*L;
B(i,j)=0;
end
end
end
end
end
%合成伪彩色图像
for i=1:M
for j=1:N
RGB(i,j,1)=R(i,j);
RGB(i,j,2)=G(i,j);
RGB(i,j,3)=B(i,j);
end
end
%把大于255的数全部转化为255,而小于255的部分则保持原样不变。
RGB=uint8(RGB);
subplot(1,2,2);
imshow(RGB);