11037 丁园图像退化与复原的系统设计和边缘检测.docx

上传人:b****8 文档编号:30248012 上传时间:2023-08-13 格式:DOCX 页数:23 大小:1.72MB
下载 相关 举报
11037 丁园图像退化与复原的系统设计和边缘检测.docx_第1页
第1页 / 共23页
11037 丁园图像退化与复原的系统设计和边缘检测.docx_第2页
第2页 / 共23页
11037 丁园图像退化与复原的系统设计和边缘检测.docx_第3页
第3页 / 共23页
11037 丁园图像退化与复原的系统设计和边缘检测.docx_第4页
第4页 / 共23页
11037 丁园图像退化与复原的系统设计和边缘检测.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

11037 丁园图像退化与复原的系统设计和边缘检测.docx

《11037 丁园图像退化与复原的系统设计和边缘检测.docx》由会员分享,可在线阅读,更多相关《11037 丁园图像退化与复原的系统设计和边缘检测.docx(23页珍藏版)》请在冰豆网上搜索。

11037 丁园图像退化与复原的系统设计和边缘检测.docx

11037丁园图像退化与复原的系统设计和边缘检测

课程设计报告

 

课程名称:

图形图像处理

学期:

2013-2014学年第2学期

学时学分:

32学分2学时

专业班级:

信科1101班

学  号:

110320017

姓  名:

丁园

指导老师:

陈荣元

提交日期:

2014年6月21日

一、数字图像退化与复原系统设计···································2

1、实验内容···························································2

2、实验原理···························································2

3、具体实验过程及结果············································5

二、边缘检测······························································12

1、实验内容···························································12

2、实验原理···························································12

3、具体实验过程及结果············································13

三、实验总结与体会·····················································18

参考文献····································································19

一、数字图像退化与复原系统设计

1、实验内容

(1)设计图形用户界面,能对图像文件(bmp、jpg、tiff、gif等)进行打开、保存、另存、打印、退出等功能操作;

(2)数字图像的统计信息功能:

包括图像的行数和列数,附加信息,直方图的统计及绘制等;

(3)图像退化与复原

a.能对图像加入各种噪声,生成退化图像;

b.给定图像,能估计噪声参数和噪声类型;

c.并通过几种滤波算法(维纳滤波,最小二乘方滤波)实现去噪并显示结果。

比较去噪效果。

2、实验原理

(1)图像的退化

数字图像在获取过程中,由于光学系统的像差、光学成像衍射、成像系统的非线性畸变、成像过程的相对运动、环境随机噪声等原因,图像会产生一定程度的退化。

(2)图像的复原

图像复原是利用图像退化现象的某种先验知识,建立退化现象的数学模型,再根据模型进行反向的推演运算,以恢复原来的景物图像。

因而图像复原可以理解为图像降质过程的反向过程。

(3)估计噪声参数和噪声类型

噪声的类型可以通过设备来确定,也可以从图像信息中提取,从图像中提取一个平滑的子图像,画出直方图,分辨噪声类型。

通过传感器的合成像设备技术参数来估计噪声参数。

(4)图像降质的数学模型

图像复原处理的关键问题在于建立退化模型。

输入图像f(x,y)经过某个退化系统后输出的是一幅退化的图像。

为了讨论方便,把噪声引起的退化即噪声对图像的影响一般作为加性噪声考虑。

原始图像f(x,y)经过一个退化算子或退化系统H(x,y)的作用,再和噪声n(x,y)进行叠加,形成退化后的图像g(x,y)。

图1表示退化过程的输入和输出关系,其中H(x,y)概括了退化系统的物理过程,就是要寻找的退化数学模型。

g(x,y)

图1图像的退化模型

数字图像的图像恢复问题可以看作是:

根据退化图像g(x,y)和退化算子H(x,y)的形式,沿着反向过程去求解原始图像f(x,y)。

图像退化的过程可以用数学表达式写成如下形式:

g(x,y)=H[f(x,y)]+n(x,y)

(1)

在这里,n(x,y)是一种统计性质的信息。

在实际应用中,往往假设噪声是白噪声,即它的频谱密度为常熟,并且与图像不相关。

在对退化系统进行了线性系统和空间不变系统的近似之后,连续函数的退化模型在空域中可以写成:

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

(2)

在频域中可以写成:

G(u,v)=F(u,v)H(u,v)+N(u,v)(3)

其中,G(u,v)、F(u,v)、N(u,v)分别是退化图像g(x,y)、原图像f(x,y)、噪声信号n(x,y)的傅立叶变换;H(u,v)是系统的点冲击响应函数h(x,y)的傅立叶变换,称为系统在频率域上的传递函数。

可见,图像复原实际上就是已知g(x,y)求f(x,y)的问题或已知G(u,v)求F(u,v)的问题,它们的不同之处在于一个是空域,一个是频域。

(5)维纳滤波

维纳滤波是最小二乘类约束复原的一种。

在最小二乘类约束复原中,要设法寻找一个最有估计

,使得形式为

的函数最小化。

求这类问题的最小化,常采用拉格朗日乘子算法。

也就是说,要寻找一个

,使得准则函数

(10)

为最小。

求解

得到

(11)

式中,

如果用图像f和噪声的相关矩阵Rf和Rn表示Q,就可以得到维纳滤波复原方法。

具体维纳滤波复原方法的原理请参考相关图书。

(6)比较维纳滤波与最小二乘方滤波的去噪效果

当图像只存在噪声复原是,需要用不同的空间滤波,不同的滤波对不同的噪声去除有不同的效果,需要比较各均值滤波和统计滤波来来分析其适用场景,找到各种噪声去除的最好滤波器。

不同的滤波其都是通过噪声与像素的融合来去除噪声,由于融合的方法不同,其去噪结果也不同,在图片上显示的内容也不一样,可以比较去噪后的图片,来确定不同滤波器的好坏。

3、具体实验过程及结果

(3)加入噪声,生成退化图像;

a.加入噪声生成退化图像

I=imread('lena.jpg');%读取Lena.jsp图像

imshow(I);%显示

如图1:

图1

加入高斯模糊噪声生成退化或降质图像并显示,如图2:

图2

b.估计给定图像的噪声类型和参数

实现代码:

clc

clear

I=imread('C:

\tu\camana.jpg');

[m,n]=size(I);

K1=imnoise(I,'gaussian',0.02);

subplot(2,3,1),imshow(K1);

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

subplot(2,3,2),imshow(K2);

K3=imnoise(I,'speckle',0.02);

subplot(2,3,3),imshow(K3);

GP=zeros(1,256);

K1=double(K1);

fori=1:

254

GP1(i)=0;

GP2(i)=0;

GP3(i)=0;

foru=1:

m

forv=1:

n

ifK1(u,v)==i;

GP1(i)=GP1(i)+1;

end

ifK2(u,v)==i;

GP2(i)=GP2(i)+1;

end

ifK3(u,v)==i;

GP3(i)=GP3(i)+1;

end

end

end

GP1(i)=GP1(i)/(m*n);

GP2(i)=GP2(i)/(m*n);

GP3(i)=GP3(i)/(m*n);

end

subplot(2,3,4);

bar(GP1)

title('高斯')

subplot(2,3,5)

bar(GP2);

title('椒盐');

subplot(2,3,6)

bar(GP3);

title('均匀')

figure(3)

fori=1:

254

GP11(i)=0;

GP22(i)=0;

GP33(i)=0;

foru=1:

150

forv=1:

40

ifK1(u,v)==i;

GP11(i)=GP11(i)+1;

end

ifK2(u,v)==i;

GP22(i)=GP22(i)+1;

end

ifK3(u,v)==i;

GP33(i)=GP33(i)+1;

end

end

end

GP11(i)=GP11(i)/(m*n);

GP22(i)=GP22(i)/(m*n);

GP33(i)=GP33(i)/(m*n);

end

subplot(1,3,1);

bar(GP11)

title('高斯参数的估计')

subplot(1,3,2)

bar(GP22);

title('椒盐参数的估计');

subplot(1,3,3)

bar(GP33);

title('均匀参数的估计')

clc

clear

f=imread('C:

\tu\camana.jpg');

[m,n]=size(f);

fori=1:

m

forj=1:

n

F(i,j)=(-1)^(i+j)*f(i,j);

end

end

F=fftshift(fft2(F));

R=real(F);I=imag(F);

G=zeros(m,n);

foru=1:

m

forv=1:

n

G(u,v)=(R(u,v)^2+I(u,v)^2)^(1/2);

end

end

figure

(2);

G=mat2gray(G);

实验结果(图3、图4):

图3

图4

结果分析:

数字图像中,噪声主要来源于图像的获取和传输过程,不同噪声所对应的直方图不同,可以从直方图判断图像砸噪声的种类,噪声参数的估计需要选取图像的一个垂直条带,画出其直方图,可以确定其参数。

c.分别采用维纳滤波和约束最小二乘方滤波实现去噪并比较

实现代码:

I=imread('C:

\tu\rice1.tif');

figure;

subplot(2,2,1);imshow(I);title('原图像');

[m,n]=size(I);

F=fftshift(fft2(I));

k=0.0025;%取不同的值0.00025

foru=1:

m

forv=1:

n

H(u,v)=exp((-k)*(((u-m/2)^2+(v-n/2)^2)^(5/6)));

end

end

G=F.*H;

I0=real(ifft2(fftshift(G)));

I1=imnoise(uint8(I0),'gaussian',0,0.001)

subplot(2,2,2);imshow(uint8(I1));title('模糊退化且添加高斯噪声的图像');

F0=fftshift(fft2(I1));

F1=F0./H;

I2=ifft2(fftshift(F1));

subplot(2,2,3);imshow(uint8(I2));title('全逆滤波复原图');

K=0.1;

foru=1:

m

forv=1:

n

H(u,v)=exp(-k*(((u-m/2)^2+(v-n/2)^2)^(5/6)));

H0(u,v)=(abs(H(u,v)))^2;

H1(u,v)=H0(u,v)/(H(u,v)*(H0(u,v)+K));

end

end

F2=H1.*F0;

I3=ifft2(fftshift(F2));

subplot(2,2,4);imshow(uint8(I3));title('维纳滤波复原图');

p=[0-10;-14-1;0-10];

fori=1:

m

forj=1:

n

if(i<=3&&j<=3)

g(i,j)=p(i,j);

else

g(i,j)=0;

end

end

end

P=fft2(fftshift(g));

r=50;

foru=1:

m

forv=1:

n

H(u,v)=exp(-k*(((u-m/2)^2+(v-n/2)^2)^(5/6)));

H0(u,v)=(abs(H(u,v)))^2;

H2(u,v)=conj(H(u,v))/(H0(u,v)+r*P(u,v)^2);

end

end

F3=H2*F0;

subplot(2,2,4)

I4=ifft2(fftshift(F3));

imshow(uint8(I3));title('约束最小二乘法复原图')

实验结果:

k=0.0025,r=50,详见图5、图6;

图5

图6

结果分析:

在不同的k,r选取下,约束最小二乘方复原效果比较好。

二、边缘检测

1、实验内容

使用Roberts算子、Prewitt算子、Sobel算子对于噪声条件下进行边界检测,自己编程实现所有算法,不得直接运用matlab函数,并与matlab函数所提供的函数进行效果比较。

2、实验原理

边缘检测是利用物体和背景在某种图像特性上的差异来实现的,这些差异包括灰度,颜色或者纹理特征。

边缘检测实际上就是检测图像特征发生变化的位置。

图像边缘检测必须满足两个条件:

一能有效地抑制噪声;二必须尽量精确确定边缘的位置

由于噪声和模糊的存在,检测到的边界可能会变宽或在某些点处发生间断,因此,边界检测包括两个基本内容:

首先抽取出反映灰度变化的边缘点,然后剔除某些边界点或填补边界间断点,并将这些边缘连接成完整的线。

边缘检测的方法大多数是基于方向导数掩模求卷积的方法。

导数算子具有突出灰度变化的作用,对图像运用导数算子,灰度变化较大的点处算得的值比较高,因此可将这些导数值作为相应点的边界强度,通过设置门限的方法,提取边界点集。

一阶导数与是最简单的导数算子,它们分别求出了灰度在x和y方向上的变化率,而方向α上的灰度变化率可以用相应公式进行计算;对于数字图像,应该采用差分运算代替求导。

一幅数字图像的一阶导数是基于各种二维梯度的近似值。

图像f(x,y)在位置(x,y)的梯度定义为下列向量:

(3-4)

在边缘检测中,一般用这个向量的大小,用

表示

(3-5)

函数f在某点的方向导数取得最大值的方向是,方向导数的最大值是称为梯度模。

利用梯度模算子来检测边缘是一种很好的方法,它不仅具有位移不变性,还具有各向同性。

为了运算简便,实际中采用梯度模的近似形式。

或者

传统的边缘检测算法通过梯度算子来实现的,在求边缘的梯度时,需要对每个象素位置计算。

在实际中常用小区域模板卷积来近似快速计算,简单有效,即梯度算子一般采用滤波算子的形式来完成,因此应用很广泛。

模板是N*N的权值方阵,经典的梯度算子模板有:

Sobel模板、Prewitt模板、Roberts模板、Laplacian模板等。

3、具体实验过程及结果

MATLAB函数实现代码:

I=imread('fabric.png');%读取图像

K=rgb2gray(I);

BW1=edge(K,'roberts',0.08);

%进行Roberts算子边缘检测,门限值采用默认值

BW2=edge(K,'prewitt',0.05);

%进行Prewitt算子边缘检测,门限值采用默认值

BW3=edge(K,'sobel',0.04);

%进行Sobel算子边缘检测,门限值采用默认值

figure,imshow(BW1,[]),title('Roberts算子图像');

figure,imshow(BW2,[]),title('Prewitt算子图像');

figure,imshow(BW3,[]),title('Sobel算子图像');

结果示例(图7、图8、图9,见下图比较)

Roberts算子实现代码:

sourcePic=imread('D:

\Lena.jpg');%读取原图象

grayPic=rgb2gray(sourcePic);%转换成灰度图象

newGrayPic=grayPic;

[m,n]=size(grayPic);

robertsNum=0;%roberts算子的计算值

threshold=15;%阈值

fori=1:

m-1%进行边界提取

forj=1:

n-1

robertsNum=abs(grayPic(i,j)-grayPic(i+1,j+1))

+abs(grayPic(i+1,j)-graic(i,j+1));

if(robertsNum>threshold)

newGrayPic(i,j)=255;

else

newGrayPic(i,j)=0;

end

end

end

figure,imshow(newGrayPic);

结果示例(图10):

图7Roberts算子图像

图10Roberts算子图像

Prewitt算子实现代码:

sourcePic=imread('glenna.bmp');%读取原图像

grayPic=mat2gray(sourcePic);%转换成灰度图像

[m,n]=size(grayPic);

newGrayPic=grayPic;%为保留图像的边缘一个像素

PrewittNum=0;%经Prewitt算子计算得到的每个像素的值

PrewittThreshold=0.5;%设定阈值

forj=2:

m-1%进行边界提取

fork=2:

n-1

PrewittNum=abs(grayPic(j-1,k+1)-grayPic(j+1,k+1)+grayPic(j-1,k)-grayPic(j+1,k)+grayPic(j-1,k-1)-grayPic(j

+1,k-1))+abs(grayPic(j-1,k+1)+grayPic(j,k+1)+grayPic(j+1,k+1)-grayPic(j-1,k-1)-grayPic(j,k-1)-grayPic(j+1,k-1));

if(PrewittNum>PrewittThreshold)

newGrayPic(j,k)=255;

else

newGrayPic(j,k)=0;

end

end

end

figure,imshow(newGrayPic);

title('Prewitt算子的处理结果')

结果示例(图11)

图8Prewitt算子图像

图11Prewitt算子图像

Sobel算子实现代码:

sourcePic=imread('glenna.bmp');%读取原图像

grayPic=mat2gray(sourcePic);%转换成灰度图像

[m,n]=size(grayPic);

newGrayPic=grayPic;%为保留图像的边缘一个像素

sobelNum=0;%经sobel算子计算得到的每个像素的值

sobelThreshold=0.8;%设定阈值

forj=2:

m-1%进行边界提取

fork=2:

n-1

sobelNum=abs(grayPic(j-1,k+1)+2*grayPic(j,k+1)+grayPic(j+1,k+1)-grayPic(j-1,k-1)-2*grayPic(j,k-1)-grayPic

(j+1,k-1))+abs(grayPic(j-1,k-1)+2*grayPic(j-1,k)+grayPic(j-1,k+1)-grayPic(j+1,k-1)-2*grayPic(j+1,k)-grayPic(j+1,k

+1));

if(sobelNum>sobelThreshold)

newGrayPic(j,k)=255;

else

newGrayPic(j,k)=0;

end

end

end

figure,imshow(newGrayPic);

title('Sobel算子的处理结果')

结果示例(图12):

图9Sobel算子图像

图12Sobel算子图像

结果分析:

图像局部特征的不连续性(相邻区域的交界)称为边缘。

边缘位置的微分特性是幅度和方向性(沿边缘方向灰度缓变,垂直方向突变)。

边缘位置和导数(微分)间具有一定对应关系,可通过微分进行边缘检测。

无噪声时,可用Roberts算子;Prewitt和Sobel算子同时具有平均,即抑制噪声作用;对阶跃状边缘,Roberts得到的边缘宽度≥1个像素,Prewitt和Sobel算子得到的边缘宽度≥2个像素。

由实验的效果图像可以知道,在利用edge函数进行相应的算子边缘检测的时候,各算子的差别非常微小,不过由相应的参数,三个算子分别为0.08、0.05、0.04可以知道,Sobel算子在边缘检测中最为敏感,及在同一条件下它的处理效果应该最好。

在后面实验部分中,利用“手动”的模版算子进行边缘检测,我们很容易可以看到,Sobel算子的处理效果最好。

三、实验总结与体会

首先,通过这次的实验课题,我掌握了MATLAB的一些最基本的图像的存取与显示方法。

同时,我了解了图像退化与复原的基本原理,理解了数字图像运动模糊、高斯模糊以及其他噪声引起模糊的物理本质,学会了降质图像的逆滤波复原和维纳滤波复原方法。

并能够通过书本及在网上查找资料完成图像退化与复原的系统设计。

在这一过程中,我学习到了很多原本不知道或者不太熟悉的命令。

比如通过设置不同的参数达到所需要的要求和结果。

而且还可以在不同的窗口建立不同的函数而达到相同的效果。

当然,我自己掌握的知识还是非常有限的,但是老师在课堂上给我们提出来的一些方法和技巧是非常有效的,也因此帮助我顺利完成此次课程论文。

最后还有个很深的感受:

MATLAB是个非常强大而且有用的工具,以后有机会一定要进行深入的学习。

参考文献

[1](美)BruceEcker著明文华译.《运动模糊图像复原算法》.北京:

机械工业出版社2007/6

[2]陈天河.《图像的退化与复原》.北京电子工业出版社2005

[3]《边缘检测算法研究》(第5版)/张海藩编著—北京:

清华大学出版社,2008.2

[4]《图像复原的应用》(第4版)(PMBOK指南)/(美)项目管理协会 编著,王勇,张斌译.—北京:

电子工业出版社,2009.8

 

优秀

良好

中等

及格

不及格

1.完全按照课程设计文档规范要求

2.内容充实、设计合理

1.完全按照课程设计文档规范要求

2内容较充实、设计较合理

1.基本按照课程设计文档规范要求

2.内容较充实、设计较合理

1.基本按照课程设计文档规范要求

2.内容欠充实、设计欠合理

1.没有按照课程设计文档规范要求

2.内容不充实、设计不合理

1.算法正确。

2.算法分析很全面。

3.算法描述很清晰。

1.算法正确。

2.算法分析全面。

3.算法描述清晰。

1.算法正确。

2.算法分析较全面。

3.算法描述较清晰。

1.算法基本正确。

2.算法分析欠全面。

3.算法描述欠清晰。

1.算法不正确。

2.算法分析不全面。

3.算法描述不清晰。

1.程序设计思路很清晰。

2.程序代码编写很完整。

3.程序运行正确。

1.程序设计思路清晰。

2.程序代码编写完整。

3.程序运行正确。

1.程序设计思路较清晰。

2.程序代码编写较完整。

3.程序运行正确。

1.程序设计思路欠清晰。

2.程序代码编写欠完整。

3.

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

当前位置:首页 > 自然科学 > 化学

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

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