Несколько предложений. Я предполагаю, что красная область вводится мышью, и теперь у вас есть маска области, которую вы хотите включить в поиск края.
Мой предложенный алгоритм
1. Do Edge detection
2. Write your own Hough routine but only count edges if they should be included according to the mask.
3. Pick the edge with the best score in the Hough space.
Конечно, вам не нужно запускать обнаружение краев на полном изображении, но если вы не уверены, что обрабатываете границу области поиска (поэтому вы не получите там края). Простое отражение области может работать.
Обновление
Хорошо, другой подход:
Используйте процедуры hough
в matlab. houghlines
, hough
, houghpeaks
- соответствующие функции. Если только одна линия пересекает область вашего интереса, все готово. Строка - это результат, который вы хотите.
Если более чем одна линия пересекает область интереса, вам нужно сделать немного больше. Я бы посоветовал подсчитать количество пикселей вдоль линии в пределах ROI. Таким образом, если линия пересекает область интереса для 10 пикселей, оценка этой линии равна 10. Сделайте это для всех линий, а затем выберите линию с наибольшим результатом.
Обратите внимание, что ни один из подходов не оптимизирован по скорости. Однако их легко понять.