Canny Edge Detection is considered to be a better (In False Alarm sense) edge detection than those you mentioned.
This is, mainly, due to 2 steps:
Non Maximum Suppression - Edges candidates which are not dominant in their neighborhood aren't considered to be edges.
Hysteresis Process - While moving along the candidates, given a candidate which is in the ...
Your statement that the Hough transform (HT) needs to be applied on a binary image is not true. The original HT indeed was formulated that way, though in the meanwhile different authors extended the HT in numerous ways -- for example, to consider the gray scale values of each image pixel. As a consequence, the step of edge detection can be omitted.
Canny's original paper addressed the issue of ridge edges and roof edges in addition to step edges, but I'm unaware of any implementation of "Canny" edge detection that detects anything other than step edges. Canny's paper is a pretty easy read, but, unfortunately, paywalled. J. Canny, "A computational approach to edge detection", IEEE Trans. Pattern ...
I ran the following code:
mI = im2double(imread('bCfdb.png')); %<! Loading the image
vBlurStd = [0, 0.1, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2];
mII = sum(cat(3, 0.299, 0.587, 0.114) .* mI, 3); %<! Y (Luminosity like channel)
hFigure = figure('Position', [100, 100, 1200, 900]);
hTiledChartLayout = tiledlayout(3, 3);
kk = 0;
for ii =...
You should play around with the many parameters of the Canny() and HoughLinesP() functions before resorting to changing the image size.
The prototype for Canny() is:
void Canny(InputArray image, OutputArray edges,
double threshold1, double threshold2,
int apertureSize=3, bool L2gradient=false )
You should play with the threshold1, ...
Following my comment I suggest you a "dumb" heuristic you could try : Consider your images row-wise. Extract a few features from each row, these could be average RGB value, RGB covariance matrix, entropy etc ... Use a simple clustering algorithm to separate your image into 2 parts : the upper one and the lower one. Let's assume the heuristic has been ...
1) Matching lines across multiple views is a common research problem and is reasonably well studied:
If you have the end points for example : http://cmp.felk.cvut.cz/~werner/software/lmatch/lmatch_memo.pdf
Even tough this deals with more geometric properties, if your scenes are well conditioned, you could as well use the gradient/intensity information to ...