您的位置:首页 > 其它

数字图像处理-空间域处理-空间滤波-锐化空间滤波器

2018-04-09 09:33 411 查看

参考自:数字图像处理第三版-冈萨勒斯

 

锐化处理的主要目的是突出灰度的过渡部分。增强边缘和其他突变(噪声),削弱灰度变化缓慢的区域。

"空间滤波-锐化-拉普拉斯算子"
import numpy as np
import cv2

# 定义函数,实现拉普拉斯算子
def Laplace(src):
template = np.ones((3, 3), dtype=np.float32)  # 模板
template[1, 1] = -8.0
addBorderImg = cv2.copyMakeBorder(src, 1, 1, 1, 1, cv2.BORDER_REFLECT_101)  #扩充边界
row, col = src.shape
dst = np.zeros((row, col), dtype=np.int16)
for i in range(row):
for j in range(col):
temp = addBorderImg[i:i+3, j:j+3]
dst[i, j] = np.sum(template*temp)
return dst

inputImg = cv2.imread(r'F:\program_study\Python\data\Fig0217(a).tif', cv2.IMREAD_GRAYSCALE)
cv2.imshow('input', inputImg)

laplaceImg = Laplace(inputImg)  # 拉普拉斯滤波后的图像
laplaceImg1 = laplaceImg
laplaceImg1[laplaceImg1 < 0] = 0
laplaceImg1 = np.uint8(laplaceImg1)
cv2.imshow('laplace', laplaceImg1)

outputImg = np.zeros(inputImg.shape, dtype=np.float32)  # 锐化图像
outputImg = inputImg - laplaceImg
outputImg[outputImg < 0] = 0
outputImg[outputImg > 255] = 255
outputImg = np.uint8(outputImg)
cv2.namedWindow('output', cv2.WINDOW_NORMAL)
cv2.imshow('output', outputImg)

cv2.waitKey(0)
cv2.destroyAllWindows()
拉普拉斯算子  

 

 

非锐化掩蔽和高提升滤波

处理过程:

1、平滑原图像

2、原图像减去1得到的平滑图像(得到的差值图像称为模板)

3、将模板加到原图像上

过程2, 为平滑图像

过程3

 k为权重系数,k=1是非锐化掩蔽;k>1是高提升滤波;k<1则不强调非锐化模板的贡献

 

一阶微分-梯度

函数f(x, y)在(x,y)出的梯度定义为一个二维列向量 它指出了函数在(x,y)处的最大变化率方向

向量的幅度值(长度)表示为M(x, y),即

它是最大变化率在(x,y)处的值,M(x,y)是与原图像大小相同的图像,通常称为梯度图像

在某些时候,用绝对值近似计算幅度值:

  计算一阶微分

  1、Roberts交叉梯度算子[1965]  

  gx = (z9 - z5)   和   gy = (z8 - z6)

  

  2、Sobel算子

  gx = (z7 + 2z8 + z9) - (z1 + 2z2 + z3)

  gy = (z3 + 2z6 + z9) - (z1 + 2z4 + z7)

  

  用模板计算出一阶微分后,再根据3.6-11或3.6-12计算梯度图像M(x, y)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: