数字图像处理——彩色图像实验报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“数字图像处理实验报告”。
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是RGB真彩图像
%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);
%显示抖动处理后的二值图像
程序运行结果:
*
彩色立方体原图
不采用抖动方式转换到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彩色空间
hsi_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窗口对图像进行调整
%在窗口中执行以下操作:
%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)
原图
在CMYK彩色空间内打开图像
调整映射参数后
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彩色空间
%色度分量
%饱和度分量
%亮度分量
%25×25的方形平滑算子 w=fspecial('average',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).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=imread('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,[ ]);
程序运行结果:
%显示差值图像
彩色梯度图像 彩色梯度对应的角度图像
分量梯度图像两种梯度差值图像
%* * * * * * * * * * * * * * * * * 彩色图像分割 * * * * * * * * * * * * * * * * * * * * * * * * *
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图像 figure,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;E251(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是索引图像; %map是索引矩阵,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);
程序运行结果:
原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);
%色度分量
%饱和度分量
%亮度分量
%25×25的方形平滑算子 w=fspecial('average',25);
H_filtered=imfilter(H,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);
I=h(:,:,3);
%色度分量
%饱和度分量 %亮度分量 %25×25的方形平滑算子 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);程序运行结果:
%计算两中方式处理后图像的差值
原图
直接对RGB三分量进行平滑操作转换到HIS空间对亮度进行平滑操作
差值图像
试验中的问题和心得体会:
本次实验是彩色图像处理。
(1)通过这个实验我了解了RGB图像以及索引图像在MATLAB中的存储和询问方式
(2)了解RGB空间到其他彩色空间的转换方式和转换方法(3)知道了一些彩色图像的空间滤波方法(4)了解在RGB向量空间中检测彩色边缘的方法(5)了解在RGB向量空间中对图像进行分割的方法
遇到的问题:在做思考题(2)的时候,计算两种平滑处理的得到图像的差值的中程序出现了问题,经过看出错信息,认真检查程序后,发现是因为直接平滑处理的图像是unit8类型的,而转换到HIS空间后,得到的图像是double类型,二者的类型不同,导致使用imsubtract函数的时候出现了问题。感觉做matlab的实验和平时编写C代码的时候有很多地方是相同的,都会经历:编码,debug,正确这三个过程,这个过程本身就具有挑战性和趣味性。
数字图象处理实验指导书实验一 图象变换实验实 验实验名称:图像处理姓名:刘强班级:电信学号:报 告11021404110128 数字图象处理实验指导书实验一 图象变换实验实验一 图像变换实......
数字图像处理实验报告数字图像处理实验报告1一. 实验内容:主要是图像的几何变换的编程实现,具体包括图像的读取、改写,图像平移,图像的镜像,图像的转置,比例缩放,旋转变换等......
刀豆文库小编为你整合推荐8篇数字图像处理实验报告,也许这些就是您需要的文章,但愿刀豆文库能带给您一些学习、工作上的帮助。......
刀豆文库小编为你整合推荐8篇数字图像处理实验报告,也许这些就是您需要的文章,但愿刀豆文库能带给您一些学习、工作上的帮助。......
实 验 报 告 书系部学生专业班实验 名称姓名名称 级时间:: : : :实验一 直方图均衡一、实验目的在学习图像直方图的概念、计算方法、性质和相关应用基础上,生成、绘制图像的直方......