图像增强.docx

上传人:b****7 文档编号:26525222 上传时间:2023-06-20 格式:DOCX 页数:20 大小:587.17KB
下载 相关 举报
图像增强.docx_第1页
第1页 / 共20页
图像增强.docx_第2页
第2页 / 共20页
图像增强.docx_第3页
第3页 / 共20页
图像增强.docx_第4页
第4页 / 共20页
图像增强.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

图像增强.docx

《图像增强.docx》由会员分享,可在线阅读,更多相关《图像增强.docx(20页珍藏版)》请在冰豆网上搜索。

图像增强.docx

图像增强

数字图像增强

图像增强就是增强图象中的有用信息,它可以是一个失真的过程,其目的是要改善图像的视觉效果,针对给定图像的应用场合,有目的地强调图像的整体或局部特性,将原来不清晰的图像变得清晰或强调某些感兴趣的特征,扩大图像中不同物体特征之间的差别,抑制不感兴趣的特征,使之改善图像质量、丰富信息量,加强图像判读和识别效果,满足某些特殊分析的需要。

图像增强可分成两大类:

频率域法和空间域法。

前者把图像看成一种二维信号,对其进行基于二维傅里叶变换的信号增强。

采用低通滤波(即只让低频信号通过)法,可去掉图中的噪声;采用高通滤波法,则可增强边缘等高频信号,使模糊的图片变得清晰。

具有代表性的空间域算法有局部求平均值法和中值滤波(取局部邻域中的中间像素值)法等,它们可用于去除或减弱噪声。

下面介绍几种基于频率域和空间域的图像增强方法:

一、空间变换增强

空间变换增强又包含了增强对比度和图像求反。

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

实际中往往是通过原图中某两个灰度值之间的动态范围来实现的。

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

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

具体的变换就是将图像中每个像素的灰度值根据变换曲线进行映射。

1.1增强对比度

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

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

图1-1增强对比度

在图1.1中可以看出,通过变换可以使原图的较高的和较低的灰度值的动态范围减小了,而原图在二者之间的动态范围增加了,从而其范围的对比度增加了。

在matlab中编写程序,导入D盘中的示例图片,进行增强对比度的处理,程序运行结果如下:

1.2图像求反

在matlab中编写图像求反程序,将原图像的灰度值中大过某个阈值的部分

全部变为0,小过该阈值的部分作合理的线性变换,程序运行结果如下:

二、空域滤波增强

一般情况下,像素的领域比该像素要大,也就是说这个像素的领域内除了包括该像素外还包含其他像素。

如果我们以

表示图像在

处的原始灰度值,

表示图像在

某领域内其他点的灰度值,则我们定义图像在该点处的新灰度值

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

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

空域滤波根据功能主要分成平滑滤波和锐化滤波。

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

平滑滤波:

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

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

平滑滤波可以减弱或消除图像中的高频噪声,但是也会使图像的边缘相应变得模糊。

锐化滤波:

它能减弱或消除傅立叶空间的高频分量,增强图像的边缘特征,但是也可能会引入高频噪声。

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

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

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

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

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

2.1平滑滤波

2.1.1线性平滑滤波(均值滤波)

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

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

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

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

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

用matlab编写程序进行均值滤波,结果如下:

2.2.2非线性平滑滤波(中值滤波)

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

它是一种临域运算,类似于卷积,但计算的不是加权求和,而是把邻域中的像素按灰度级进行排序,然后选择改组的中间值作为输出的像素值。

具体步骤:

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

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

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

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

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

用matlab编写中值滤波程序,运行结果如下:

2.2锐化滤波

2.2.1四种不同算子进行图像锐化

(1)sobel算子:

该算子包含两组3*3的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。

如果以A代表原始图像,Gx及Gy分别代表经横向及纵向边缘检测的图像,其公式如下:

(2)拉普拉斯算子:

拉普拉斯算子是最简单的各向同性微分算子,具有旋转不变性,比较适用于改善因为光线的漫反射造成的图像模糊。

在二维情况下,拉普拉斯算子使走向不同的轮廓能够在垂直的方向上具有类似于一维那样的锐化效应,其表达式为:

对于离散函数

,拉氏算子定义为

可以通过证明得到:

上述公式可用如下模板来实现:

此外可以定义其他几种拉普拉斯算子:

如果所使用的定义具有负的中心系数,那么就必须将原始图像减去经拉普拉斯变换后的图像,从而得到锐化的结果,反之,如果拉普拉斯定义的中心系数为正,则原始图像要加上经拉普拉斯变换后的图像。

故使用拉普拉斯算子对图像增强的基本方法可以表示为下式:

(3)Prewitt算子是一种一阶微分算子的边缘检测,利用像素点上下、左右邻点的灰度差,在边缘处达到极值检测边缘,去掉部分伪边缘,对噪声具有平滑作用。

其原理是在图像空间利用两个方向模板与图像进行邻域卷积来完成的,这两个方向模板一个检测水平边缘,一个检测垂直边缘。

编写matlab程序,用四种算子对图像进行锐化,运行结果如下:

2.2.2拉普拉斯算子进行图像锐化增强

用2.2.1中

四种模板对图像进行锐化增强,matlab程序运行结果如下:

三、频域增强

频域增强主要分为频域的低通滤波和高通滤波,其主要步骤是:

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

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

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

3.1低通滤波

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

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

Butterworth低通滤波器是一种物理上可以实现的低通滤波器,

阶,截断频率为

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

编写matlab程序对图像进行低通滤波,运行结果如下:

3.2高通滤波

阶,截断频率为

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

编写matlab程序对图像进行高通滤波,运行结果如下:

四、总结与展望

4.1总结

上面主要介绍了3种基于频率域法和空间域法的数字图像增强方法,并用matlab加以实现。

 

4.2展望

随着计算机处理能力的不断增强,数字图像处理学科在飞速发展的同时,也越来越广泛地向许多其他学科快速交叉渗透,使得图像作为信息获取以及信息的利用等方面也变得越来越重要。

目前数字图像处理的应用越来越广泛,已经渗透到工业、医疗保健、航空航天、军事等各个领域,在国民经济中发挥越来越大的作用。

附录:

Matlab程序:

%1,图像空域变换增强

%空域变换增强对比度

x1=imread('D:

\\示例.jpg');

figure

(1)

imshow(x1);

title('原始彩色图像')

f=rgb2gray(x1);

figure

(2)

subplot(1,2,1)

imshow(f)

title('原始灰度图像')

[m,n]=size(f);

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;

fori=1:

m

forj=1:

n

if(f(i,j)>=f0)&(f(i,j)<=f1)

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

elseif(f(i,j)>=f1)&(f(i,j)<=f2)

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

else

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

end

end

end

subplot(1,2,2)

imshow(g)

title('空域变换后的灰度图像')

%图像求反

x1=imread('D:

\\示例.jpg');

figure

(1)

imshow(x1);

title('原始彩色图像')

f=rgb2gray(x1);

figure

(2)

subplot(1,2,1)

imshow(f);

title('原始灰度图像')

[m,n]=size(f);

f1=200;g1=256;

k=g1/f1;

fori=1:

m

forj=1:

n

iff(i,j)<=f1

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

else

g(i,j)=0;

end

end

end

subplot(1,2,2)

imshow(g)

title('求反变换后的灰度图像')

 

%2,图像空域滤波增强

%线性平滑滤波

x1=imread('D:

\\示例.jpg');

figure

(1)

subplot(1,2,1)

imshow(x1)

title('原始彩色图像')

x2=rgb2gray(x1);

subplot(1,2,2)

imshow(x2)

title('原始灰度图像')

nx1=imnoise(x1,'gaussian',0.02);

nx2=rgb2gray(nx1);

figure

(2)

subplot(1,2,1)

imshow(nx2)

title('加入高斯噪声后的灰度图像')

[m,n]=size(nx2);

I=zeros(m+2,n+2);

J=zeros(m,n);

fori=2:

m+1

forj=2:

n+1

I(i,j)=nx2(i-1,j-1);

end

end

fori=1:

m

forj=1:

n

J(i,j)=(I(i,j)+I(i,j+1)+I(i,j+2)+I(i+1,j)+I(i+1,j+1)+I(i+1,j+2)+...

+I(i+2,j)+I(i+2,j+1)+I(i+2,j+2))/9;

end

end

subplot(1,2,2)

imshow(uint8(J))

title('3*3均值滤波后的灰度图像')

%matlab中有自带的均值滤波函数

%K1=filter2(fspecial('average',3),nx2)/255;

%imshow(K1)

%K2=filter2(fspecial('average',5),nx2)/255;

%imshow(K2)

%h1=[1,1,1;1,1,1;1,1,1]/9;

%K1=conv2(nx2,h1,'same')/255;

%imshow(K1)

%h2=ones(5,5)/25;

%K2=conv2(nx2,h2,'same')/255;

%imshow(K2)

 

%非线性中值滤波

x1=imread('D:

\\示例.jpg');

figure

(1)

subplot(1,2,1)

imshow(x1)

title('原始彩色图像')

x2=rgb2gray(x1);

subplot(1,2,2)

imshow(x2)

title('原始灰度图像')

nx1=imnoise(x1,'salt&pepper',0.02);

nx2=rgb2gray(nx1);

figure

(2)

subplot(1,2,1)

imshow(nx2)

title('加入椒盐噪声后的灰度图像')

[m,n]=size(nx2);

I=zeros(m+2,n+2);

J=zeros(m,n);

fori=2:

m+1

forj=2:

n+1

I(i,j)=nx2(i-1,j-1);

end

end

fori=1:

m

forj=1:

n

k=[I(i,j),I(i,j+1),I(i,j+2),I(i+1,j),I(i+1,j+1),I(i+1,j+2),...

I(i+2,j),I(i+2,j+1),I(i+2,j+2)];

k1=sort(k);

J(i,j)=k1(5);

end

end

subplot(1,2,2)

imshow(uint8(J))

title('3*3中值滤波后的灰度图像')

%matlab中有自带的中值滤波函数

%K1=medfilt2(nx2,[3,3]);

%imshow(K1)

%K2=medfilt2(nx2,[5,5]);

%imshow(K2)

 

%3,图像的锐化处理

%不同算子的锐化

x1=imread('D:

\\示例.jpg');

x2=im2double(x1);

%sobel算子锐化

h1=fspecial('sobel');

S=imfilter(x2,h1);

figure

(1)

subplot(1,2,1),imshow(x1)

title('原始图像')

subplot(1,2,2),imshow(S)

title('sobel算子锐化')

%拉普拉斯算子

h2=fspecial('laplacian',0);

L=imfilter(x2,h2);

figure

(2)

subplot(1,2,1),imshow(x1)

title('原始图像')

subplot(1,2,2),imshow(L)

title('拉普拉斯算子锐化')

%prewitt算子

h2=fspecial('prewitt');

P=imfilter(x2,h2);

figure(3)

subplot(1,2,1),imshow(x1)

title('原始图像')

subplot(1,2,2),imshow(P)

title('prewitt算子锐化')

%直接输入算子矩阵进行锐化

dx=[-1,-2,-1;0,0,0;1,2,1];

dy=[-1,0,1;-2,0,2;-1,0,1];

S1=imfilter(x2,dx);

S2=imfilter(x2,dy);

l=[0,-1,0;-1,4,-1;0,-1,0];

L1=imfilter(x2,l);

figure(4)

subplot(2,2,1),imshow(x1),title('原始图像')

subplot(2,2,2),imshow(S1),title('sobel算子锐化')

subplot(2,2,3),imshow(P),title('prewitt算子锐化')

subplot(2,2,4),imshow(L1),title('拉普拉斯算子锐化')

%拉普拉斯锐化进行图像的增强

x1=imread('D:

\\示例.jpg');

x2=im2double(x1);

h1=[0,1,0;1,-4,1;0,1,0];%模板1

h2=[1,0,1;0,-4,0;1,0,1];%模板2

h3=[1,1,1;1,-8,1;1,1,1];%模板3

h4=[0,1,0;1,-5,1;0,1,0];%模板4

l1=imfilter(x2,h1);

l2=imfilter(x2,h2);

l3=imfilter(x2,h3);

l4=imfilter(x2,h4);

f1=x2-l1;

f2=x2-l2;

f3=x2-l3;

f4=x2-l4;

figure

(1)

subplot(2,3,1),imshow(x1),title('原始图像')

subplot(2,3,2),imshow(f1),title('模板1增强')

subplot(2,3,3),imshow(f2),title('模板2增强')

subplot(2,3,4),imshow(f3),title('模板3增强')

subplot(2,3,5),imshow(f4),title('模板4增强')

%图像的边缘提取

x1=imread('D:

\\示例.jpg');

level=graythresh(x1);

x2=im2bw(x1,level);

l1=edge(x2,'sobel');

l2=edge(x2,'roberts');

l3=edge(x2,'prewitt');

figure

subplot(2,2,1),imshow(x1),title('原始图像')

subplot(2,2,2),imshow(l1),title('sobel算子边缘提取')

subplot(2,2,3),imshow(l2),title('roberts算子边缘提取')

subplot(2,2,4),imshow(l3),title('prewitt算子边缘提取')

%4,频域增强

%高频滤波

x1=imread('D:

\\示例.jpg');

x2=rgb2gray(x1);

figure

subplot(1,2,1),imshow(x2),title('原始灰度图像')

d0=2;n=2;

f=fftshift(fft2(x2));

[M,N]=size(f);

n1=floor(M/2);

n2=floor(N/2);

fori=1:

M

forj=1:

N

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

ifd==0

h=0;

else

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

end

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

end

end

l=ifftshift(g);

k=ifft2(l);

k=uint8(real(k));

subplot(1,2,2),imshow(k),title('高通滤波后的灰度图像')

%低通滤波

x1=imread('D:

\\示例.jpg');

nx1=imnoise(x1,'gaussian',0.02);

nx2=rgb2gray(nx1);

figure

subplot(1,2,1),imshow(nx2),title('加入高斯噪声灰度图像')

d0=35;n=2;

f=fftshift(fft2(nx2));

[M,N]=size(f);

n1=floor(M/2);

n2=floor(N/2);

fori=1:

M

forj=1:

N

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

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

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

end

end

l=ifftshift(g);

k=ifft2(l);

k=uint8(real(k));

subplot(1,2,2),imshow(k),title('低通滤波后的灰度图像')

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

当前位置:首页 > 成人教育 > 远程网络教育

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

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