Moravec算子
? ? ? ?說(shuō)白了就是求兩個(gè)像素點(diǎn)之間的差,然后平方一下給它變成正值。
? ? ? ?其中,x,y表示像素點(diǎn),u、v表示水平豎直方向的偏移量;w(x,y)為濾波函數(shù),一般直接等于常數(shù)1。 I(x+u,x+v)、I(x,y?)表示像素點(diǎn)(x+u,x+v)、(x,y)的灰度值。
Harris算子
? ?將moravec算子進(jìn)一步推導(dǎo),根據(jù)泰勒展開(kāi),僅保留二階項(xiàng)的公式為:
? ? ? ?把上面公式帶入moravec算子中,得到:
? ? ? ??Ix和Iy就是我們講邊緣檢測(cè)時(shí)候的水平豎直梯度,可以用sobel算子作為濾波器進(jìn)行計(jì)算。
? ? ? ??再進(jìn)一步簡(jiǎn)化公式,變成矩陣形式:
?? ? ? ?我們令
? ? ? ?接下來(lái),我們對(duì)一個(gè)窗口的角點(diǎn)進(jìn)行打分,通過(guò)公式:
? ? ? ?λ1、λ2表示M的特征值。特征值表示2個(gè)方向上的變化(變化最快和最慢的方向),特征值大變化快,特征值小變化慢;k是一個(gè)常數(shù)值,人為設(shè)定
(1)若λ1、λ2都很小,接近于0,那么R也不大,這樣的區(qū)域就是平坦區(qū)域。
(2)若一個(gè)大,一個(gè)?。ń咏?),那么R<0,這樣是邊緣區(qū)域。
(3)若兩個(gè)都很大,這樣就是角點(diǎn)區(qū)域。
? ? ? ?這個(gè)我們可以用一個(gè)形象的圖像來(lái)舉例子:
? ? ? ?這有個(gè)圖,是一個(gè)矩形。我們選擇最左邊那條邊的一個(gè)點(diǎn),然后向上移動(dòng)。
? ? ? ?我們會(huì)發(fā)現(xiàn),在這條線上面的任意一個(gè)點(diǎn),Y方向的像素值沒(méi)有變化,而X方向移動(dòng)一格,像素值變化很大。這就說(shuō)是(2)的情況,也就是特征值一個(gè)大一個(gè)小。也就是邊緣。
? ? ? ?我們一直移動(dòng),直到如下圖的綠色點(diǎn):
? ? ? ?這一點(diǎn)Y方向、X方向移動(dòng)一格,像素值都變化很大,所以這個(gè)點(diǎn)是(3)情況,特征值兩個(gè)都大,是角點(diǎn)。
? ? ? ?我們把綠色的點(diǎn)再往上面移動(dòng),我們會(huì)發(fā)現(xiàn)像素都是白色了,Y方向、X方向移動(dòng)一格,像素值都毫無(wú)變化,這就是(1)的情況,是平坦區(qū)域。
實(shí)戰(zhàn)
輸入
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-440208.html
?最后奉上代碼:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-440208.html
import cv2
import numpy as np
#導(dǎo)入圖片
img = cv2.imread('chessboard.png')
#顯示圖片
cv2.namedWindow("origin", cv2.WINDOW_NORMAL)
cv2.imshow('origin',img)
#轉(zhuǎn)換為灰度圖像
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
gray = np.float32(gray)
#Harris角點(diǎn)檢測(cè),2表示u,v的值,3表示sobel卷積核是3*3的,0.03為k值
dst = cv2.cornerHarris(gray,2,3,0.03)
# 膨脹一下角點(diǎn),使得更清晰
dst = cv2.dilate(dst,np.ones((15, 15), np.uint8))
# 設(shè)定閾值為0.01*角點(diǎn)里面的最大值,小于的角點(diǎn)都舍去
img[dst>0.01*dst.max()]=[0,0,255]
#顯示圖片
cv2.namedWindow("dst", cv2.WINDOW_NORMAL)
cv2.imshow('dst',img)
#按任意鍵結(jié)束
cv2.waitKey()
cv2.destroyAllWindows()
到了這里,關(guān)于白話文講計(jì)算機(jī)視覺(jué)-第十一講-Harris算子的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!