0
是否有任何文件描述了openCV中FindCornerSubPix函數的算法?我找不到任何描述它的文檔。打開FindCornerSubPix算法
是否有任何文件描述了openCV中FindCornerSubPix函數的算法?我找不到任何描述它的文檔。打開FindCornerSubPix算法
我從源代碼(版本2.1)相信這是利用圖像的梯度來優化位置...
cv.h:
997 /* Adjust corner position using some sort of gradient search */
998 CVAPI(void) cvFindCornerSubPix(const CvArr* image, CvPoint2D32f* corners,
999 int count, CvSize win, CvSize zero_zone,
1000 CvTermCriteria criteria);
爲函數的文檔也描述了這一點 - 特定目標函數的性質使用:
操作的更多細節明確在文件cvcornersubpix.cpp找到。看着這個,可以清楚地看到,該函數正在計算搜索區域的導數並構建一個Hessian矩陣...
換句話說,據我所知,標準共軛梯度法!
OpenCV 2.2版本(最新版本)似乎沒有這個功能了。
謝謝你的回答!現在它變得更加清晰,但在文檔中(http://opencv.willowgarage.com/documentation/c/imgproc_feature_detection.html?highlight=findcornersubpix#cvFindCornerSubPix)有一個方程式系統,我無法理解它是如何構建的。爲什麼有「DI_pi」,點p_i的梯度,發生兩次? – Dmitry 2011-06-01 05:22:09
根據我對文檔的理解,對DI_pi * DI_pi^T(即乘以其轉置)的引用僅僅是描述了_q_像素鄰域中梯度的總和。通過快速查看cvcornersubpix.cpp中的源代碼(第180行以後),可以更清楚地看到這一點,其中可以對像素鄰域周圍的一階和二階導數進行計算和求和,並有效地構建DI_pi (代碼中的矩陣_A_)。 – timlukins 2011-06-01 09:05:51