日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

机器视觉-特征点检测:【2】Harrs角点检测原理

發布時間:2025/3/21 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器视觉-特征点检测:【2】Harrs角点检测原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、基本原理


? ? ? ? 關于角點特征檢測,Chris Harris 和 Mike Stephens 在 1988 年的論文 A Combined Corner and Edge Detector 中進行了一次早期的嘗試,所以現在它被稱為 Harris Corner Detector。他把這個簡單的想法轉化為數學形式。它基本上找到了(a,b)在所有方向上的位移的強度差異。這表示如下:

窗口函數是矩形窗口或高斯窗口,它為下面的像素賦予權重。

我們必須最大化這個函數 E(u,v) 來進行角點檢測。這意味著我們必須最大化第二項。將泰勒展開式應用于上述方程并使用一些數學步驟(請參閱您喜歡的任何標準教科書以獲得完整推導),

我們這里只取一階導數泰勒函數:

所以,我們得到最終方程::

?

上式中,令:

故而:

這里,a,b是給定的偏移,w是給定窗口,唯有M矩陣需要具體計算,這里,Ix和Iy分別是x和y方向的導數。(可以很容易的通過cv2.Sobel()得到)。

如下圖,角點檢測首先是在一個小區域進行。

在上圖中,檢測到的三個區域:

  • 1)flate平坦區域
  • 2)edge邊緣區域
  • 3)coner角度區域

能夠分別得到窗口下的E(a,b)值。按道理:根據E(a,b)能夠判別角點也是可以的。然而,用譜分解的原理是更加干凈的判別方法。

對矩陣求特征值,得到,通過比較?的關系,可以得到角點的判斷。如下圖所示:

接下來就是重點部分。上述操作結束后,會得到一個分數,基于一個用來決定窗口內是否包含角點的等式。

在以上公式中:

  • 是M的特征值。

?所以這些特征值決定了這個區域是角點,還是邊緣,還是flat。

  • 當|R|比較小時,也就是lambda 1和lambda 2比較小,區域是flat
  • 當R<0時, 也就是lambda 1遠大于lambda 2或反之亦然,區域是邊緣
  • 當R比較大時,也就是lambda 1和lambda2都大且相似,區域是角點

可以用下面的圖來表示
?

所以Harris角點檢測的結果是一個帶著這些分數的灰度圖。圖像角點檢測需要一個合適的閾值。我們將用一個簡單的圖來實現。

二 參考代碼

import cv2 import numpy as npfilename = 'chessboard.jpg' img = cv2.imread(filename) gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)gray = np.float32(gray) dst = cv2.cornerHarris(gray,2,3,0.04)#result is dilated for marking the corners, not important dst = cv2.dilate(dst,None)# Threshold for an optimal value, it may vary depending on the image. img[dst>0.01*dst.max()]=[0,0,255]cv2.imshow('dst',img) if cv2.waitKey(0) & 0xff == 27:cv2.destroyAllWindows()

總結

以上是生活随笔為你收集整理的机器视觉-特征点检测:【2】Harrs角点检测原理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。