參考自:數字圖像處理第三版-岡薩勒斯ide
銳化處理的主要目的是突出灰度的過渡部分。加強邊緣和其餘突變(噪聲),削弱灰度變化緩慢的區域。函數
注意:垂直方向是x,水平方向是yui
圖像模糊可用均值平滑實現。因均值處理與積分相似,在邏輯上,咱們能夠得出銳化處理可由空間微分來實現。微分算子的響應強度與圖像的突變程度成正比,這樣,圖像微分加強邊緣和其餘突變,而削弱灰度變化緩慢的區域。spa
微分算子必須保證如下幾點:(1)在恆定灰度區域的微分值爲0;(2)在灰度臺階或斜坡處微分值非0;(3)沿着斜坡的微分值非0code
一維函數f(x)的一階微分定義:blog
二階微分定義:input
對於二維圖像函數f(x,y)是同樣的,只不過咱們將沿着兩個空間軸處理偏微分。it
數字圖像的邊緣在灰度上經常相似於斜坡過渡,這樣就致使圖像的一階微分產生較粗的邊緣。由於沿着斜坡的微分非0。另外一方面,二階微分產生由0分開的一個像素寬的雙邊緣。由此咱們得出結論,二階微分在增前細節方面比一階微分好得多。圖像處理
咱們要的是一個各向同性濾波器,這種濾波器的響應與濾波器做用的圖像的突變方向無關。也就是說,各向同性濾波器是旋轉不變的,即將原圖像旋轉後進行濾波處理的結果和先對圖像濾波而後再旋轉的結果相同。event
最簡單的各向同性微分算子,即拉普拉斯算子
一個二維圖像函數f(x,y)的拉普拉斯算子定義爲:
任意階微分都是線性操做,因此拉普拉斯變換也是一個線性算子。因而:
對應的濾波模板爲下圖a,這是一個旋轉90°的各向同性模板,另外還有對角線方向45°的各向同性模板,還有其餘兩個常見的拉普拉斯模板。a、b與c、d的區別是符號的差異,效果是等效的
拉普拉斯是一種微分算子,所以它強調的是圖像中灰度的突變。將原圖像和拉普拉斯圖像疊加,能夠復原背景特性並保持拉普拉斯銳化處理的效果。若是模板的中心繫數爲負,那麼必須將原圖像減去拉普拉斯變換後的圖像,從而獲得銳化效果。因此,拉普拉斯對圖像加強的基本方法可表示爲下式:
其中,f(x,y)和g(x,y)分別是輸入圖像和銳化後的圖像,若是使用a、b濾波模板則c=-1,若是使用另外兩個,則c=1
1 "空間濾波-銳化-拉普拉斯算子" 2 import numpy as np 3 import cv2 4 5 6 # 定義函數,實現拉普拉斯算子 7 def Laplace(src): 8 template = np.ones((3, 3), dtype=np.float32) # 模板 9 template[1, 1] = -8.0 10 addBorderImg = cv2.copyMakeBorder(src, 1, 1, 1, 1, cv2.BORDER_REFLECT_101) #擴充邊界 11 row, col = src.shape 12 dst = np.zeros((row, col), dtype=np.int16) 13 for i in range(row): 14 for j in range(col): 15 temp = addBorderImg[i:i+3, j:j+3] 16 dst[i, j] = np.sum(template*temp) 17 return dst 18 19 20 inputImg = cv2.imread(r'F:\program_study\Python\data\Fig0217(a).tif', cv2.IMREAD_GRAYSCALE) 21 cv2.imshow('input', inputImg) 22 23 laplaceImg = Laplace(inputImg) # 拉普拉斯濾波後的圖像 24 laplaceImg1 = laplaceImg 25 laplaceImg1[laplaceImg1 < 0] = 0 26 laplaceImg1 = np.uint8(laplaceImg1) 27 cv2.imshow('laplace', laplaceImg1) 28 29 outputImg = np.zeros(inputImg.shape, dtype=np.float32) # 銳化圖像 30 outputImg = inputImg - laplaceImg 31 outputImg[outputImg < 0] = 0 32 outputImg[outputImg > 255] = 255 33 outputImg = np.uint8(outputImg) 34 cv2.namedWindow('output', cv2.WINDOW_NORMAL) 35 cv2.imshow('output', outputImg) 36 37 cv2.waitKey(0) 38 cv2.destroyAllWindows()
處理過程:
一、平滑原圖像
二、原圖像減去1獲得的平滑圖像(獲得的差值圖像稱爲模板)
三、將模板加到原圖像上
過程2,爲平滑圖像
過程3
k爲權重係數,k=1是非銳化掩蔽;k>1是高提高濾波;k<1則不強調非銳化模板的貢獻
函數f(x, y)在(x,y)出的梯度定義爲一個二維列向量它指出了函數在(x,y)處的最大變化率方向
向量的幅度值(長度)表示爲M(x, y),即
它是最大變化率在(x,y)處的值,M(x,y)是與原圖像大小相同的圖像,一般稱爲梯度圖像
在某些時候,用絕對值近似計算幅度值:
一、Roberts交叉梯度算子[1965]
gx = (z9 - z5) 和 gy = (z8 - z6)
二、Sobel算子
gx = (z7 + 2z8 + z9) - (z1 + 2z2 + z3)
gy = (z3 + 2z6 + z9) - (z1 + 2z4 + z7)
用模板計算出一階微分後,再根據3.6-11或3.6-12計算梯度圖像M(x, y)