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


參考自:數字圖像處理第三版-岡薩勒斯

 

銳化處理的主要目的是突出灰度的過渡部分。增強邊緣和其他突變(噪聲),削弱灰度變化緩慢的區域。

注意:垂直方向是x,水平方向是y

基礎

圖像模糊可用均值平滑實現。因均值處理與積分類似,在邏輯上,我們可以得出銳化處理可由空間微分來實現。微分算子的響應強度與圖像的突變程度成正比,這樣,圖像微分增強邊緣和其他突變,而削弱灰度變化緩慢的區域。

微分算子必須保證以下幾點:(1)在恆定灰度區域的微分值為0;(2)在灰度台階或斜坡處微分值非0;(3)沿着斜坡的微分值非0

一維函數f(x)的一階微分定義:

        二階微分定義:

 

對於二維圖像函數f(x,y)是一樣的,只不過我們將沿着兩個空間軸處理偏微分。

數字圖像的邊緣在灰度上常常類似於斜坡過渡,這樣就導致圖像的一階微分產生較粗的邊緣。因為沿着斜坡的微分非0。另一方面,二階微分產生由0分開的一個像素寬的雙邊緣。由此我們得出結論,二階微分在增前細節方面比一階微分好得多。

 

二階微分-拉普拉斯算子

 我們要的是一個各向同性濾波器,這種濾波器的響應與濾波器作用的圖像的突變方向無關。也就是說,各向同性濾波器是旋轉不變的,即將原圖像旋轉后進行濾波處理的結果和先對圖像濾波然后再旋轉的結果相同。

最簡單的各向同性微分算子,即拉普拉斯算子

一個二維圖像函數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、原圖像減去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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM