數字圖像處理-空間域處理-空間濾波-銳化空間濾波器

參考自:數字圖像處理第三版-岡薩勒斯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)

相關文章
相關標籤/搜索