A good approach for detecting lines in an image?
I would try to use a skeleton representation of the image. The problem with your canny, here, is that it basically results in two lines because of the width of the line. Then I would apply the Hough transform on it.