2014-01-21 3 views
1

- См. Обновление/ответ ниже. Ошибка пользователя!Opencv Imgproc.HoughLines() параметры длины настройки

Я пытаюсь понять, как установить параметры в Imgproc.HoughLines(), чтобы найти более короткие строки. Я пытался что-то подобное, что не работает вообще:

Imgproc.HoughLines(matSrc, matLines, 1, Math.PI/180, houghThreshCurrent, 25, 10); 

Я пытался несколько значений для двух последних параметров, но никто не похоже на работу - это не находит ни одной строки. Однако использование версии метода без двух последних параметров делает достойную работу по поиску строк, которые я хочу, а не более короткие строки независимо от того, насколько низкий порог.

Вот документ в течение последних двух Params:

srn For the multi-scale Hough transform, it is a divisor for the distance resolution rho. The coarse accumulator distance resolution is rho and the accurate accumulator resolution is rho/srn. If both srn=0 and stn=0, the classical Hough transform is used. Otherwise, both these parameters should be positive. 
stn For the multi-scale Hough transform, it is a divisor for the distance resolution theta. 

Может кто-нибудь перевести или предоставить примеры значений для этого? :)

Я также пробовал вариант с вероятностью HoughLinesP(). Кажется, что это не очень хорошо подходит для моего случая использования. Другим вариантом было бы масштабирование моего изображения до большего размера, где работает HoughLines() по умолчанию, если я не могу заставить параметры расстояния линии работать.


Ответ: Моя проблема была я не понимал Mat возвращенного HoughLinesP() был в другом формате, чем тот, возвращенный HoughLines(). Я преобразовал результаты из HoughLinesP() из полярных координат, когда они уже были в координатах XY! Оказывается, HoughLinesP() намного превосходит наши потребности, и его параметры отлично подходят для настройки длины линии. Вот ссылка, которая помогла мне увидеть ошибки моего пути: https://dsp.stackexchange.com/questions/10467/influence-of-image-size-to-edge-detection-in-opencv

+0

Я не знаю, как установить эти значения, но я могу предложить другой подход: с помощью строки-сегментные- Детектор: http://www.ipol.im/pub/art/2012/gjmr-lsd/ – GilLevi

ответ

1

Очень хороший пример можно найти здесь: http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/hough_lines/hough_lines.html

Попробуйте использовать CV_PI вместо Math.PI? Другие причины могут быть из-за вашего порога. Попробуйте вставить значение как 50 (поиграйте с цифрами). Последние 2 значения, u можете попытаться оставить его равным нулю и проверить его сначала, прежде чем вставлять значения. Значения по умолчанию для последних 2 обычно равны нулю.

Могло быть много причин, почему его не работает, поэтому давайте медленно находим причину по одному. Кроме того, вы сделали Canny это или что-то еще до того, как вы применили Hough?

Надежда, что помогает, дайте мне знать, если мои предложения полезны и помогли (:. Приветствия

+0

Спасибо за предложения, но я отказался от использования параметров длины строки Hough. Вместо этого мы просто сделали немного больше изображений pre -обработка для уменьшения шума вокруг линий, которые мы хотели: вычитание фона с помощью маскирования, Canny, Gaussian, Contours, approxPoly и т. д. Мы изменили порог, который помог - начать около 100 и каждый раз уменьшать каждый цикл до тех пор, пока он не найдет требуемое количество линий/пересечений/перпендикуляров. – medloh

+0

Что отличает между CV_PI и Math.PI ?? –

Смежные вопросы