Создана реализация преобразования Хафа в c ++ для обнаружения линий на изображениях. Найденные строки представлены с использованием rho, theta, как описано в википедии:
«Параметр r представляет расстояние между линией и началом координат, а θ - угол вектора от начала координат до этой ближайшей точки»
Как найти точку пересечения в пространстве x, y для двух линий, описанных с использованием r, θ?
Для справки вот мои текущие функции для преобразования в и из свободного пространства:
//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);
}
заранее извините, если это что-то очевидно ..