您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 4-MATLAB彩色图像处理解析
主要内容:1MATLAB中彩色图像的表示方法;2MATLAB中的彩色空间;2020年2月12日9时28分主要内容:1MATLAB中彩色图像的表示方法;2MATLAB中的彩色空间;3MATLAB中图像伪彩色处理方法;4MATLAB中彩色图像的变换和空间滤波。2020年2月12日9时28分MATLAB支持的4种图像类型(P17):二值图像(Binaryimages)灰度图像(Intensityimages)RGB图像(RGBimages)索引图像(Indexedimages)在MATLAB中一幅彩色图像要么被当作RGB图像,要么被当作索引图像进行处理。当用imshow()显示彩色图片时,如果彩色图片不是索引图像或RGB图像(在别的彩色空间,如HSI),则会出现无意义的结果。RGB图像直接显示HSI图像一幅RGB图像在MATLAB中表示为一个M×N×3的3维数组;形成一幅RGB图像的三个图像称为红、绿、蓝分量图像;若一幅RGB图像的数据类型是double,则它的取值范围是[0,1];若数据类型是unit8,则取值范围是[0,255];从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)由三幅分量图像组合得到RGB图像的命令如下:rgb_image=cat(3,fR,fG,fB);分量图像必须按红、绿、蓝的顺序放置;举例: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_red=cat(3,fR,zeros(size(fR)),zeros(size(fR)));subplot(2,2,2),imshow(rgb_red)rgb_green=cat(3,zeros(size(fR)),fG,zeros(size(fR)));subplot(2,2,3),imshow(rgb_green)rgb_blue=cat(3,zeros(size(fR)),zeros(size(fR)),fB);subplot(2,2,4),imshow(rgb_blue)举例: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)彩色显示器产生颜色的原理:一幅索引图像在MATLAB中表示为两个分量:X为整数的数据矩阵,其大小和索引图像的大小相等;map是一个大小为m×3且范围在[0,1]之间的double类矩阵。map的长度m代表map定义的颜色数目。map的每一行定义了一种颜色的R、G、B分量。索引图像中每个像素的颜色由数据矩阵X和颜色表map共同决定。读入一幅索引图像的语句如下:[X,map]=imread(‘trees.tif’);显示一幅索引图像,可使用语句:imshow(X,map)或者:image(X)%用系统当前的颜色表显示索引图像colormap(map)%将系统当前颜色表设置为map举例:[X,map]=imread(‘trees.tif’);image(X)其效果等同于:imshow(X,colormap)举例:[X,map]=imread(‘trees.tif’);image(X)colormap(map);其效果等同于:imshow(X,map)MATLAB提供了一些预定义的彩色表(P148表6.2)imshow(X,hsv)imshow(X,autumn)imshow(X,copper)imshow(X,gray(64))MATLAB提供了一个函数imapprox(),可以用较少的颜色来近似一幅索引图像语法:[Y,newmap]=imapprox(X,map,n,DITHER_OPTION)说明:n是指定的颜色数目,Y是生成的具有n种颜色的近似索引图像的数据矩阵,newmap是n行的颜色表。DITHER_OPTION可以取‘nodither’或‘dither’。举例:[X,map]=imread('trees.tif');imshow(X,map)[Y,newmap]=imapprox(X,map,16,'nodither');imshow(Y,newmap)灰度图像转换为索引图像:方式一:[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)灰度图像转换为索引图像:方式二:[X]=grayslice(gray_image,n)举例:gray_image=imread('cameraman.tif');subplot(2,2,1),subimage(gray_image)X=grayslice(gray_image,16);subplot(2,2,2),subimage(X,gray(16))X=grayslice(gray_image,32);subplot(2,2,3),subimage(X,hot)X=grayslice(gray_image,64);subplot(2,2,4),subimage(X,jet)索引图像转换为灰度图像: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)索引图像转换为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)
本文标题:4-MATLAB彩色图像处理解析
链接地址:https://www.777doc.com/doc-3680324 .html