人眼只能区分出由黑到白的十多种到二十多种不同的灰度级,而人眼对彩色的分辨可以达到几百种甚至上千种。所谓伪彩色处理,就是将图像中的黑白灰度级变成不同的彩色,如果分层越多,人眼所能提取的信息也多,从而达到图像增强的效果。这是一种视觉效果明显,又不太复杂的图像增强技术。彩色的图片处理方式本质上和黑白图片一样,基本上就是先将RGB颜色空间投影到YUV颜色空间,此时每个通道都相当于黑白图像,然后对各个分量的亮度进行灰度图的直方图均衡化,再合成投影到RGB颜色空间即可。
一、实验技术论述
1.伪彩色处理
伪彩色图像处理(也称假彩色)时根据特定的准则对灰度值赋以彩色的处理。伪彩色或假彩色一词用于区分真彩色图像处理和为单色图像赋以彩色的处理。伪彩色的主要应用是为了人目视观察和解释一幅图像或序列图像中的灰度目标,人眼对灰度的识别很有限,但对色彩的辨别却很强。
伪彩色处理思路是将图像中感兴趣的灰度级区域用特定的颜色显示出来,如下图所示,将灰度图像分成RGB三个分量图,对各个分量的强度进行变换,使之合成的新图像显示特定的颜色。
单色图像的伪彩色编码框图
各灰度级对应的彩色分量强度见下图,根据该图便可以看出各个灰度级所对应的分量的灰度强度,以及灰度级所对应的颜色。经过这种映射处理后,原始黑白图像就变成了伪色彩图像。若原始图像f(x, y)的灰度分布遍被分为k个灰度段,则伪彩色图像就具有k种彩色。
2.彩色图像直方图处理
直方图均衡自动地确定一种变换,这种变换试图产生具有均匀灰度值的直方图。但彩色图像是由多个分量组成的,如果对各分量独立地进行直方图均衡化便有可能产生不正确的彩色,所以一般处理方法是均匀地扩展各分量的彩色强度,保持图像色调不变。
直方图处理中采用一定的变换方式使图像中较少的灰度级压缩,较多的灰度级拉伸。一般的变换表达式可以表示为:
经过这种强度变换后,虽然不能改变图像的色调和饱和度,但图像各分量中的像素点被均匀分布到整个灰度级上,增强了图像的彩色感官。
二、实验结果讨论
1.将图像中某个特地区域用特定颜色来显示,就是要把该区域的灰度值用特定颜色来显示。为此必须先得出该区域的灰度级范围,然后才能做变换。但是图像中可能也有其他区域有同样的灰度级,这就会带来错误的标识,所以要选取最佳的灰度范围来减少这样的区域。图1显示了处理后的结果,图中的河流有部分没有被标识出来,而其他区域有小部分却被标识出来。所以不同区域灰度值相同是此方法处理的缺陷。
2.彩色图像各分量的直方图及均匀化后的图像分别见图2、图3,可见图各分量的亮度都有所提升,对比度增加。图4是对彩色图像各分量分别做直方图均匀化后的结果图,相较于原图,变换后的图像明显变亮,各颜色的对比也更加清晰。
3.图5是采用统一的均衡化直方图对彩色图像各分进行变换后合成的图像,其变换关系见左图,同样可见图片变亮,各颜色区分度更高,较之于结论2中的结果更加接近原图,结论2中是对各个分量分别处理,这就导致RGB各分量的变换不是统一的,合成后便有可能产生与原图不一致的颜色,而本题中各分量采用的是相同的变换,便可以保证与原图的色度最为接近。
三、实验结果
图 1 将图中河流显示为黄色的伪彩色处理结果图
图 2 彩色图像RGB分量直方图及直方图均匀化后的直方图
图 3 RGB分量图像及直方图均衡化后的图片
图 4 原彩色图像及直方图均衡化后的彩色图像
图 5 RGB各分量使用统一的强度变换后得到的图像
附录:
程序一:
各分量采用统一的直方图变换可以先求出平均直方图的各个参量,再调用作业3(图像增强)中的直方图均衡化函数。
附录:
程序一:
function color_image_process
im=imread('Fig1.10(4).jpg');
im=imresize(im,[512 ,512]);
subplot(121);imshow(im);title('原图像');
gray1=0; gray2=30;
im=ColorProcess(im,gray1,gray2);
subplot(122);imshow(im);title('伪彩色处理后的图像');
function im=ColorProcess(im,gray1,gray2)
[M,N]=size(im);
for i=1:M
for j=1:N
if(im(i,j)>=gray1)&(im(i,j)<gray2)
R(i,j)=255;
G(i,j)=255;
B(i,j)=0;
else
R(i,j)=im(i,j);
G(i,j)=im(i,j);
B(i,j)=im(i,j);
end
end
end
for i=1:M
for j=1:N
im_c(i,j,1)=R(i,j);
im_c(i,j,2)=G(i,j);
im_c(i,j,3)=B(i,j);
end
end
im=im_c;
程序二:
clear
clc
RGB=imread('Fig6.35(5).jpg');
R=RGB(:,:,1);
G=RGB(:,:,2);
B=RGB(:,:,3);
r=histeq(R);
g=histeq(G);
b=histeq(B);
subplot(321),imshow(R);title('彩色图像的红色分量');
subplot(322),imshow(r);title('红色分量均衡化后图像');
subplot(323),imshow(G);title('彩色图像的绿色分量');
subplot(324),imshow(g);title('绿色分量均衡化后图像');
subplot(325),imshow(B);title('彩色图像的蓝色分量');
subplot(326),imshow(b);title('蓝色分量均衡化后图像');
figure
subplot(321);imhist(R);title('红色分量直方图');
subplot(322), imhist(r);title('红色分量均衡化后图像直方图');
subplot(323), imhist(G);title('绿色分量直方图');
subplot(324), imhist(g);title('绿色分量均衡化后图像直方图');
subplot(325), imhist(B);title('蓝色分量直方图');
subplot(326), imhist(b);title('蓝色分量均衡化后图像直方图');
figure
subplot(121),imshow(RGB); title('原彩色图像');
newimg = cat(3,r,g,b);
subplot(122),imshow(newimg,[]);title('直方图均衡化后图像');
%各分量采用统一的直方图变换可以先求出平均直方图的各个参量,再调用作业3(图像增强)中的直方图均衡化函数。