1、matlab数字图像处理第4章图像类型与彩色模型的转换附要点复习课程 第四章 图像类型与彩色模型的转换(附)【目录】【正文】一、图像类型的转换二值图像灰度图像数据矩阵索引图像真彩图像AIX,mapRGBBW转换类型转换函数用 处真彩图像索引图像X=dither(RGB,map)节省存储空间,假彩色索引图像真彩图像RGB=ind2rgb(X,map)便于图像处理真彩图像灰度图像I=rgb2gray(RGB)得到亮度分布真彩图像二值图像BW=im2bw(RGB,level)阈值处理,筛选索引图像灰度图像I=ind2gray(X,map)Newmap=rgb2gray(map)得到亮度分布灰度图像索
2、引图像X,map=gray2ind(I,n),X=grayslice(I,n)X=grayslice(I,v)伪彩色处理灰度图像二值图像BW=dither(I)BW=im2bw(I,level)阈值处理,筛选索引图像二值图像BW=im2bw(X,map,level)阈值处理,筛选数据矩阵灰度图像I=mat2gray(A,max,min)I=mat2gray(A)产生图像1、真彩图像索引图像【格式】X=dither(RGB,map)【说明】按指定的颜色表map通过颜色抖动实现转换颜色抖动即改变像素点的颜色,使像素颜色近似于色图的颜色,从而以空间分辨率来换取颜色分辨率。【输入】RGB可以是doub
3、le、uint16或uint8类型【输出】X超过256色则为uint16类型,否则输出为uint8型【例】CLFRGB=imread(flowers.tif);map=jet(256);X=dither(RGB,map);subplot(1,2,1);subimage(RGB);title(真彩图)subplot(1,2,2);subimage(X,map);title(索引图) 2、索引图像真彩图像【格式】RGB=ind2rgb(X,map)具有调色板map的索引图像X转换成真彩色图像RGB,实际实现时就是产生一个三维数据矩阵,然后将索引图像对应的调色板颜色赋予三维数据矩阵。【输入】X可以是
4、double、uint16或uint8类型【输出】RGB为double类型【例】CLF,load trees;RGB=ind2rgb(X,map);subplot(1,2,1);subimage(X,map);title(索引图)subplot(1,2,2);subimage(RGB);title(真彩图) 3、真彩图像灰度图像【格式】I=rgb2gray(RGB)【输入】RGB可以是double、uint16或uint8类型【输出】I类型同RGB【例】CLF,RGB=imread(flowers.tif);I=rgb2gray(RGB);subplot(1,2,1);subimage(RGB
5、);title(真彩图)subplot(1,2,2);subimage(I);title(灰度图) 4、真彩图像二值图像【格式】BW=im2bw(RGB,level)【说明】设置亮度阈值level,将真彩图像转换为二值图像。Level是归一化的阈值,值域范围为0 1;level可以由函数graythresh(I)计算得到。【输入】RGB可以是double、uint16或uint8类型【输出】BW为uint8型【例】CLF,RGB=imread(flowers.tif);BW=im2bw(RGB,0.5);subplot(1,2,1);subimage(RGB);title(真彩图)subplo
6、t(1,2,2);subimage(BW);title(二值图) 5、索引图像灰度图像【格式1】I=ind2gray(X,map)【格式2】Newmap=rgb2gray(map)【说明】格式2将彩色调色板map转换为灰度调色板Newmap【输入】X可以是double、uint16或uint8类型,map为double类型【输出】I是double类型,Newmap为double类型【例】CLF,load trees;I=ind2gray(X,map);Newmap=rgb2gray(map);subplot(2,2,1);subimage(X,map);title(索引图)subplot(2,
7、2,3);subimage(I);title(格式1灰度图)subplot(2,2,4);subimage(X,Newmap);title(格式2灰度图) 6、灰度图像索引图像【格式1】1、X,map=gray2ind(I,n)2、X=grayslice(I,n)3、X=grayslice(I,v)【说明】格式1:将灰度图像转换为灰度级为n的索引图像X,n的默认值为64;格式2:将灰度图像I均匀量化为n个等级,然后转换为伪彩色图像X;格式3:按指定的阈值矢量v(其中每个元素在0和1之间)对图像I进行阈值划分,然后转换成索引图像【输入】I可以是double类型、uint8类型和uint16类型【
8、输出】map的行不大于256,则X为uint8类型,否则为uint16类型【例】CLF,I=imread(rice.tif);X1,map1=gray2ind(I,16);X2=grayslice(I,8);X3=grayslice(I,255*0 0.21 0.23 0.26 0.30 0.35 0.6 1.0);subplot(2,2,1);subimage(I);title(灰度图)subplot(2,2,2);subimage(X1,map1);title(16灰度级图)subplot(2,2,3);subimage(X2,hot(8);title(均匀量化图)subplot(2,2,
9、4);subimage(X3,jet(8);title(非均匀量化图) 7、灰度图像二值图像【格式一】BW=dither(I);【格式二】BW=im2bw(I,level)【说明】格式一用抖动的方式实现转换,格式二用阈值方式转换【输入】I可以是double类型和uint8类型【输出】BW支持逻辑0和1类型(一般为double类型)【例】CLF,I=imread(saturn.tif);BW1=dither(I);BW2=im2bw(I,0.5);subplot(2,2,1);subimage(I);title(灰度图)subplot(2,2,3);subimage(BW1);title(抖动二
10、值化)subplot(2,2,4);subimage(BW2);title(阈值二值化) 8、索引图像二值图像【格式】BW=im2bw(X,map,level)【输入】X可以是double、uint16或uint8类型【输出】BW为uint8类型【例】CLF,load trees;BW=im2bw(X,map,0.5);subplot(1,2,1);subimage(X,map);title(索引图)subplot(1,2,2);subimage(BW);title(二值图) 9、数据矩阵灰度图像【格式】1、I=mat2gray(A,max,min)2、I=mat2gray(A)【说明】按指定
11、的取值区间max,min将数据矩阵A转换为灰度图像I,amin是灰度最暗的值(0值),amax是灰度最亮的值(1值)。如不指定区间,自动取最大区间。【输入】A为double类型【输出】I为double类型【例】CLF;I=imread(rice.tif);A=filter2(fspecial(sobel),I);J=mat2gray(A);subplot(1,2,1);subimage(I);title(原图)subplot(1,2,2);subimage(J);title(转换图) 二、彩色模型的转换1、图像的彩色模型(1) RGB模型是色光的彩色模式,R代表红色,G代表绿色,B代表蓝色。R
12、GB颜色模型是显示和保存彩色图像最常用的模型,三维空间中的3个轴分别与红绿蓝三个分量相对应。原点对应于黑色,离原点最远的顶点对应于白色,其它颜色位于三维空间中。为了处理方便,所有颜色值都被归一化处理,也就是所有的RGB值都被假定在0,1范围上。(2) NTSC模型NTSC模型用于电视信号。其特点是亮度信号与色度信号相分离。一个信号能同时表示彩色图像和黑白图像。他的Y表示亮度,I表示色度,Q表示饱和度。(3) HSV模型根据人眼的视觉特性表示的颜色,H表示色调,S表示饱和度,V表示明度。HSV模型是面向用户的,在通常使用的色彩轮和调色板中选择的色彩(如画笔和墨水等)。因此它比RGB颜色模型具有更
13、好的视觉效果。H、S和V三个分量取值范围都是0 1.0.H:从色彩来说基本经过红、黄、绿、蓝绿、蓝、紫到红,因此红对应了0和1值。S:对应于色调种类从不饱和(灰度梯度)到全饱和(无白色);V:对应于色彩由暗变亮。(4) YCbCr模型YCbCr模型是数字视频中常用的颜色模型。Y表示亮度信号,亮度信息存储在Y中,色度信息存储在Cb、Cr中。Cb表示绿色色度分量;Cr表示红色色度分量。2、彩色转换函数RGBNTSCHSVYCbCr(1) RGB颜色空间转换到NTSC颜色空间【格式】YIQMAP=rgb2ntsc(RGBMAP)【说明】将RGB色表转换为YIQ色表【输入】RGBMAP为double类
14、型【输出】YIQMAP为double类型【格式】YIQ=rgb2ntsc(RGB)【说明】表示将RGB图像转换为NTSC图像【输入】RGB为double、uint8或uint16类型【输出】YIQ为double类型【例】CLF,RGB=imread(flowers.tif);YIQ=rgb2ntsc(RGB);subplot(2,3,1);subimage(RGB);title(RGB图像)subplot(2,3,3);subimage(mat2gray(YIQ);title(NTSC图像)subplot(2,3,4);subimage(mat2gray(YIQ(:,:,1);title(Y分
15、量)subplot(2,3,5);subimage(mat2gray(YIQ(:,:,2);title(I分量)subplot(2,3,6);subimage(mat2gray(YIQ(:,:,3);title(Q分量)(2) NTSC颜色空间转换到RGB颜色【格式】RGBMAP=ntsc2rgb(YIQMAP)【说明】将YIQ色表转换为RGB色表【输入】YIQMAP为double类型【输出】RGBMAP为double类型【格式】RGB=ntsc2rgb(YIQ)【说明】表示将YIQ图像转换为RGB图像【输入】YIQ为double类型【输出】RGB为double类型【例】CLF,load tr
16、ees;YIQMAP=rgb2ntsc(map);map1=ntsc2rgb(YIQMAP);YIQMAP=mat2gray(YIQMAP);Ymap=YIQMAP(:,1),YIQMAP(:,1),YIQMAP(:,1);Imap=YIQMAP(:,2),YIQMAP(:,2),YIQMAP(:,2);Qmap=YIQMAP(:,3),YIQMAP(:,3),YIQMAP(:,3);subplot(2,3,1);subimage(X,map); title(原始图像)subplot(2,3,2);subimage(X,YIQMAP);title(转换图像)subplot(2,3,3);sub
17、image(X,map1); title(还原图像)subplot(2,3,4);subimage(X,Ymap); title(NTSC的Y分量)subplot(2,3,5);subimage(X,Imap); title(NTSC的I分量)subplot(2,3,6);subimage(X,Qmap);title(NTSC的Q分量) (3) rgb2hsv(4) hsv2rgb(5) rgb2ycbcr(6) ycbcr2rgb三、纹理映射使用imshow命令时,MATLAB通常以二维视图形式显示一幅图像。纹理映射使用WARP命令通过插值的方法将一幅图像映射到一个曲面网格上。纹理映射是一种
18、将二维图像映射到三维图形表面的一种技术。Warp函数是通过插值实现图像的纹理映射,显示在三维空间中。格式如下:WARP(X,MAP) 将索引图像显示在缺省表面上WARP(I,N) 将灰度图像显示在缺省表面上WARP(BW) 将二值图像显示在缺省表面上WARP(RGB) 将真彩图像显示在缺省表面上WARP(z,.) 将图像显示z表面上WARP(x,y,z,.) 将图像显示(x,y,z)表面上H = WARP(.) 返回图像的句柄输入图像的数据格式可以是logical、uint8、uint16或double类型。【例】x,y,z=cylinder;I=imread(FLOWERS.TIF);warp(x,y,z,I); 【例】X,Y,Z=ELLIPSOID(0,0,0,1,2,3,50);SURF(X,Y,Z);RGB=IMREAD(FLOWERS.TIF);WARP(X,Y,Z,RGB); P=PEAKS(50);RGB=IMREAD(greens.jpg);WARP(P,RGB);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1