(转)拉普拉斯滤波实现图像增强

来源:互联网 发布:河南省统计局数据直报 编辑:程序博客网 时间:2024/05/16 06:24

原文地址:http://blog.sina.com.cn/s/blog_6f57a7150100o5ef.html

先上个简单的示例,看MATLAB中拉普拉斯滤波器是如何实现的:

令原图f=magic(3)

=
     8     1     6
     3     5     7
     4     9     2

掩膜采用标准Laplacian掩膜:w=fspecial('laplacian',0)

w =
     0     1     0
     1    -4     1
     0     1     0

n=imfilter(f,w,'replicate');默认参数为'same',结果为:

n =
   -12    16    -4
     8     0    -8
     4   -16    12

采用'full'参数,n=imfilter(f,w,'replicate','full');结果为:

n =
     0    -7    12    -5     0
    -5   -12    16    -4     1
     6     8     0    -8    -6
    -1     4   -16    12     5
     0     5   -12     7     0

=========

实现过程:

①模板旋转180度(和原来一样,因为是对称的模板)

w' =
     0     1     0
     1    -4     1
     0     1     0

②图像边界填充,这里采用'replicate'方式:

>> k=padarray(m,[2 2],'replicate')
=
     8     8     8     1     6     6     6
     8     8     8     1     6     6     6
     8     8         1     6     6     6
     3     3         5     7     7     7
     4     4         9     2     2     2
     4     4     4     9     2     2     2
     4     4     4     9     2     2     2

(黄色背景为原始图像)

③进行卷积运算:

拉普拉斯滤波实现图像增强

拉普拉斯滤波实现图像增强

……(逐步计算,直至模板全部移过图像)

④去除边界,得到结果:

拉普拉斯滤波实现图像增强

上述即用laplacian滤波模板进行图像滤波的过程(实际上是一个空间卷积操作)。

以一幅uint8类灰度图像为例,原图:

拉普拉斯滤波实现图像增强
直接使用laplacian滤波模板滤波:

>> f=imread('moon.tif');
>> w=fspecial('laplacian',0)
>> g1=imfilter(f,w,'replicate');

>> imshow(g1)

拉普拉斯滤波实现图像增强

效果并不理想,因为原图是一幅uint8类图像,输出结果仍为uint8类,所有像素均为正值,而拉普拉斯滤波模板中存在负值,变换结果中的所有负值被截掉了。
解决此问题,须先进行类型变换:

f2=im2double(f);  %将f转换为归一化的double类图像

然后再进行滤波:

>> g2=imfilter(f2,w,'replicate');
>> imshow(g2,[])

拉普拉斯滤波实现图像增强
此图像即含有负值的滤波结果,相比于原图,丢失了一些灰度色调,故还需用原图减去此滤波结果(以还原失去的灰度色调):

>> g=f2-g2;figure,imshow(g)
拉普拉斯滤波实现图像增强

比原图清晰了很多。

另外,使用考虑了对角线元素的中心为8的拉普拉斯算子还可以获得更为清晰的图像:

>> w8=[1 1 1;1 -8 1;1 1 1]

w8 =
     1     1     1
     1    -8     1
     1     1     1
>> g8=f-imfilter(f,w8,'replicate');
>> figure,imshow(g8)

拉普拉斯滤波实现图像增强

===========

拉普拉斯算子的数学定义:

拉普拉斯滤波实现图像增强

式(2)为式(1)的数字近似,式(3)中g(x,y)为目标图像,f(x,y)为原始图像。c为1(当掩膜中心系数为正时),c为-1(当掩膜中心系数为负时)

由于laplacian算子是微分操作符,所以它会使图像锐化,并使常量区域为0

 

后记:关键点是模板的选取。

0 0
原创粉丝点击