[英]Detecting accurate center point of rectangular object using HoughLinesP
我有一個對象,我想定義它的確切中心。 使用OpenCV,我使用Canny
檢測邊緣,然后執行HoughLinesP
檢測線: 請參見this 。
我使用Hough變換是因為對象不是完全矩形,有時在此處檢測到凹凸。
行是在結構中定義的。 我還計算了中間點,角度和長度:
struct hLine {
Point pStart, pEnd, pMidpoint;
float angle;
int length;
};
如您所見,在側面檢測到多條線。
我嘗試的方法是計算線方程y = kx + n ,然后按角度,長度和n對線進行排序,並僅保留n被某個數字(矩形的相對側)分開的線。 我對垂直線有問題(無法計算n ),而且當對象幾乎垂直時n的數目很大,因此不會刪除線。
下一步是計算線相交,然后計算中心。 想法基於此教程:opencv-code.com/tutorials/automatic-perspective-correction-for-quadrilateral-objects/
另外,如果有人有更好的解決方案來檢測准確的中心點,請大聲說:)
使用canny檢測邊緣后,可以使用形態學閉合操作來合並邊緣。 然后找到輪廓並使用多邊形近似對輪廓進行平滑。 對於找到的每個四邊形,您可以檢查拐角是否大約為90度,以確認它是矩形。 根據示例圖像,您檢測到的最大矩形應該是您感興趣的矩形。(您還可以找到每個輪廓的凸包,然后將多邊形近似應用於凸包)。
我會做:
我會這樣做:
您提供的鏈接中已經完成了步驟1和2。
如果霍夫線檢測不夠魯棒怎么辦?
在這種情況下,我將采用A. Desolneux提出的一種非常強大的檢測算法,稱為有意義比對 。 首先,其背后的數學運算可能看起來有些嚇人,但是該算法仍然非常易於實現(盡管可能有點慢)。 我過去使用過它,結果確實和作者所說的一樣好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.