Opencv - cvHoughLines2
Я читаю Learning openCV
и я наткнулся на описание cvHoughLines2
в этой книге. Но я не могу понять одну вещь.
Я прочитал о преобразовании Хафа, и я думаю, что я понимаю, поэтому параметры rho
а также theta
немного озадачивает для меня. Когда у нас есть уравнение rho=xcos(theta)+ycos(theta)
когда мы принимаем решение о некотором наборе дискретных значений theta
, значения rho
должен быть автоматически известен.
В этой книге сказано, что opencv
создает rho
Иксtheta
массив аккумуляторов.
OpenCV просто дискретизирует угол как умножение 360/theta
? Но как rho
параметр подходит? Каковы значения rho
дискрети-?
2 ответа
Ваш вопрос не ясен, кажется, вы в замешательстве. Посмотрите на эту страницу. Учитывая набор точек (x и y), принадлежащих линии, вы можете описать одну и ту же линию двумя параметрами r и theta. Это два независимых параметра, которые мы хотим найти, которые лучше всего описывают линию, на которой у нас есть точки.
Вначале вы выбираете вектор тета, скажем, 10 чисел, вам нужно округлить результат, чтобы попасть в пиксель матрицы, строка которого представляет радиус, а столбцы - угол, поэтому, если какая-то линия находится под тем же углом и радиусом, это добавит аккумулятору значение. [0 36 .. 360] также радиус-вектор [1 2 3 .. 10], затем вы создаете изображение M*N, все нули, скажем, например, только [0 0 0 0 0 0 0 0 0], затем вы выполняете формулу, которую вы пишете в некоторый радиус и угол вашей матрицы становятся [1 0 0 0 0 0 0 0 0]
затем [1 0 0 0 0 1 0 0 0], затем [ 2 0 0 0 0 1 0 1 0] и так далее, тогда вы можете пороговым и найти только некоторые линии или под некоторыми углами.