- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
昆明理工大学(数字图像处理)实验报告
实验名称: 图像平滑与锐化
一、实验目的
理解图像平滑与锐化的基本原理。
学会使用C语言编程实现图像的平滑与锐化。
二、实验原理
领域平均法(均值滤波)
领域平均法是一种局部空间域处理的算法,它是线性滤波。设一幅图像为的阵列,平滑后的图像为,它的每个像素的灰度级由包含在的预定领域内的几个像素的灰度级的平均值所决定。即在图像上对待处理的像素给一个模板,该模板包括了其周围的邻近像素,将模板中的全体像素的均值来替代原来的像素值。
(其中,x,y=0,1, …,N-1;S为点的领域中心点的坐标集合(不包括点);M是S内坐标点的总数)。
所用的领域半径越大,则平均后图像的模糊程度也越大。如果图像中的噪声是随机不相关的加性噪声,窗口内各点的噪声是独立等分布的,那么经过上述平滑后,性噪比可以提高倍,但它的主要缺点是在降低图像噪声的同时使图像产生模糊,特别是在边缘和细节处,领域越大,模糊越厉害。
中值滤波法
如果既要消除噪声又要保持图像的细节可以使用中值滤波器,它是一种非线性平滑滤波器。中值滤波在一定条件下可以克服线性滤波器带来的图像细节模糊,而且对滤除脉冲干扰及图像扫描噪声最为有效。但对于一些细节多,特别是点、线、尖顶多的图像不宜采用中值滤波。
中值滤波的算法步骤为:将模板在图像范围内漫游,并将模板中心与图中某个像素位置重合读取模板中各对应像素的灰度值将得到的灰度值从小到大排成一列找到这些值中排在中间的那个值将这个中间值赋给对应模板中心位置的像素。
中值滤波器的主要功能是使与周围像素灰度级相差比较大的像素取与周围像素灰度值接近的值,从而消除孤立噪声点。由于这种方法并不是简单地取平均值,所以产生的模糊度较小。
图像锐化
图像锐化的目的是使模糊的图像变得更加清晰。图像模糊的实质是图像受到平均或积分运算,因此为实现图像的锐化,必须用它的逆运算,如微分法,来使图像清晰化。从频谱角度来看,图像模糊的实质是其高频分量受到了衰减。
能够进行锐化的图像必须要有较高的信噪比,否则,锐化后的图像信噪比反而更低,从而使噪声的增加比信号还要多,因此,一般是先滤除或抑制噪声后再进行锐化处理。
图像锐化
(1)梯度法:
(矢量指向函数最大变化率的方向;矢量的幅度表示在的方向上每单位距离的最大增加率,的幅度定义为)。
对于数字图像,微分运算一般用差分来代替。常用的差分形式有两种,分别表示幅度为:。
利用差分运算时,图像的最后一行和最后一列的像素的梯度无法求得,一般用前一行和前一列的梯度值近似代替。由梯度的计算可知,在图像中灰度变化较大的的边缘区域其梯度值大,在图像灰度变化平缓的区域其梯度值较小,而在灰度均匀区域其梯度值为零。
(2)Sobel算子
由于引入平均,对图像中随机噪声有一定的平滑作用,边缘两侧元素得到加强,故边缘显得粗而亮。
三、实验内容及步骤
打开菜单编辑器,在主菜单中添加一菜单项,选中弹出式选项,修改菜单名称为“图像平滑”。然后建立一下级菜单,打开属性给菜单一个ID号,修改标明为“均值滤波”,打开类向导,建立消息响应函数,实现图像均值滤波。
添加的函数代码:
void CGsmView::OnJunzhilvbo()
{
// TODO: Add your command handler code here
long w,h;
long i,j;
w=m_DibHead-biWidth;
h=m_DibHead-biHeight;
unsigned char *lpdst=new unsigned char[w*h];
memset(lpdst,0,w*h);
for(i=1;ih-1;i++)
for(j=1;jw-1;j++)
{
int temp=*(m_Image+i*w-w+j-1)+*(m_Image+i*w-w+j)+*(m_Image+i*w-w+j+1)+
*(m_Image+i*w+j-1)+*(m_Image+i*w+j)+*(m_Image+i*w+j+1)+
*(m_Image+i*w+w+j-1)+*(m_Image+i*w+w+j)+*(m_Image+i*w+w+j+1);
temp/=9;
*(lpdst+i*w+j)=(unsigned char)(temp);
}
memcpy(m_Image,lpdst,w*h);
Invalidate();
delete []lpdst;
}
滤波前后
添加一个:mysort函数
在下拉菜单再建立一个新的菜单,打开属性给菜单一个ID
文档评论(0)