文档库

最新最全的文档下载
当前位置:文档库 > 图像处理作业

图像处理作业

灰度图像处理

在本文中,将探讨利用图像处理工具进行灰度图像处理的基本原理,介绍了如何利用MATLAB 及其图像处理工具箱进行数字图像处理,并通过一些例子来说明利

用MATLAB 图像处理工具箱进行图像处理的方法。

关键词:MATLAB; 图像处理;

1.图像的读取和显示

程序:

I=imread('D:\hanxu\Documents\mas\Boy.bmp');%读取图像

>> whos I

Name Size Bytes Class Attributes

I 256x256 65536 uint8

>> imshow(I)

图像处理作业

2.(1)计算并绘制其直方图

在对图像进行处理之前,了解图像整体或局部的灰度分布情况是非常必要。对图像的灰度分布进行分析的重要手段就是建立图像的灰度直方图,利用图像灰度直方图,可以直观的看出图像中的像素亮度分布情况;通过直方图均衡化,归一化等处理,可以对图像的质量进行调整。

确切地说,直方图就是图像中一个随机变量——像素亮度(灰度级别)的分布情况的统计特性。设r表示图像中像素的灰度级,假定对每一个瞬间,它们是连续的随机变量,那么就可以用概率密度函数P(ri)表示原始图像的灰度分布,则

P(ri)=ni/N

式中,N为一幅图像中像素的总数;ni为第i级灰度的像素;ri为第i个灰度级;P(ri)表示该灰度级出现的概率。

下面通过例子观察图像的直方图:

程序:

I=imread('D:\hanxu\Documents\mas\Boy.bmp');%读取图像

>> whos

Name Size Bytes Class Attributes

I 256x256 65536 uint8

>> imshow(I)

>> bar(1:10:256,1:10:256)

图像处理作业

(2)直方图均衡化

图像处理作业

图像处理作业

对上面图像图像进行均衡化:

程序:

>> I=imread('D:\hanxu\Documents\mas\Boy.bmp');%读取图像>> figure

>> subplot(221);imshow(I);

>> subplot(222);imhist(I)

>> I1=histeq(I);

>> figure;

>> subplot(221);imshow(I1)

>> subplot(222);imshow(I1)

图像处理作业

图像处理作业

图像处理作业

3.图像的二维快速傅立叶变换

图像处理作业

这里以快速傅立叶变换为例,说明图像变换的效果及如何编程实现。程序:

I=imread('D:\hanxu\Documents\mas\Boy.bmp');%读取图像

>> figure

>> subplot(221);imshow(I);

>> subplot(222);imhist(I)

>> I1=histeq(I);

>> figure;

>> subplot(221);imshow(I1)

>> subplot(222);imshow(I1)

>> I=imread('D:\hanxu\Documents\mas\Boy.bmp');%读取图像

>> imshow(I)

>> d=zeros(32,32);

>> d(13:20,13:20)=1;

>> figure(2);

>> imshow(d,'notruesize');

Warning: IMSHOW(...,'notruesize') is an obsolete syntax.

Use IMSHOW(...,'InitialMagnification','fit') instead.

> In imshow>preParseInputs at 372

In imshow at 195

>> D=fft2(d);

>> figure(3);

>> imshow(abs(D),[-1 5],'notruesize');

Warning: IMSHOW(...,'notruesize') is an obsolete syntax.

Use IMSHOW(...,'InitialMagnification','fit') instead.

> In imshow>preParseInputs at 372

In imshow at 195

效果图:

图像处理作业

图像处理作业

图像处理作业

4.图像的中值滤波

中值滤波:基于排序统计理论的一种能有效抑制噪声的非线性平滑滤波信号处理技术。中值滤波的特点即是首先确定一个以某个像素为中心点的邻域,一般为方形邻域,也可以为圆形、十字形等等,然后将邻域中各像素的灰度值排序,取其中间值作为中心像素灰度的新值,这里领域被称为窗口,当窗口移动时,利用中值滤波可以对图像进行平滑处理。其算法简单,时间复杂度低,但其对点、线和尖顶多的图像不宜采用中值滤波。很容易自适应化。

图像处理作业

中值滤波是用一个有奇数点的滑动窗口,将窗口中心点的值用窗口各点的中值代替。具体操作步骤如下:

(1)将模板在图中漫游,并将模板中心与图中某个象素位置重合。

(2)读取模板下各对应象素的灰度值。

(3)将这些灰度值从小到大排成1列。

(4)找出这些值里排在中间的1个。

(5)将这个中间值赋给对应模板中心位置的象素。

程序:

I=imread('D:\hanxu\Documents\mas\Boy.bmp');%读取图像

I=imread('D:\hanxu\Documents\mas\Boy.bmp');%读取图像

J=imnoise(I,'salt & pepper',0.02);

subplot(231),imshow(I);title('pic1');

>> subplot(232),imshow(J);title('pic2');

>> k1=medfilt2(J);

>> k2=medfilt2(J,[5 5]);

>> k3=medfilt2(J,[7 7]);

>> k4=medfilt2(J,[9 9]);

>> subplot(233),imshow(k1);title('3*3mo ban zhong zhi lv bo')

>> subplot(234),imshow(k2);title('5*5mo ban zhong zhi lv bo')

>> subplot(235),imshow(k2);title('7*7mo ban zhong zhi lv bo')

>> subplot(236),imshow(k2);title('9*9mo ban zhong zhi lv bo')

效果图:

图像处理作业

5.图像的锐化

在图像的判读或识别中常需要突出边缘和轮廓信息。图像锐化就是增强图像的边缘或轮廓。图像平滑是通过积分过程使得图像边缘模糊,那么图像锐化则是通过微风而使图像边缘突出,清晰。

程序:

I=imread('D:\hanxu\Documents\mas\Boy.bmp');%读取图像

subplot(131),imshow(I)

H=fspecial('Sobel');

H=H';

TH=filter2(H,I);

subplot(132),imshow(TH,[]);

H=H';

TH=filter2(H,I);

>> subplot(133),imshow(TH,[])

效果图:

图像处理作业

6.频域图像增强 :

f(x,y)和h(x,y)卷积定义为:

图像处理作业

有: 设: 则:

图像处理作业

频率域增强主要步骤:

(1)计算需要增强图的傅里叶变换; (2)将其与1个转移函数相乘;

(3)再将结果傅里叶反变换以得到增强的图像。 常用的频域增强方法有:低通滤波、高通滤波、 带通和带阻滤波、同态滤波等

)

,(),(),(*),(v u H v u F y x h y x f ?)

,(*),(),(),(v u H v u F y x h y x f ?)

,(*),(),(y x h y x f y x g =)

,(),(),(v u F v u H v u G =)]

,(),([),(1

v u F v u H F y x g -=

1) 频域低通滤波器增强

理想低通滤波器:

图像处理作业

理想低通滤波器剖面图和透视图

设:

图像处理作业

图像能量百分比 :

程序:

I=imread('D:\hanxu\Documents\mas\Boy.bmp');%读取图像 subplot(331);imshow(I); I=double(I); f=fft2(I); g=fftshift(f);

subplot(332);imshow(log(abs(g)),[]),color(jet(64));

??

?>≤=0

0),(0

),(1

),(D v u D D v u D v u H )

,(),(|),(|),(2

22v u I v u R v u F v u P +==

[M,N]=size(f); n1=floor(M/2); n2=floor(N/2); >> d0=5; >> for i=1:M for j=1:N

d=sqrt((i-n1)^2+(j-n2)^2); if d<=d0 h=1; else h=0; end

g(i,j)=h*g(i,j); end end

>> g=ifftshift(g);

>> g=uint8(real(ifft2(g))); >> subplot(333); >> imshow(g); 效果图:

图像处理作业

2) 频域高通滤波器增强 理想高通滤波器:

??

?>≤=0

0),(1

),(0

),(D v u D D v u D v u H

图像处理作业

理想高通滤波器剖面图和透视图高通滤波实例:

程序如下:

I=imread('D:\hanxu\Documents\mas\Boy.bmp');%读取图像imshow(uint8(I));title('模糊图像');

I=double(I);

f=fft2(I);

g=fftshift(f);

[M,N]=size(f);

n1=floor(M/2);

n2=floor(N/2);

d0=20;

for i=1:M

for j=1:N

d=sqrt((i-n1)^2+(j-n2)^2);

if d>=d0

h1=1;

h2=1+0.5;

else

h1=0;

h2=0.5;

end

g1(i,j)=h1*g(i,j);

g2(i,j)=h2*g(i,j);

end

end

g1=ifftshift(g1);

g1=uint8(real(ifft2(g1)));

subplot(221);imshow(g1);

title('理想高通滤波结果');

g2=ifftshift(g2);

g2=uint8(real(ifft2(g2)));

subplot(222);imshow(g2);

title('理想高通高强滤波结果');

n=2;

d0=20;

for i=1:M

for j=1:N

d=sqrt((i-n1)^2+(j-n2)^2);

if d==0

h1=0;

h2=0.5;

else

h1=1/(1+(d0/d)^(2*n));

h2=1/(1+(d0/d)^(2*n))+0.5;

end

gg1(i,j)=h1*g(i,j);

gg2(i,j)=h2*g(i,j);

end

end

>> gg1=ifftshift(gg1);

>> gg1=uint8(real(ifft2(gg1)));

>> subplot(224);imshow(gg2);

Warning: Displaying real part of complex input.

> In imuitools\private\imageDisplayValidateParams>validateCData at 149 In imuitools\private\imageDisplayValidateParams at 31

In imuitools\private\imageDisplayParseInputs at 79

In imshow at 199

>> title('巴特沃斯高通加强滤波结果');

效果图:

图像处理作业