Для изображения это простое ядро свертки, подобное следующему, хорошо найдет ребра:
[-1 2 - 1]
Это дает один краевой пиксель в каждой краевой точке. Нет суеты, нет суеты. Кэнни слишком вовлечен в эту проблему. Если вы хотите найти граничные точки для линий под любым углом, то вы можете использовать простой лапласиан, лапласиан гауссов (LoG) или разность гауссов (DoG). Sobel и Prewitt также просты, но неуместны, поскольку они дают линию «двойной толщины».
Здесь описана злая быстрая реализация Hough:
http://www.ic.uff.br/~laffernandes/projects/kht/index.html.
Существуют также алгоритмы «без параметров», которые очень быстры, но немного сложны в реализации и отладке.