数字图像处理结课论文

更新时间:2023-07-28 05:53:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

彩色图像的增强

摘要:

全彩色图像处理分为两大类。第一类是分别处理每一分量的图像,然后,从分别处理过的分量图像形成合成彩色图像。第二类是直接对彩色像素进行处理。

因为全彩色图像至少有三个分量,彩色像素实际上是一个向量。例如,在RGB系统中,每一个彩色点可以用RGB坐标系统原点延伸的向量来解释。

令c代表RGB彩色空间中的任意向量,c(x,y)的分量是一幅彩色图像在一点上的RGB分量。彩色分量是坐标(x,y)的函数,表示为:

cR x,y R x,y

c x,y cG x,y G x,y

c x,y B x,y

B

对于大小为MxN(M,N是正整数,分别表示图像的高度和宽度)的图像,有MxN个这样的向量,c(x,y),x=0,1,2...,M-1;y=0,1,2...,N-1;

可以用标准的灰度图像处理方法去分别处理彩色图像的每一个分量。但是,单独的彩色分量的处理结果并不总等同于在彩色向量空间的直接处理,在这种情况下,就必须采用新的方法。为了使每一个彩色分量处理和基于向量的处理等同,必须满足两个条件:第一,处理必须对向量和标量都可用,第二,对向量的每一分量的操作对于其他分量必须是独立的。假设该处理是邻域平均的,邻域灰度空间处理的平均是将邻域内的所有像素灰度级相加然后用邻域内像素总数去除,全彩

色处理的平均是把邻域内所有向量相加并用邻域内向量总数去除每一个分量。但平均向量的每一个分量是对应其分量的图像像素的平均。这与在每个彩色分量基础上做平均,然后形成向量得到的结果是相同的。

关键词:全彩色、平滑、锐化、边缘检测 1.灰度级到彩色转换

这种转换方法是依据三基色原理:每一彩色由红、绿、蓝三基色适当比例合成。变换法的实现过程:对输入图像的灰度值实行三种独立的变换TR(),TG(),TB(),得到对应的红、绿、蓝三基色。然后,根据要求场合不同,利用这三基色量对应的电平值控制图像显示器的红、绿、蓝三色电子枪,得到伪彩色图像的显示输出。 利用变换法对灰白图像进行伪彩色处理表达式: R(x,y)=TR f(x,y) G(x,y)=TG f(x,y) B(x,y)=TB f(x,y)

其中R(x,y),G(x,y),B(x,y)分别表示伪彩色中三基色分量的数值;f(x,y)为处理前图像的灰度值;TR,TG,TB表示三基色与原灰度值f(x,y)的变换关系。

图c:伪彩色图像处理的能力框图

程序如下:

a=imread('i_horse.bmp');%灰度到彩色的转换 a=rgb2gray(a); c=zeros(size(a));

pos=find((a>=60)&(a<105)); c(pos)=a(pos); b(:,:,1)=c; c=zeros(size(a));

pos=find((a>=105)&(a<150)); c(pos)=a(pos); b(:,:,2)=c; c=zeros(size(a)); pos=find(a>=150); pos=find(a>=150); c(pos)=a(pos); b(:,:,3)=c; b=uint8(b);

subplot(1,2,1),imshow(a,[]),title('原始图像');

subplot(1,2,2),imshow(b,[]),title('灰度彩色变换后图像');

实验结果:

实验分析:

灰度图像变换成伪彩色图像,图像内容的层次变得较清晰,改善了图像的视觉效果。 2.彩色图像的两种平滑滤波

彩色图像实现平滑滤波共两种方法:

(1)彩色图像用传统的邻域单独平滑R、G、B三个分量图像,再对平滑后的分量图像合成。

(2)将RGB图像转换到HSI模型,仅对强度分量I进行平滑处理,而保持色度和饱和度分量不变,再将其转换到RGB空间进行显示。 最后可计算两种平滑滤波的差。

1

c x,y c x,y k x,y sxy

式中,

1

Rx,y k x,y Sxy 1

c x,y G x,y k x,y S

xy

1

Bx,y k x,y Sxy

可以看出,如标量图像那样,该向量分量可以用传统的灰度邻域处理单独的平滑RGB图像的每一平面得到。

rgb1=imread('006.jpg'); rgb=im2double(rgb1); fR=rgb(:,:,1); fG=rgb(:,:,2); fB=rgb(:,:,3); figure(); imshow(fR);

figure(); imshow(fG); figure(); imshow(fB); figure(); imshow(rgb);

w=fspecial('average'); fR_filtered=imfilter(fR,w); fG_filtered=imfilter(fG,w); fB_filtered=imfilter(fB,w); figure();

imshow(fR_filtered); figure();

imshow(fG_filtered); figure();

imshow(fB_filtered);

rgb_filtered=cat(3,fR_filtered,fG_filtered,fB_filtered); figure();

imshow(rgb_filtered); I1=(fR+fG+fB)/3;

tmp1=min(min(fR,fG),fB); tmp2=fR+fG+fB; tmp2(tmp2==0)=eps; S=1-3.*tmp1./tmp2;

tmp1=0.5*((fR-fG)+(fR-fB));

tmp2=sqrt((fR-fG).^2+(fR-fB).*(fG-fB)); theta=acos(tmp1./(tmp2+eps)); H1=theta;

H1(fB>fG)=2*pi-H1(fB>fG); H1=H1/(2*pi); H1(S==0)=0; figure(); imshow(H1); figure(); imshow(S); figure(); imshow(I1);

w=fspecial('average'); I=imfilter(I1,w); figure(); imshow(I); H=H1*2*pi;

R=zeros(size(rgb1,1),size(rgb1,2)); G=zeros(size(rgb1,1),size(rgb1,2));

B=zeros(size(rgb1,1),size(rgb1,2)); ind=find((H>=0)&(H<2*pi/3)); B(ind)=I(ind).*(1.0-S(ind));

R(ind)=I(ind).*(1.0+S(ind).*cos(H(ind))./cos(pi/3.0-H(ind))); G(ind)=1.0-(R(ind)+B(ind)); ind=find((H>2*pi/3)&(H<4*pi/3)); H(ind)=H(ind)-pi*2/3; R(ind)=I(ind).*(1.0-S(ind));

G(ind)=I(ind).*(1.0+S(ind).*cos(H(ind))./cos(pi/3.0-H(ind))); B(ind)=1.0-(R(ind)+G(ind)); ind=find((H>=4*pi/3)&(H<2*pi)); H(ind)=H(ind)-pi*4/3; G(ind)=I(ind).*(1.0-S(ind));

B(ind)=I(ind).*(1.0+S(ind).*cos(H(ind))./cos(pi/3.0-H(ind))); R(ind)=1.0-(G(ind)+B(ind)); hsi_rgb=cat(3,R,G,B); figure(); imshow(hsi_rgb);

diff=(abs(hsi_rgb-rgb_filtered)); figure(); imshow(diff);

实验结果如下:

R分量 G分量

B分量 原始彩色图像

R分量平滑 G分量平滑

B分量平滑 三分量平滑合成

H分量 S分量

I分量 I分量平滑

仅I分量平滑RGB 两种结果之差

实验结果分析:

从实验结果可以看出:用两种方法对图像进行平滑所得结果不完全相同。 3.彩色图像的两种锐化滤波 对图像实行锐化滤波的方法有两种

(1)彩色图像用传统的Laplacian分别锐化R、G、B3个分量图像,再对锐化后的分量图像合成。

(2)将RGB图像转换到HSI模型,仅对强度分量I进行锐化处理,而保持色度和饱和度分量不变,再将其转换到RGB空间进行显示。 最后可计算两种锐化滤波的差。

在RGB彩色系统中,向量c的Laplacian变换为

2R x,y

22

c x,y G x,y

2 B x,y

可以通过分别计算每一分量图像的Laplacian去计算全彩色图像的Laplacian。 程序如下:

rgb1=imread('006.jpg');%彩色图像的锐化

rgb=im2double(rgb1); fR=rgb(:,:,1); fG=rgb(:,:,2); fB=rgb(:,:,3); figure(); imshow(fR); figure(); imshow(fG); figure(); imshow(fB);

figure(); imshow(rgb);

lapMatrix=[1 1 1;1 -8 1;1 1 1];

fR_filtered=imfilter(fR,lapMatrix,'replicate'); fG_filtered=imfilter(fG,lapMatrix,'replicate'); fB_filtered=imfilter(fB,lapMatrix,'replicate'); figure();

imshow(fR_filtered); figure();

imshow(fG_filtered); figure();

imshow(fB_filtered);

rgb_tmp=cat(3,fR_filtered,fG_filtered,fB_filtered); rgb_filtered=imsubtract(rgb,rgb_tmp); figure();

imshow(rgb_filtered); I1=(fR+fG+fB)/3;

tmp1=min(min(fR,fG),fB); tmp2=fR+fG+fB; tmp2(tmp2==0)=eps; S=1-3.*tmp1./tmp2;

tmp1=0.5*((fB-fG)+(fR-fB));

tmp2=sqrt((fR-fG).^2+(fR-fB).*(fG-fB)); theta=acos(tmp1./(tmp2+eps)); H1=theta;

H1(fB>fG)=2*pi-H1(fB>fG); H1=H1/(2*pi); H1(S==0)=0; figure(); imshow(H1); figure(); imshow(S); figure(); imshow(I1);

lapMatrix=[1 1 1;1 -8 1;1 1 1]; I=imfilter(I1,lapMatrix,'replicate'); figure();

imshow(I);%I分量锐化

实验结果:

R分量 G分量

B分量 原始彩色图像

R分量锐化 G分量锐化

B分量锐化 三分量锐化合成

H分量 S分量

I分量 I分量锐化

实验结果分析:

两种方法对图像进行锐化所得结果不完全相同。 4.彩色图像的边缘检测 原理:

令r,g,b是RGB彩色空间沿R,G,B轴的单位向量,可定义向量

R G Br g b x x x

R G Bv r g b

y y yu

数量gxx,gyy,gxy定义为这些向量的点乘,如下所示:

R G Bgxx u u uTu

x x x R G B

gyy v v vTv

y y ygxy u v uT v

2

2

2

2

2

2

R R G G B B

x y x y x y

利用该表示法,c(x,y)的最大变化率方向可以由角度给出:

2gxy 1

arctan

2g g yy xx

(x,y)点在θ方向上变化率的幅值由下式给出:

1

F gxx g

yy gxx gyy cos2 2gxysin2

2

1

2

程序如下:

rgb=imread('chaopao.jpg');%边缘检测 sob=fspecial('sobel'); figure();

imshow(rgb);%输出彩色原图

Rx=imfilter(double(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'); 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+gyy)+(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_gradiant=mat2gray(max(G1,G2)); figure();

imshow(rgb_gradiant);%向量梯度边缘

实验结果:

实验分析:

通过对彩色图像向量梯度计算,根据向量梯度的幅值检测边缘,能够很好的提取出汽车的边缘。

5.彩色图像直方图处理:

在灰度图像处理中,直方图均衡自动的确定一种变换,该变换试图产生具有均匀的灰度值的直方图。由于彩色图像是由多个分量组成的,所以,必须考虑适应多于一个分量的直方图的灰度级技术。而独立地进行彩色图像分量的直方图均衡通常是不可取得,这将产生不正确的色彩,一个更符合逻辑的方法是均匀的扩展彩色强度,而保留彩色本身(即色调饱和度)不变。下面程序将会呈现这两种方法的对比:

rgb=imread('006.jpg'); rgb1=im2double(rgb); r=rgb1(:,:,1); g=rgb1(:,:,2); b=rgb1(:,:,3); I1=(r+g+b)/3;

tmp1=min(min(r,g),b); tmp2=r+g+b; tmp2(tmp2==0)=eps; S=1-3.*tmp1./tmp2; tmp1=0.5*((r-g)+(r-b));

tmp2=sqrt(((r-g).^2+(r-b).*(g-b))); theta=acos(tmp1./(tmp2+eps)); H1=theta;

H1(b>g)=2*pi-H1(b>g); H1=H1/(2*pi); H1(S==0)=0; figure(); imshow(H1); figure(); imshow(I1);

I=histeq(I1);%对图像I1进行均衡化 figure();

imshow(I);%均衡化结果 hsi=cat(3,H1,S,I); H=hsi(:,:,1)*2*pi; S=hsi(:,:,2); I=hsi(:,:,3); figure(); imshow(S);

imhist(I1);%I分量直方图 figure();

imhist(I);%I分量直方图均衡化后直方图 R=zeros(size(hsi,1),size(hsi,2)); G=zeros(size(hsi,1),size(hsi,2)); B=zeros(size(hsi,1),size(hsi,2)); ind=find((H>=0)&(H<2*pi/3)); B(ind)=I(ind).*(1.0-S(ind));

R(ind)=I(ind).*(1.0+S(ind).*cos(H(ind))./cos(pi/3.0-H(ind))); G(ind)=1.0-(R(ind)+B(ind)); ind=find((H>2*pi/3)&(H<4*pi/3)); H(ind)=H(ind)-pi*2/3; R(ind)=I(ind).*(1.0-S(ind));

G(ind)=I(ind).*(1.0+S(ind).*cos(H(ind))./cos(pi/3.0-H(ind))); B(ind)=1.0-(R(ind)+G(ind)); ind=find((H>=4*pi/3)&(H<2*pi)); H(ind)=H(ind)-pi*4/3; G(ind)=I(ind).*(1.0-S(ind));

B(ind)=I(ind).*(1.0+S(ind).*cos(H(ind))./cos(pi/3.0-H(ind))); R(ind)=1.0-(G(ind)+B(ind)); RGB=cat(3,R,G,B); figure();

imshow(rgb1);%RGB原图像 figure();

imshow(RGB);%对I分量均衡化后的彩色图像转换成拥有显示的RGB图像

实验结果:

H分量 I分量

I分量直方图均衡化后结果 I分量直方图

S分量 I分量直方图均衡化后直方图

RGB原图 对I分量均衡化后的色彩图像转化成拥有显示的RGB图像

实验结果分析:

其强度分量I的范围值归一化后为[0,1]。正如在处理前强度分量I直方图中看到的,强度分布还是比较宽的。只对强度I均衡化处理而不改变图像的色调H和饱和度值S,将其结果转换到RGB空间,从显示的图像上可以看出,它的确影响啦整体图像的彩色感官。 6.RGB彩色空间分割:

rgb=imread('006.jpg'); rgb1=im2double(rgb); r=rgb1(:,:,1); g=rgb1(:,:,2); b=rgb1(:,:,3); figure(); imshow(rgb1); figure(); imshow(r); figure(); imshow(g); figure(); imshow(b);

r1=r(129:256,86:170); r1_u=mean(mean(r1(:))); [m,n]=size(r1); sd1=0.0; for i=1:m for j=1:n

sd1=sd1+(r1(i,j)-r1_u)*(r1(i,j)-r1_u); end end

r1_d=sqrt(sd1/(m*n));

r2=zeros(size(rgb1,1),size(rgb1,2));

ind=find((r>r1_u-1.25*r1_d)&(r<r1_u)+1.25*r1_d); r2(ind)=1; figure(); imshow(r2);

实验分析:

参考文献:

(1)数字图像处理及MATLAB实现,电子工业出版社,杨杰。

(2)数字图像处理及MATLAB实现—学习与实验指导,电子工业出版

社,杨杰。

(3)刘维一,于德月,王肇圻等.用迭代法消除数字图像放大后 的模糊[J].光电子激光,2002,13(4):398~400. (4)陶洪.数字共焦显微技术及其图像复原算法研究四川大学 硕士学位论文[D].CNKI::CDMD:10610.2.2003.6632. (5)罗军辉,冯平等.MATLAB7.0在图像处理中的应用[M].北 京:机械工业出版社,2006:202~204,257~278.

本文来源:https://www.bwwdw.com/article/vtim.html

Top