基于matlab编程的数字图像处理论文Word文档下载推荐.docx

上传人:b****1 文档编号:13280661 上传时间:2022-10-09 格式:DOCX 页数:15 大小:137.16KB
下载 相关 举报
基于matlab编程的数字图像处理论文Word文档下载推荐.docx_第1页
第1页 / 共15页
基于matlab编程的数字图像处理论文Word文档下载推荐.docx_第2页
第2页 / 共15页
基于matlab编程的数字图像处理论文Word文档下载推荐.docx_第3页
第3页 / 共15页
基于matlab编程的数字图像处理论文Word文档下载推荐.docx_第4页
第4页 / 共15页
基于matlab编程的数字图像处理论文Word文档下载推荐.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

基于matlab编程的数字图像处理论文Word文档下载推荐.docx

《基于matlab编程的数字图像处理论文Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于matlab编程的数字图像处理论文Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。

基于matlab编程的数字图像处理论文Word文档下载推荐.docx

目前常用的增强技术根据其处理所进行的空间不同,可分为基于图像域的方法和基于变化域的方法。

第一类,直接在图像所在的空间进行处理,也就是在像素组成的空间里直接对像素进行操作;

第二类,在图像的变化域对图像进行间接处理。

空域增强方法可表示为:

g(x,y)=EH[f(x,y)]

其中f(x,y)和g(x,y)分别为增强前后的图像,EH代表增强操作。

1空域变换增强

2.1增强对比度

增强对比度实际是增强原图像的各部分的反差。

实际中往往是通过原图中某两个灰度值之间的动态范围来实现的(如图2-1)

图2-1增强对比度

在图2(1中可以看出,通过变换可以使原图的较高的和较低的灰度值的动态范围

减小了,而原图在二者之间的动态范围增加了,从而其范围的对比度增加了。

MATLAB代码所示:

X1=imread('

cameraman.tif'

);

figure,imshow(X1)

f0=0;

g0=0;

f1=70;

g1=30;

f2=180;

g2=230;

f3=255;

g3=255;

r1=(g1-g0)/(f1-f0);

b1=g0-r1*f0;

r2=(g2-g1)/(f2-f1);

b2=g1-r2*f1;

r3=(g3-g2)/(f3-f2);

b3=g2-r3*f2;

[m,n]=size(X1);

X2=double(X1);

fori=1:

m

forj=1:

n

f=X2(i,j);

g(i,j)=0;

if(f>

=0)&

(f<

=f1)

g(i,j)=r1*f+b1;

elseif(f>

=f1)&

=f2)

g(i,j)=r2*f+b2;

=f2)&

=f3)

g(i,j)=r3*f+b3;

end

figure,imshow(mat2gray(g))图像处理图示(如图2-2和图2-3)

图2-2原图图2-3增强对比度所得图像

2.2图像求反

对图像求反是将原来的灰度值翻转,简单的说就是使黑变白,使白变黑。

普通的黑白底片和照片就是这样的关系。

具体的变换就是将图像中每个像素的灰度

值根据变换曲线进行映射。

cameraman.tif'

f1=200;

g1=256;

k=g1/f1;

g(i,j)=g1-k*f;

else

figure,imshow(mat2gray(g))

图像处理图如图2-4所示:

图2-4图像求反后2空域滤波增强

一般情况下,像素的邻域比该像素要大,也就是说这个像素的邻域中除了本身以外

还包括其他像素。

在这种情况下,g(x,y)在(x,y)位置处的值不仅取决于f(x,y)在以(x,y)为中心的邻域内所有的像素的值。

如仍以s和t分别表示f(x,y)在(x,y)位置处的灰度值,并以n(s)代表f(x,y)在(x,y)邻域内像素的灰度值,则t=EA[s,n(s)]

为在邻域内实现增强操作,常可利用模板与图像进行卷积。

每个模板实际上是一个二维数组,其中各个元素的取值定了模板的功能,这种模板操作也称为空域滤波。

2.1基本原理

空域滤波可分为线形滤波和非线形滤波两类。

线形滤波器的设计常基于对傅立叶变换的分析。

非线形空域滤波器则一般直接对邻域进行操作。

另外各种滤波器根据功能又主要分成平滑滤波和锐化滤波。

平滑可用低通来实现,锐化可用高通来实现

平滑滤波器:

它能减弱或消除傅立叶空间的高频分量,但不影响在低频分量。

因为高频分量对应图像中的区域边缘等灰度值具有较大较快变化的部分,滤波器将这些分量滤去可使图像平滑。

锐化滤波器:

它能减弱或消除傅立叶空间的高频分量

空域滤波器都是利用模板卷积,主要步骤如下:

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

(2)将模板上的系数与模板下对应的像素相乘;

(3)将所有的乘积相加;

(4)将和(模板的输出响应)赋给图中对应的模板中心位置像素。

下面分别介绍在MATLAB中如何应用平滑和锐化滤波器。

2.2线性平滑滤波器

线性低通滤波器是最常用的线性平滑滤波器。

这种滤波器的所有系数都是正的。

对3*3的模板来说,最简单的操作是取所有系数都为1。

为保证输出图像仍在原来的灰度范围内,在计算R后要将其除以9再进行赋值。

这种方法称为邻域平均法。

MATLAB实现均值过滤器的代码所示:

I=imread('

saturn.tif'

J=imnoise(I,'

salt&

pepper'

0.02);

imshow(I)

figure,imshow(J)

K1=filter2(fspecial('

average'

3),J)/255;

figure,imshow(K1)

title('

3*3的均值滤波器'

原图像,加入椒盐噪声的图像和均值滤波的图像分别如图1-5、图1-6和图1-7所示。

图2-5原图图2-6加入椒盐噪声图像

图2-73*3的均值滤波器处理结果

2.3非线性平滑滤波器

中值滤波器是最常用的非线性平滑滤波器。

它是一种临域运算,类似于卷积,但计

算的不是加权求和,而是把邻域中的像素按灰度级进行排序,然后选择改组的中间值作为输出的像素值。

具体步骤:

(1)将模板在图像中漫游,并将模板中心和图像某个像素的位置重合;

(2)读取模板下对应像素的灰度值;

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

(4)找出这些值排在中间的一个;

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

MATLAB实现中值滤波器代码所示:

K1=medfilt2(J,[3,3]);

figure,imshow(K1)

中值滤波的结果如图2-8所示。

图2-8中值滤波结果

2.4线性锐化滤波器

线性高通滤波器是最常用的线性锐化滤波器。

这种滤波器的中心系数都是正的,而周围的系数都是负的。

对3*3的模板来说,典型的系数取值是:

[-1–1–1;

-18–1;

-1–1-1]

事实上这是拉普拉斯算子,所有的系数之和为0。

当这样的模板放在图像中灰度值是常数或变化很小的区域时,其输出为0或很小。

这个滤波器将原来的图像中的零频域分量去除了,也就是将输出的图像的平均值变为0,这样就会有一部分像素的灰度值小

于0。

在图像处理中我们一般只考虑正的灰度值,所以还有将输出图像的灰度值范围通

过尺度变回到所要求的范围。

m=fspecial('

laplacian'

)I1=filter2(m,I)

h=fspecial('

unsharp'

0.5);

I2=filter2(h,I)/255;

subplot(1,2,1);

imshow(I1);

高通滤波laplacian算子'

subplot(1,2,2);

imshow(I2);

高通滤波unsharp'

处理结果如图4-9所示:

图2-9空域高通滤波3频域增强

3.1基本原理

卷积理论是频域技术的基础。

设函数f(x,y)与线性位不变算子h(x,y)的卷积

结果是g(x,y),即g(x,y)=h(x,y)*f(x,y)

那么根据卷积定理在频域有:

G(x,y)=H(u,v)F(u,v)

H(u,v)、F(u,v)分别是g(x,y)、h(x,y)、f(x,y)的傅立叶变换。

其中G(x,y)、

频域增强的主要步骤是:

(1)技术所需增强图的傅立叶变换;

(2)将其与一个(根据需要设计的)转移函数相乘;

(3)再将结果进行傅立叶反变换以得到增强的图。

频域增强的两个关键步骤:

(1)将图像从空域转换到频域所需的变换及将图像从频域空间转换回空域所需的

变换;

(2)在频域空间对图像进行增强加工操作。

常用的频域增强方法有低通滤波和高通滤波。

以下分别介绍在MATLAB中如何实现。

3.2低通滤波

图像的能量大部分集中在幅度谱的低频和中频度,而图像的边缘和噪声对应于高频

部分。

因此能降低高频成分幅度的滤波器就能减弱噪声的影响。

Butterworth低通滤波器是一种物理上可以实现的低通滤波器,n阶,截断频率为

d0的Butterworth低通滤波器的转移函数为:

1H(u,v)=2n1,[d(u,v)/d0]用MATLAB实现Butterworth低通滤波器的代码所示:

I1=imread('

Saturn.tif'

figure,imshow(I1)

I2=imnoise(I1,'

salt'

figure,imshow(I2)

f=double(I2);

g=fft2(f);

g=fftshift(g);

[N1,N2]=size(g);

n=2;

d0=50;

n1=fix(N1/2);

n2=fix(N2/2);

N1

N2

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

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

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

result=ifftshift(result);

X2=ifft2(result);

X3=uint8(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1