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] и так далее, тогда вы можете пороговым и найти только некоторые линии или под некоторыми углами.

Другие вопросы по тегам