Para uma imagem tão simples, um kernel de convolução como o seguinte encontrará as bordas muito bem:
[-1 2 - 1]
Isso gera um único pixel de borda em cada ponto de borda. Sem confusão, sem confusão. Canny está muito envolvido para esse problema. Se você deseja encontrar pontos de aresta para linhas em qualquer ângulo, use um Laplaciano simples, um Laplaciano de Gaussiano (LoG) ou Diferença de Gaussiano (DoG). Sobel e Prewitt também são simples, mas inadequados, pois produzem uma linha de "espessura dupla".
Há uma implementação rápida e maliciosa de Hough descrita aqui:
http://www.ic.uff.br/~laffernandes/projects/kht/index.html
Existem também algoritmos "Hough sem parâmetros" que são muito rápidos, mas um pouco complicados de implementar e depurar.