码迷,mamicode.com
首页 > 其他好文 > 详细

梯度算子用于图像处理及其数学基础

时间:2015-08-16 21:29:37      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:

为了提高图像的对比度,凸显边缘轮廓,通常可以使用一些梯度算子来进行图像增强,如roberts交叉算子,soble算子,laplace算子等。

技术分享

假设图像用函数f(x,y)表示,那么处理的结果可以分别表示为:

g(x,y)=(|Gl|+|Gr|)*f(x,y)

g(x,y)=(|Gx|+|Gy|)*f(x,y)

g(x,y)=|G|*f(x,y)

作为例子,使用laplace算子对图像进行了处理,结果显示图中灰度变化缓慢的区域得到了抑制。左下图为原始图像,右下为处理结果

技术分享                 技术分享

python代码如下:

from PIL import Image
from numpy import *
from pylab import *
def imEnhance(im,kernel):
    r,c = im.shape
    
    kr,kc = kernel.shape
    im2 = zeros((r,c))
    im3 = zeros((r+kr-1,c+kc-1))
    for i in range(r):
        for j in range(c):
            im3[i+(kr-1)/2,j+(kc-1)/2]=im[i,j]
    for i in range(r):
        for j in range(c):   
            im2[i,j]= sum(im3[i:i+kr,j:j+kc]*kernel)
    return im2        

im =array(Image.open("lena.jpg").convert('L'))
print im[0:3,0:3]
gray()
figure(1)
imshow(im)
laplace = array([[0,1,0],[1,-4,1],[0,1,0]])
im=imEnhance(im,laplace)
min_val=im.min()
max_val=im.max()
im = (im-min_val)/(max_val-min_val)*255.0
figure(2)

imshow(im)
show()

为什么使用上面的3X3或2X2的算子就能起到高频增强的作用,怎么通过数学描述来理解这个处理过程呢?

假设f(x,y)的傅里叶变换为F(u,v)

Roberts算子和Sobel算子用于模拟一阶偏导df,laplace算子则对应于二阶偏导d^2f/dx^2+d^2f/dy^2.

数学推导过程如下:

技术分享


版权声明:本文为博主原创文章,未经博主允许不得转载。

梯度算子用于图像处理及其数学基础

标签:

原文地址:http://blog.csdn.net/flushhj/article/details/47703013

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!