编辑: 烂衣小孩 | 2018-10-22 |
最后再对 进行傅立叶反变换,以得到滤波后的图象 . ?????? 在进行图象频域滤波时,我们都是在对整幅图象进行操作,而且在确定转换函数时也是基于整个图象的统计量,进行整幅图象的卷积运算,因此需要较长的处理时间,并且无法保证某些局部区域内的噪声被完全滤除. ?????? 空 域滤波是在图象空间中利用模板进行图象滤波,它同样也利用了卷积理论,使用模板对图象象素进行卷积运算.具体的滤波过程为:首先将模板在图象中游动,顺序 将模板中心与图象中的某个象素位置重合;
其次,将该象素值与对应模板值进行某种运算;
最后,将运算结果赋给图象中对应模板中心的象素. ?????? 在本文中,采用高斯(Gauss)模板进行图象平滑处理.高斯模板通过采样2维高斯函数得到,它可以有效滤除随机分布的噪声点,并能有效保持图象的边缘点.高斯模板的矩阵形式为: 5-3) 为提高模板运算速度,将上述矩阵形式进行变换,如下所示: 5-4) 图5.1是微孔图象的原始灰度直方图,图5.2是进行平滑处理后的灰度直方图,如下所示: 图5.1原始灰度直方图 图5.2平滑处理后的灰度直方图 如上所示,背景区域分布在0到150灰度范围附近,微孔图象区域分布在250到255灰度范围附近.经过平滑滤波,直方图中的各种 毛刺 噪声被抑止,直方图曲线变的较光滑,有利于后继图象分析和处理. 基本原理 图像信息在采集过程中往往受到各种噪声源的干扰,这些噪声在图像上的常常表现为一些孤立像素点,这可理解为像素的灰度是空间相关的,即噪声点像素灰度与它们临近像素的灰度有着显著不同.通常,一般的前置图像处理后的图刺昂仍然带有后续所不希望夹带的孤立像素点,这种干扰或孤立像素点如不经过滤波处理,会对以后的图像区域分割、分析和判断带来影响. ?????? 对受到噪声污染的图像可以采用线性滤波的方法来处理,但是很多线性滤波有低通性,在去噪声的同时也使得边缘模糊了,中值滤波在某些情况下可以做到既去除噪声又保护图像的边缘,他是一种非线性的去噪声的方法. ?????? 中值滤波的实现原理是把数字图像中的一点的值用该点的一个区域的各个点的值的中值代替,中值的定义如下: 一组数X
1、X
2、X3…Xn 假如其排序如下: X i 1≤X i 2≤X i 3≤…≤X i n ????? Y=Med{X
1、X
2、X3…Xn }=Xi((1+n)/2)n为奇数 Xi(n/2) +Xi((1+n)/2)n为偶数 Y称为X
1、X
2、X3…Xn 的中值,如有一个序列(10,20,30,40,50,60,70),则中值为40. 把一个点的特定长度或形状的领域称为窗口,在一维的时候,中值滤波器是一个奇数各像素点的滑动窗口,窗口正中间的值用窗口内各个像素的中值代替.设输入为{Xi,i∈I2},则滤波器的输出为: Yi=med{Xi}=med{Xi-u…Xu…Xi+u} 如果推广到二维,则可以定义输出为: Yi=med{Xij}=med{X(i+s),(j+s)(r,s)∈A,(i,j)∈I2 } 对于二维滤波的中值滤波,一般采用3*3或者5*5的窗口来进行滤波.
2、? 实现 procedure TForm1.Button2Click(Sender: TObject);
var ??????? p1,p2,p3,p4:pbytearray;
??????? Rvaluearray:array[0..10] of integer;
??????? i,j:integer;
begin ??????? self.DoubleBuffered:=true;
//采用双缓冲模式 ??????? ChangedBmp:=tbitmap.Create;
??? ????testbmp:=tbitmap.Create;
??????? changedbmp.Assign(image1.Picture);
??????? testbmp.Assign(image1.Picture);
??????? for j:=1 to changedbmp.Height-2 do ??????? begin p1:=testbmp.ScanLine[j];