Ich habe eine C++-Implementierung der Hough-Transformation zur Erkennung von Linien in Bildern erstellt. Gefundene Linien werden mit rho, theta, wie auf wikipedia beschrieben, dargestellt:
"Der Parameter r gibt den Abstand zwischen der Linie und dem Ursprung an, während der Winkel des Vektors vom Ursprung zu diesem nächstgelegenen Punkt ist.
Wie kann ich den Schnittpunkt im x-, y-Raum für zwei mit r, beschriebene Linien finden?
Als Referenz sind hier meine aktuellen Funktionen für die Konvertierung in und aus dem Hough Space:
//get 'r' (length of a line from pole (corner, 0,0, distance from center) perpendicular to a line intersecting point x,y at a given angle) given the point and the angle (in radians)
inline float point2Hough(int x, int y, float theta) {
return((((float)x)*cosf(theta))+((float)y)*sinf(theta));
}
//get point y for a line at angle theta with a distance from the pole of r intersecting x? bad explanation! >_<
inline float hough2Point(int x, int r, float theta) {
float y;
if(theta!=0) {
y=(-cosf(theta)/sinf(theta))*x+((float)r/sinf(theta));
} else {
y=(float)r; //wth theta may == 0?!
}
return(y);
}
Entschuldigung im Voraus, wenn dies etwas offensichtlich ist