1、数字图像处理实验报告书八彩色图像处理电子信息学院实验报告书课程名: 数字图像处理 题 目: 实验八 彩色图像处理实验 实验类别: 【设计】 班 级: BX0901 学 号: 111103020103 姓 名: 窦中锋 1、 实验目的(1) 了解彩色空间的基本概念及转换原理;(2) 熟悉MATLAB中彩色图像的表示方法;(3) 使用MATLAB函数实现各类彩色空间和图像类型的转换;(4) 实验MATLAB对彩色图像进行分割和边缘检测的处理。2、 实验原理1. 彩色图像介绍和处理原理彩色图像的数据不仅包含亮度信息,还包含颜色信息。彩色的表示方法是多样化的,最常见的是三基色模型,例如RGB(Red
2、/ Green / Blue,红绿蓝)三基色模型,利用RGB三基色可以混合成任意颜色。因此,RGB模型在各种彩色成像设备和彩色显示设备中使用,常规的彩色图像也都是用RGB三基色来表示的,每个像素包括RGB三基色数据,每个基色用1个字节(8位二进制位)表示,则每个像素的数据为3个字节(即24位二进制位),这就是人们常说的24位真彩色 (1)彩色图像的转换转换色彩是一件极为耗时的工作,为了解决这项困难,彩色图像分析过程一般采用高分辨率色彩查询表机制;查询表是一组数值数组,包含了输进输出之间的对应关系。只要预先计算查询表,就能检查套用转换至每个图像上的情况。查询表的运算值可用于将图像从一个色彩系统转
3、换为另一个色彩系统,此外,也能进行设定以套用使用者定义的转换内容,例如Gamma 补偿与色彩平衡校正。另外,部分操纵会“对照”查询查询表的内容,避免储存已转换图像的需求。例如,在图像还是以RGB 格式进行储存的情况下,可以变更图像ISH 色彩空间的H组件。(2)彩色图像的色彩分割传统的彩色图像处理方法多种多样,包括Bayer制式至色彩空间转换或色彩平衡校正外,彩色图像的色彩分析功能,采用“阈值”对彩色图像进行分割是常用的方法。“阈值”是进行分割的基本机制,可根据对比从图像背景中区分出对象。在彩色图像的部分,还可自由指定特定对象的数值范围,使用者可选择每个组件的数值范围,例如仅根据色相选择“橄榄
4、绿”像素,加上对饱和度及彩度宽松的辨识力,以消除表面的光线效果。另一项区分场景中不同对象的更有效方法,就是考虑一组特定颜色,并指定每个最接近这些颜色的像素。彩色图像分割功能让您可以指定每个像素的“层级”(整数指数值),以分解不同区域里的彩色图像。2. 使用MATLAB对彩色图像的处理过程 (1) 使用 RGB、索引和灰度级图像间转换的函数f=imread(lenargb.tif);imshow(f)title(原图像);X1,map1=rgb2ind(f,8,nodither);figureimshow(X1,map1);%无抖动处理的颜色数减少到 8 的图像title(无抖动处理的颜色数减少
5、到 8 的图像);X2,map2=rgb2ind(f,8,dither);figureimshow(X2,map2)%有抖动处理的颜色数减少到 8 的图像title(有抖动处理的颜色数减少到 8 的图像);g=rgb2gray(f);g1=dither(g);figure,imshow(g);title(使用函数 rgb2gray 得到的原图像的灰度级图像);figure,imshow(g1);title(经抖动处理后的灰度图像(这是一幅二值图像);H=fspecial(disk,10); % 均值滤波PSF blurredfilter=imfilter(I,H); figure,imshow
6、(blurredfilter); title(Filter Blurred image)(2)彩色图像的锐化clear allclcfc=imread(lenargb.tif);imshow(fc)lapmask=1 1 1;1 -8 1;1 1 1;fen=imsubtract(fc,imfilter(fc,lapmask,replicate);figure,imshow(fen)(3)RGB彩色图像的分割function C,m=covmatrix(X)K,n=size(X);X=double(X);if n=1C=0; m=x;elsem=sum(X,1)/K;X=X-m(ones(K,
7、1),:);C=(X*X)/(K-1);m=m;endfunction I=colorseg(varargin)f=varargin2;if(ndims(f)=3)|(size(f,3)=3)error(Input image must be RGB!);endM=size(f,1); N=size(f,2);f,L=imstack2vectors(f);f=double(f);I=zeros(M*N,1);T=varargin3;m=varargin4;m=m(:);%make sure that m is a row vetorif length(varargin)=4method=euc
8、lidean;elseif length(varargin)=5method=mahalanobis;elseerror(wrong number of inputs!);endswitch methodcase euclideanp=length(f);D=sqrt(sum(abs(f-repmat(m,p,1).2,2);case mahalanobisC=varargin5;D=mahalanobis(f,C,m);otherwiseerror(Unknown segmentation method!);endJ=find(Dg)=2*pi-H(bg);H=H/(2*pi);H(S=0)
9、=0;figure,imshow(H);截图: (3) 编写MATLAB程序,将一彩色图像在RGB空间进行彩色分割,并观察其效果。如例9.11所示。程序:rgb=imread(LenaRGB.bmp);figure,imshow(rgb);rgb1=im2double(rgb);r=rgb1(:,:,1);figure,imshow(r);g=rgb1(:,:,2);figure,imshow(g);b=rgb1(:,:,3);figure,imshow(b);r1=r;r1_u=mean(mean(r1(:);m,n=size(r1);sd1=0.0;for i=1:m for j=1:n
10、sd1= sd1+(r1(i,j)-r1_u)*(r1(i,j)-r1_u); endendr1_d=sqrt(sd1/(m*n);r2=zeros(size(rgb1,1),size(rgb1,2);ind=find(rr1_u-1.25*r1_d)&(rr1_u+1.25*r1_d);r2(ind)=1;figure,imshow(r2);截图:(4) 编写MATLAB程序,将一彩色图像在向量空间进行边缘检测,并观察其效果。如例9.12所示。程序:rgb=imread(LenaRGB.bmp);imshow(rgb);sob=fspecial(sobel);Rx=imfilter(doub
11、le(rgb(:,:,1),sob,replicate);Ry=imfilter(double(rgb(:,:,1),sob,replicate);Gx=imfilter(double(rgb(:,:,2),sob,replicate);Gy=imfilter(double(rgb(:,:,2),sob,replicate);Bx=imfilter(double(rgb(:,:,3),sob,replicate);By=imfilter(double(rgb(:,:,3),sob,replicate);r_gradiant=mat2gray(max(Rx,Ry);figure,imshow(r
12、_gradiant);g_gradiant=mat2gray(max(Gx,Gy);figure,imshow(g_gradiant);b_gradiant=mat2gray(max(Bx,By);figure,imshow(b_gradiant);rgb_gradiant=rgb2gray(cat(3,r_gradiant,g_gradiant,b_gradiant);gxx=Rx.2+Gx.2+Bx.2;gyy=Ry.2+Gy.2+By.2;gxy=Rx.*Ry+Gx.*Gy+Bx.*By;theta=0.5*(atan(2*gxy./(gxx-gyy+eps);G1=0.5*(gxx+g
13、yy)+(gxx-gyy).*cos(2*theta)+2*gxy.*sin(2*theta);theta=theta+pi/2;G2=0.5*(gxx+gyy)+(gxx-gyy).*cos(2*theta)+2*gxy.*sin(2*theta);G1=G1.0.5;G2=G2.0.5;rgb_vectorgradiant=mat2gray(max(G1,G2);diff=abs(rgb_vectorgradiant-rgb_gradiant);figure,imshow(diff);截图:6、 实验体会通过本次实验,了解彩色空间的基本概念及转换原理,并且熟悉了MATLAB中彩色图像的表示方法,使用MATLAB函数实现各类彩色空间和图像类型的转换。
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2