基本原理:
1简述三色成像原理?
利用红、蓝、绿不同比例混合可以生成人眼看到的所有颜色,以红、蓝、绿为基本单位,不同的比例混合来显示出人眼可以看到的所有颜色。
真彩色(True Color):真彩色是指在组成一幅彩色图像的每个像素值中,有R、G、B三个基色分量,每个基色分量直接决定显示设备的基色强度产生彩色。(RGB混合)
伪彩色(Pseudo Color):每个像素的颜色不是由每个基色分量的数值直接决定,而是把像素值当作颜色查找表(color look-up table,CLUT)的表项入口地址,去查找一个显示图像时使用的R,G,B强度值,用查找出的R,G,B强度值合成产生彩色。(一个色值表只有少数颜色)
假彩色(False Color):将多波段单色影像合成为假彩色影像,如landsat 7/ETM+有八个波段,用其中三个合成就是假彩色。(多种伪彩色不同比例的混合)
http://blog.sina.com.cn/s/blog_764b1e9d0100t9c8.html
RGB色彩空间:
HIS模型反应了人的视觉系统观察彩色的方式,使用非常接近于人对彩色感知的方式来定义彩色。对于图像处理来说,这种模型的优势在于将颜色信息和灰度信息分开了。色调(Hue)分量是描述一种纯色的颜色属性(如红色,绿色,黄色),饱和度(Saturation)分量是一种纯色被白光稀释的程度的度量,也可以理解为颜色的浓淡程度(如深红色,淡绿色),亮度(Instensity)分量描述颜色的亮暗程度。这个模型的建立基于以下两个重要事实:
I分量与图像的色彩信息无关;
H和S分量与人感受颜色的方式紧密相连。
HIS颜色空间,如下图所示:
https://wenku.baidu.com/view/3ccc1ec58bd63186bcebbc0c.html
将彩色图像转化成为灰度图像的过程成为图像的灰度化处理。彩色图像中的每个像素的颜色有R、G、B三个分量决定,而每个分量有255中值可取,这样一个像素点可以有1600多万(255*255*255)的颜色的变化范围。而灰度图像是R、G、B三个分量相同的一种特殊的彩色图像,其一个像素点的变化范围为255种,所以在数字图像处理种一般先将各种格式的图像转变成灰度图像以使后续的图像的计算量变得少一些。灰度图像的描述与彩色图像一样仍然反映了整幅图像的整体和局部的色度和亮度等级的分布和特征。图像的灰度化处理可用两种方法来实现。
第一种方法使求出每个像素点的R、G、B三个分量的平均值,然后将这个平均值赋予给这个像素的三个分量。
第二种方法是根据YUV的颜色空间中,Y的分量的物理意义是点的亮度,由该值反映亮度等级,根据RGB和YUV颜色空间的变化关系可建立亮度Y与R、G、B三个颜色分量的对应:Y=0.3R+0.59G+0.11B,以这个亮度值表达图像的灰度值。
灰度是有黑到白色中白色的稀释程度(也就是黑色的浓淡程度)。
人眼对彩色的分辨率远高于灰度差的分辨率,伪彩色利于人去观察。
在我们的生活中, 灰度图像对于视觉的观测上对区域的区分不是十分明显,例如某个图片中模糊的细节, 或某个环境中温度较高的区域, 因此, 将它们从灰度图像中突显出来就显得十分必要了。伪彩色增强技术可以使图像中的观察对象的某些细节突出显示, 提高对图像细节的辨别力。伪彩色技术对于图像中的观察对象的轮廓进行勾勒, 使之更加清晰和容易识别。也可应用在医学领域的透视图像中。
实验内容:
1灰度图像lena.bmp伪彩色处理.
2彩色图片lena.jpeg灰度化。
分别使用MATLAB和OPENCV。
实验报告内容:
1分别使用MATLAB和OPENCV给出代码和主要函数说明注释.
2回答上述问题。
对应函数
im=imread('C:\Users\Administrator\Desktop\lena.jpg');
gray=rgb2gray(im);
I=double(gray);
[m,n]=size(I);
L=256;
for i=1:m%将灰度图像中的RGB按照特定的分段函数转换
for j=1:n
if I(i,j)<=L/4
R(i,j)=0;
G(i,j)=4*I(i,j);
B(i,j)=L;
else if I(i,j)<=L/2
R(i,j)=0;
G(i,j)=L;
B(i,j)=-4*I(i,j)+2*L;
else if I(i,j)<=3*L/4
R(i,j)=4*I(i,j)-2*L;
G(i,j)=L;
B(i,j)=0;
else
R(i,j)=L;
G(i,j)=-4*I(i,j)+4*L;
B(i,j)=0;
end
end
end
end
end
for i=1:m
for j=1:n
rgbim(i,j,1)=R(i,j);
rgbim(i,j,2)=G(i,j);
rgbim(i,j,3)=B(i,j);
end
end
rgbim=rgbim/256;
figure;
subplot(1,2,1);%分区显示
imshow(gray);%显示灰度图像
subplot(1,2,2);
imshow(rgbim);%显示伪彩色图像