第六章 彩色图像处理(1)
6.2 MATLAB中彩色图像的表示方法
RGB图像的表示方法—三分量组合成RGB图像
• 举例:
rgb_image=imread('peppers.png'); subplot(2,2,1),imshow(rgb_image) fR=rgb_image(:,:,1); fG=rgb_image(:,:,2); fB=rgb_image(:,:,3); rgb_1=cat(3,fB,fR, fG); subplot(2,2,2),imshow(rgb_1) rgb_2=cat(3,fR,fR,fB); subplot(2,2,3),imshow(rgb_2) rgb_3=cat(3,fR,fR,fR); subplot(2,2,4),imshow(rgb_3)
colormap(map) %将系统当前颜色表设置为map
6.2 MATLAB中彩色图像的表示方法
索引图像的表示方法 举例: [X, map]=imread(‘trees.tif’); image(X)
其效果等同于: imshow(X, colormap)
6.2 MATLAB中彩色图像的表示方法
6.2 MATLAB中彩色图像的表示方法
索引图像的表示方法---─RGB、索引图像、灰度图像的转 换
索引图像转换为灰度图像: gray_image=ind2gray(X, map) RGB图像转换为索引图像: [X, map]=rgb2ind(rgb_image, n, dither_option) 说明:n为map的长度,dither_option可以取‘nodither’或‘dither’; 举例:rgb_image=imread('peppers.png'); subplot(2,2,1),subimage(rgb_image) [X,map]=rgb2ind(rgb_image,64,'nodither'); subplot(2,2,2),subimage(X,map) [X,map]=rgb2ind(rgb_image,16,'nodither'); subplot(2,2,3),subimage(X,map) [X,map]=rgb2ind(rgb_image,16,'dither'); subplot(2,2,4),subimage(X,map)
6.1 彩色图像基础
可见光 γ 射 X 射线 紫外 红外线 线 线 无线电波 微波 超 短 中 长 短 波 波 波
0.01nm 1nm 0.1μ 10μ 0.1cm 10cm 10m 1km 100km 电磁波谱分布 紫 蓝 青 绿 黄 橙 红 0.38 0.43 0.47 0.5 0.56 0.59 0.62 0.76(m)
可见范围电磁波谱的波长组成
6.1 彩色图像基础
• 人眼的吸收特性: 人眼的锥状细胞是负责彩色视觉的传感器,人眼的锥 状细胞可分为三个主要的感觉类别。 大约65%的锥状细胞对红光敏感,33%对绿光敏感, 只有2%对蓝光敏感。 由于人眼的这些吸收特性,被看到的彩色是所谓的 原色红(R,red)、绿(G,green)和蓝(B,blue)的各 种组合。
6.2 MATLAB中彩色图像的表示方法
索引图像的表示方法---─减少索引图像的颜色数目
6.2 MATLAB中彩色图像的表示方法
索引图像的表示方法---─减少索引图像的颜色数目 [Y, newmap] = imapprox(X, map, 16,'dither'); imshow(Y, newmap)
数字图像处理
主讲人:杜宏博
第六章 彩色图像处理
6.1 彩色图像基础 6.2 matlab中彩色图像的表示 6.3 彩色空间转换 6.4 彩色图像变换 6.5 彩色图像的空间滤波 6.6 彩色图像锐化、分割
6.1 彩色图像基础
• 白光
在17世纪,牛顿通过三棱镜研究对白 光的折射就已发现:
白光可被分解成一系列从紫到红的连续光 谱,从而证明白光是由不同颜色(而且这些 颜色并不能再进一步被分解)的光线相混合 而组成的。
6.2 MATLAB中彩色图像的表示方法
索引图像的表示方法---─RGB、索引图像、灰度图像的转 换 灰度图像转换为索引图像: 方式一: [X, map]=gray2ind(gray_image, n) 举例: gray_image=imread('cameraman.tif'); subplot(2,2,1),subimage(gray_image) [X,map]=gray2ind(gray_image,16); subplot(2,2,2),subimage(X,map) [X,map]=gray2ind(gray_image,32); subplot(2,2,3),subimage(X,map) [X,map]=gray2ind(gray_image,64); subplot(2,2,4),subimage(X,map)
在 MATLAB 中一幅彩色图像要么被当作 RGB图像,要么被当 作索引图像进行处理。
6.2 MATLAB中彩色图像的表示方法
RGB图像的表示方法
当用 imshow() 显示彩色图片时,如果彩色图片不是索引图 像或 RGB图像(在别的彩色空间,如 HSI) ,则会出现无意义 的结果。
RGB图 像 直 接 显 示 HSI图 像
6.1 彩色图像基础
• 三原色原理
其基本内容是: 任何颜色都可以用3种不同的基本颜色按照不 同比例混合得到,即 C= aC1 + bC2 + cC3 式中a,b,c >=0 为三种原色的权值或者比例, C1、C2、C3为三原色(又称为三基色)。
6.2 MATLAB中彩色图像的表示方法
MATLAB支持的4种图像类型(P17): 二值图像(Binary images) 灰度图像(Intensity images) RGB图像(RGB images) 索引图像(Indexed images)
6.1 彩色图像基础
• 可见光 可见光是由电磁波谱中相对较窄的波段组成, 如果一个物体比较均衡地反射各种光谱,则人看 到的物体是白的; 而如果一个物体对某些可见光谱反射的较多, 则人看到的物体就呈现相对应的颜色。 例如,绿色物体反射具有500~570nm(纳米) 范围的光,吸收其他波长光的多数能量。
6.2 MATLAB中彩色图像的表示方法
索引图像的表示方法
6.2 MATLAB中彩色图像的表示方法
索引图像的表示方法
读入一幅索引图像的语句如下:
显示一幅索引图像,可使用语句:
[X, map]=imread(‘trees.tif’);
imshow(X, map)
或者: image(X) %用系统当前的颜色表显示索引图像
6.2 MATLAB中彩色图像的表示方法
索引图像的表示方法
一幅索引图像在MATLAB中表示为两个分量:
X 为整数的数据矩阵,其大小和索引图像的大小相等; map 是一个大小为 m×3 且范围在 [0,1] 之间的 double 类矩阵。 map 的长度 m 代表 map 定义的颜色数目。 map 的每一行定义了 一种颜色的R、G、B分量。索引图像中每个像素的颜色由数 据矩阵X和颜色表map共同决定。
6.2 MATLAB中彩色图像的表示方法
RGB图像的表示方法
一幅RGB图像在MATLAB中表示为一个M×N×3的3维数组;
形成一幅RGB图像的三个图像称为红、绿、蓝分量图像;
若一幅 RGB 图像的数据类型是 double ,则它的取值范围是 [0,1];若数据类型是unit8,则取值范围是[0,255];
6.2 MATLAB中彩色图像的表示方法
索引图像的表示方法---─RGB、索引图像、灰度图像的转 换 索引图像转换为RGB图像: rgb_image=ind2rgb(X, map); RGB图像转换为灰度图像: gray_image=rgb2gray(rgb_image); 灰度图像经过“抖动”转化为二值图像 gray_dither=dither(gray_image); 举例: rgb_image=imread('peppers.png'); gray_image=rgb2gray(rgb_image); imshow (gray_image) gray_dither=dither(gray_image); figure,imshow(gray_dither)
Байду номын сангаас
6.2 MATLAB中彩色图像的表示方法
RGB图像的表示方法—提取三分量 从RGB图像rgb_image中提取三幅分量图像的命令如下: fR=rgb_image(:,:,1); fG=rgb_image(:,:,2); fB=rgb_image(:,:,3);
举例:
rgb_image=imread('peppers.png'); subplot(2,2,1),imshow(rgb_image) fR=rgb_image(:,:,1);subplot(2,2,2),imshow(fR) fG=rgb_image(:,:,2);subplot(2,2,3),imshow(fG) fB=rgb_image(:,:,3);subplot(2,2,4),imshow(fB)
索引图像的表示方法
MATLAB提供了一些预定义的彩色表(P148表6.2)
6.2 MATLAB中彩色图像的表示方法
索引图像的表示方法---彩色表
imshow(X, hsv)
6.2 MATLAB中彩色图像的表示方法
索引图像的表示方法---彩色表 imshow(X, autumn)