《2023年数字图像处理——彩色图像实验报告.docx》由会员分享,可在线阅读,更多相关《2023年数字图像处理——彩色图像实验报告.docx(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2023年数字图像处理彩色图像实验报告 6.3实验步骤 (1)对彩色图像的表达和显示 * * * * * * * * * * * *显示彩色立方体* * * * * * * * * * * * * rgbcube(0,0,10); %从正面观察彩色立方体 rgbcube(10,0,10); %从侧面观察彩色立方 rgbcube(10,10,10); %从对角线观察彩色立方体 %* * * * * * * * * *索引图像的显示和转换* * * * * * * * * f=imread(D:PictureFig0604(a)(iris).tif); figure,imshow(f); %f是R
2、GB真彩图像 %rgb图像转换成8色索引图像,不采用抖动方式 X1,map1=rgb2ind(f,8,nodither); figure,imshow(X1,map1); %采用抖动方式转换到8色索引图像 X2,map2=rgb2ind(f,8,dither); figure,imshow(X2,map2); %显示效果要好一些 g=rgb2gray(f); %f转换为灰度图像 g1=dither(g); %将灰色图像经过抖动处理,转换打二值图像figure,imshow(g); %显示灰度图像 figure,imshow(g1); %显示抖动处理后的二值图像 程序运行结果: * 彩色立方体原
3、图 不采用抖动方式转换到8色索引图像采用抖动方式转换到8色索引图像 灰度图像抖动处理后的二值图像 (2)彩色空间转换 f=imread(D:PictureFig0604(a)(iris).tif); figure,imshow(f); %转换到NTSC彩色空间 %f是RGB真彩图像 ntsc_image=rgb2ntsc(f); figure,imshow(ntsc_image(:,:,1);%显示亮度信息 figure,imshow(ntsc_image(:,:,2);%显示色差信息 figure,imshow(ntsc_image(:,:,3);%显示色差信息 %转换到HIS彩色空间 hs
4、i_image=rgb2hsi(f); figure,imshow(hsi_image(:,:,1);%显示色度信息 figure,imshow(hsi_image(:,:,2); %显示饱和度信息 figure,imshow(hsi_image(:,:,3);%显示亮度信息 程序运行结果: 原图 转换到NTSC彩色空间 显示亮度信息显示色差信息显示色差信息 转换到HIS彩色空间 显示色差信息显示饱和度信显示亮度信息 (3)彩色变换 f=imread(D:PictureFig0614(a)(Chalk Original).tif); G=ice(image,f); %打开ice窗口对图像进行调
5、整 %在窗口中执行以下操作: %a)得到图像的补色 %b)拖动映射曲线,对图像显示效果进行修改 %c)在颜色通道中选中某一颜色,然后对映射曲线进行修改 程序运行结果(1): 全彩色图片ICE窗口 它的补色ICE窗口 拖动映射曲线,图像的显示效果 ICE窗口 f2=imread(D:Picture JLK Magenta.tif); figure,imshow(f2); %在CMYK彩色空间内打开图像 选择Red ICE窗口 g2=ice(image,f2,space,CMYK); %f2的图像色彩偏红,拖动映射曲线, %调整映射参数,使图像的色彩看起来比较正常。 程序运行结果(2) 原图 在C
6、MYK彩色空间内打开图像 调整映射参数后 ICE窗口 (4)彩色空间滤波 %* * * * * * * * * * * * * * * * * * * * 彩色图像平滑 * * * * * * * * * * * * * * * * * * * * * * fc=imread(D:PictureFig0604(a)(iris).tif); figure,imshow(fc); h=rgb2hsi(fc); H=h(:,:,1); S=h(:,:,2); I=h(:,:,3); %转换到HIS彩色空间 %色度分量 %饱和度分量 %亮度分量 %2525的方形平滑算子 w=fspecial(aver
7、age,25); I_filtered=imfilter(I,w,replicate); %对亮度分量进行平滑操作 H1=cat(3,H,S,I_filtered); %将H、S、I三个分量重新组合起来f=hsi2rgb(H1); f=min(f,1); %转换到RGB彩色空间 %f的值控制在0,1之间 figure,imshow(f); %彩色图像平滑处理 %* * * * * * * * * * * * * * * * 彩色图像锐化 * * * * * * * * * * * * * * * * * * * * * * fb=imread(D:PictureFig0604(a)(iris)
8、.tif); lapmask=1 1 1;1 -8 1;1 1 1; %拉普拉斯算子 g=imfilter(fb,lapmask,replicate);%拉普拉斯算子处理 figure,imshow(g); %图像锐化后与原图像相减 fen=imsubtract(fb,g); figure,imshow(fen); %显示差值图像 程序运行结果: 原图彩色图像平滑处理 拉普拉斯算子处理 锐化处理 (5)彩色图像分割 %* * * * * * * * * * * * * * * * * 彩色边缘检测* * * * * * * * * * * * close all;clear;clc; f=im
9、read(iris.tif); %f如图6-4所示 %直接计算彩色边缘VG,并得到对单独彩色平面的二维梯度求和形成的梯度PPG VG,A,PPG=colorgrad(f); figure,imshow(VG, ); %显示彩色梯度图像 figure,imshow(A, ); %显示彩色梯度对应的角度图像 figure,imshow(PPG, ); %显示分量梯度图像 g=VG-PPG; %计算两种梯度方法得到的梯度之差 figure,imshow(g, ); 程序运行结果: %显示差值图像 彩色梯度图像 彩色梯度对应的角度图像 分量梯度图像两种梯度差值图像 %* * * * * * * * *
10、 * * * * * * * * 彩色图像分割 * * * * * * * * * * * * * * * * * * * * * * * * * f=imread(jupitermoon.tif); %f如图6-4所示 mask=roipoly(f); %取得选定区域图像的红色分量 %手工选定图中红色区域 R=immultiply(mask,f(:,:,1); %取得选定区域图像的绿色分量 G=immultiply(mask,f(:,:,2); %取得选定区域图像的蓝色分量 B=immultiply(mask,f(:,:,3); g=cat(3,R,G,B); %取得选定区域的RGB图像 f
11、igure,imshow(g); %显示取得选定区域 M,N,K=size(g); %选定区域的大小 I=reshape(g,M*N,3); %对g中的像素进行重排,按列序拉成一行 idx=find(mask); %找到mask中的像素在重排后的图像g中位置 I=double(I(idx,1:3); %转换到double类型 C,m=covmatrix(I); %计算协方差矩阵C主对角线上的元素,即方差 %sd=sqrt(d)%求得这些元素的平方根,即均方差 均方差 %用欧式距离对图像进行彩色分割,阈值为25 E25=colorseg(euclidean,f,25,m); E251=f; E2
12、51(E25=0)=0 figure,imshow(E251,); %用马氏距离对图像进行彩色分割,阈值为25 M25=colorseg(mahalanobis,f,25,m,C); figure , imshow(M25 , ); 程序运行结果: 原图选定区域 欧氏距离彩色分割马氏距离彩色分割 6.4 思考题 (1)请将图6-1所示的彩色图像转换到灰度图像,并根据灰度值对此灰度图像进行索引化,手工指定索引表中的RGB值,并把此索引图像显示出来。 程序代码如下 %思路:把原图想转换为128位索引图 close all;clear;clc; %将f从灰度图像转换为索引图像,x是索引图像; %ma
13、p是索引矩阵,R,G,B的值都相等 f=imread(D:PictureRGB_iris.tif); figure,imshow(f); %f是RGB图像 f1=rgb2gray(f); %将f转换成灰度图像 figure,imshow(f1); x,map=gray2ind(f1,128); figure,imshow(x); %将map中的值做下面改变则R,G,B的值不相等,产生彩色 %把灰度图像转化成128位的索引图 map(1,:)=0.5; map(: ,1)=0.5; map(2,:)=0.4; map(1,1)=0; figure,imshow(f1,map); 程序运行结果:
14、原RGB图像 灰度图像 索引图 修改索引表后的图像 (2)6.3节的(4)是将图像转换到HIS空间后再对亮度分量进行平滑操作,试直接对原图像的RGB三个分量分别进行平滑操作,并计算两种操作方法的图像差值。 程序代码如下: f=imread(D:PictureRGB_iris.tif); figure,imshow(f); %直接对原图像的RGB三个分量分别进行平滑操作 H=f(:,:,1); S=f(:,:,2); I=f(:,:,3); %色度分量 %饱和度分量 %亮度分量 %2525的方形平滑算子 w=fspecial(average,25); H_filtered=imfilter(H,
15、w,replicate); %对色度分量进行平滑操作 S_filtered=imfilter(S,w,replicate); %对饱和度分量进行平滑操作 I_filtered=imfilter(I,w,replicate); %对亮度分量进行平滑操作 %将H、S、I三个分量重新组合起来 Ha=cat(3,H_filtered,S_filtered,I_filtered); Ha=im2double(Ha); %转化成double类型 figure,imshow(Ha); %转换到HIS彩色空间 h=rgb2hsi(f); %转换到HIS彩色空间 H=h(:,:,1); S=h(:,:,2);
16、I=h(:,:,3); %色度分量 %饱和度分量 %亮度分量 %2525的方形平滑算子 w=fspecial(average,25); I_filtered=imfilter(I,w,replicate); %对亮度分量进行平滑操作 %将H、S、I三个分量重新组合起来 H1=cat(3,H,S,I_filtered); fb=hsi2rgb(H1); %转换到RGB彩色空间 fb=min(fb,1); figure,imshow(fb); %f的值控制在0,1之间 %彩色图像平滑处理 fen=imsubtract(Ha,fb); figure,imshow(fen); 程序运行结果: %计算两
17、中方式处理后图像的差值 原图 直接对RGB三分量进行平滑操作转换到HIS空间对亮度进行平滑操作 差值图像 试验中的问题和心得体会: 本次实验是彩色图像处理。 (1)通过这个实验我了解了RGB图像以及索引图像在MATLAB中的存储和询问方式 (2)了解RGB空间到其他彩色空间的转换方式和转换方法 (3)知道了一些彩色图像的空间滤波方法 (4)了解在RGB向量空间中检测彩色边缘的方法 (5)了解在RGB向量空间中对图像进行分割的方法 遇到的问题:在做思考题(2)的时候,计算两种平滑处理的得到图像的差值的中程序出现了问题,经过看出错信息,认真检查程序后,发现是因为直接平滑处理的图像是unit8类型的,而转换到HIS空间后,得到的图像是double类型,二者的类型不同,导致使用imsubtract函数的时候出现了问题。感觉做matlab的实验和平时编写C代码的时候有很多地方是相同的,都会经历:编码,debug,正确这三个过程,这个过程本身就具有挑战性和趣味性。 数字图像处理彩色图像实验报告 数字图像处理图像变换实验报告 数字图像处理实验报告 数字图像处理实验报告 数字图像处理实验报告 数字图像处理实验报告 数字图像处理实验报告 数字图像处理实验报告 遥感数字图像处理实验报告 中南大学数字图像处理实验报告