图像的平滑与锐化

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

昆明理工大学(数字图像处理)实验报告
实验名称:图像的平滑与锐化
专业:电子信息科学与技术姓名:
学号:成绩:
[实验目的]
1、理解图像平滑与锐化的基本原理。

2、掌握图像滤波的基本定义及目的。

3、理解空间域滤波的基本原理及方法。

4、编程实现图像的平滑与锐化。

[实验原理]
空间滤波器都是基于模板卷积,其主要工作步骤是:
1)将模板在图中移动,并将模板中心与图中某个像素位置
重合;
2)将模板上的系数与模板下对应的像素相乘;3)将所有乘
积相加;
4)将和(模板的输出响应)赋给图中对应模板中心位置的像素。

1、图像的平滑
目的:减少噪声
方法:空域法:邻域平均法、低通滤波、多幅图像求平均、中值滤波
(1)邻域平均(均值滤波器)
所谓的均值滤波是指在图像上对待处理的像素给一个模板,该模板包括了其周围的邻近像素。

将模板中的全体像素的均值来替代原来的像素值的方法。

(2)中值滤波(统计排序滤波)
一般地 , 设有一个一维序列 f1 , f2 , f3 ,…, fn ,取该窗口长度(点数)为 m (m为奇数 ),对一维序列进行中值滤波,就是从序
列中相继抽取m 个数 fi-v , … , fi-1, fi,fi+1 , … , fi+v;其中 fi 为窗口的中心点值 ,v = ( m - 1 )/ 2 。

再将这 m 个点 值按 其数值大小排序,取中间的 那个数作为滤波输出 ,用数学公式表示为:
yi = med fi-v,…,fi-1,fi,fi+1,…,fi+v
其中i ∈Z,v=(m-1)/2 。

中值滤波一般采用一个含有奇数个点的滑动窗口,将窗口中各点灰度值的中值来替代指定点(一般是窗口的中心点)的灰度值。

二维中值滤波可有下式表示 :
yi = med { fij }
中值滤波的性质有 :
(1) 非线性 , 两序列 f ( r ) , g ( r )
med{ f ( r ) + g ( r ) } ≠ med{ f ( r ) } + med{ g ( r ) }
(2) 对尖峰性干扰效果好,即保持边缘的陡度又去掉干扰,对高斯分 布噪声效果差;
(3) 对噪声延续距离小于W/2的噪声抑制效果好,W 为窗口长度。

对于奇数个元素,中值是指按大小排序后,中间的数值;对于偶数 个元素,中值是指排序后中间两个元素灰度值的平均值。

2、本程序计算灰度图像 f 中以像素 f ( i , j ) 为 中心 的 N × N 屏 蔽窗 口 ( N = 3 , 5 , 7 … ) 内 灰度的中值为 u , 无 条件作 f ( i , j ) = u 处理,N 由用户给定。

3、 实现步骤
(1) 取得图像大小、数据区,并把数据区复制到缓冲区中 ;
(2) 取得 N 值 ;
(3) 循环取得各点像素值 ;
(4) 对以该点像素为中心的 N × N 屏蔽窗口包括的各点像素值进 行排序 , 得到中间值 ;
(5) 把该点像素值置为中间值 ;
(6) 把缓冲区中改动的数据复制到原数据区中。

2、图像的锐化
目的:增强图像边缘及灰度跳变部分
拉普拉斯运算
2
2222y f x f f ∂∂+∂∂=∇
如果图像的模糊是由扩散现象引起的,则锐化后为:
[实验步骤]
1、 打开菜单编辑器,在主菜单中添加一菜单项,选中弹出式选项,菜单名称为“图像增强”。

然后建立一下级菜单,打开属性,给菜单一个ID 号,修改标明为“中值滤波”,打开类向导,建立消息响应函数,实现图像中值滤波。

相同方式添加一个“拉普拉斯锐化”菜单项。

添加的函数代码:
void CDLView::OnZzlb()
{
// TODO: Add your command handler code here
long w,h;
long i,j;
w=m_DibHead->biWidth;
h=m_DibHead->biHeight;
unsigned char F[30]={0};
int k,l;
unsigned char *lp=new unsigned char[w*h];
memcpy(lp,m_Image,w*h);
for(i=2;i<h-2;i++)
for(j=2;j<w-2;j++)
{
for(k=-2;k<=2;k++)
for(l=-2;l<=2;l++)
F[k*5+l+12]=lp[(i+k)*w+j+l];
PX(F,25);
m_Image[i*w+j]=F[12];
}
Invalidate();
}
/**************拉普拉斯锐化*********/
void CDLView::OnLapuls()
{
// TODO: Add your command handler code here
)
,(4)1,()1,(),1(),1(,22j i f j i f j i f j i f j i f f f k f g --+++-++=∇∇-=
long w,h;
long i,j;
int imin=10000;
int imax=-10000;
unsigned char *g=NULL;
w=m_DibHead->biWidth;
h=m_DibHead->biHeight;
int *f=new int[w*h];
memset(f,0,w*h*sizeof(int));
for(i=1;i<h-1;i++)
for(j=1;j<w-1;j++)
{
g=m_Image+i*w+j;
f[i*w+j]=5*(*g)-*(g+w)-*(g-w)-*(g-1)-*(g+1);
if(f[i*w+j]<imin)
imin=f[i*w+j];
if(f[i*w+j]>imax)
imax=f[i*w+j];
}
for(i=1;i<h;i++)
for(j=1;j<w;j++)
{
f[i*w+j]-=imin;
f[i*w+j]=f[i*w+j]*255/(imax-imin);
m_Image[i*w+j]=(unsigned char)(f[i*w+j]);
}
Invalidate();
delete []f;
}
[实验结果]
1、中值滤波
变换前
变换后
2、拉普拉斯锐化
变换前
变换后
[实验结论]
通过这次实验,我掌握了图像的平滑与锐化的基本原理,掌握了图像的平滑与锐化的中值算法和拉普拉斯算法的原理和实现算法,通过编程,加深了对其更深的理解。

相关文档
最新文档