簡體   English   中英

通過點和線計算CV2 Homography

[英]Calculate CV2 Homography by points and line

我有該字段中的點列表(如upper_goal_point / left_upper_outer_corner等。

在此處輸入圖像描述

我知道它們在目標圖像中的對應坐標 - 所以我可以計算單應性:

h, status = cv2.findHomography(pts_src, pts_dst)

我在上角線上也有藍點(看上圖),我只知道它們的目的地的y坐標為 0 (因為它們在上線),但我不知道它們到底在哪里線。

我可以使用這些藍點來改善單應性嗎?

附言

可以看到,單應性中的upper corner角線不是水平線,而是對角線,這當然是不正確的:

在此處輸入圖像描述

實際上可以在查找單應性中使用線對應。

https://www.researchgate.net/publication/220845575_Combining_Line_and_Point_Correspondences_for_Homography_Estimation

幾年前,我們在一個項目中實施了這種方法。 在簡化所有數學的過程中,我們想出了簡單的技巧。 我們將每一行a*x + b*y + c = 0轉換為點(a/c, b/c)

// ***  Don't copy paste this code, read below!  ***//
Point2f convertPointsToHomogeneousLine(Point2f p1, Point2f p2) {
    Point3f p1h(p1.x, p1.y, 1);
    Point3f p2h(p2.x, p2.y, 1);
    Point3f lineHomo(p1h.y*p2h.z - p1h.z*p2h.y,
                     p1h.z*p2h.x - p1h.x*p2h.z,
                     p1h.x*p2h.y - p1h.y*p2h.x);
    
    Point2f lineHomoNorm(lineHomo.x / lineHomo.z,
                         lineHomo.y / lineHomo.z);
    return lineHomoNorm;
}

並通過這個點里面。 我記得我還挖掘了findHomography的 OpenCV 實現,並將這條線插入到里面的某個地方來解決步驟。 在 OpenCV 內部,在通過求解步驟之前對點進行了一些歸一化。 因此,您需要跳過此步驟以獲得此類積分。

我們不在生產中使用它。 用戶需要通過在圖像和儀表系統中提供線和點來手動校准相機。 界面過於復雜,穩定性差。 但在你的情況下,我認為它可以更好地工作。 如果你會自動找到線路和信件。

PS請注意,在論文中他們使用了一些標准化技術。 它將提高穩定性。 我們面臨穩定性問題,在我們的旅程中沒有解決它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM