LoG算子(高斯拉普拉斯算子)
LoG算子是由拉普拉斯算子改進(jìn)而來。拉普拉斯算子是二階導(dǎo)數(shù)算子,是一個(gè)標(biāo)量,具有線性、位移不變性,其傳函在頻域空間的原點(diǎn)為0。所有經(jīng)過拉普拉斯算子濾波的圖像具有零平均灰度。但是該算子的缺點(diǎn)是對(duì)噪聲具有敏感性,因此在實(shí)際應(yīng)用中,一般先要對(duì)圖像進(jìn)行平滑濾波,再用拉氏算子進(jìn)行圖像的邊緣檢測。這就是LoG算子的產(chǎn)生的背景(最后的梯度表達(dá)式為高斯函數(shù)和原圖像卷積,再去二階微分算子)。
其濾波函數(shù)模型為:
常用的5*5卷積核模板為:
[
0
0
?
1
0
0
0
?
1
?
2
?
1
0
?
1
?
2
16
?
2
?
1
0
?
1
?
2
?
1
0
0
0
?
1
0
0
]
\left[ \begin{array} {cccc} 0&0&-1&0&0\\ 0&-1&-2&-1&0\\ -1&-2&16&-2&-1\\ 0&-1&-2&-1&0\\ 0&0&-1&0&0\\ \end{array} \right]
?00?100?0?1?2?10??1?216?2?1?0?1?2?10?00?100?
?
代碼:
import numpy as np
import cv2
from matplotlib import pyplot as plt
import imgShow as iS
#定義掩膜
m1 = np.array([[0,0,-1,0,0],[0,-1,-2,-1,0],[-1,-2,16,-2,-1],[0,-1,-2,-1,0],[0,0,-1,0,0]]) #LoG算子模板
img = cv2.imread("./originImg/Lena.tif")
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#邊緣擴(kuò)充
image = cv2.copyMakeBorder(img, 2, 2, 2, 2, borderType=cv2.BORDER_REPLICATE)
# image = cv2.GaussianBlur(img,(3,3),4)
rows = image.shape[0]
cols = image.shape[1]
temp = 0
image1 = np.zeros(image.shape)
for i in range(2,rows-2):
for j in range(2,cols-2):
temp = np.abs(
(np.dot(np.array([1, 1, 1, 1, 1]), (m1 * image[i - 2:i + 3, j - 2:j + 3])))
.dot(np.array([[1], [1], [1], [1], [1]])))
image1[i,j] = int(temp)
if image1[i, j] > 255:
image1[i, j] = 255
else:
image1[i, j] = 0
iS.showImagegray(image1,img , 25, 15, 'LoG', 'origin', './LoG.jpg')
# cv2.imshow("LoG",image1)
# cv2.waitKey(0)
檢測結(jié)果為:文章來源:http://www.zghlxwxcb.cn/news/detail-599834.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-599834.html
到了這里,關(guān)于圖像處理之LoG算子(高斯拉普拉斯)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!