X-Git-Url: http://git.euphorik.ch/?a=blobdiff_plain;f=src%2FTests_hough%2Ftest_hough_gradient.m;fp=src%2FTests_hough%2Ftest_hough_gradient.m;h=15ca92b6b1cf2e1a227bd65d678b536a246b32e7;hb=0ff8fb82457bd5a858b2218ab07f69c81323537e;hp=0000000000000000000000000000000000000000;hpb=c6fe9d606eff98fc73b75f23e02a9fd436458ed0;p=master-thesis.git diff --git a/src/Tests_hough/test_hough_gradient.m b/src/Tests_hough/test_hough_gradient.m new file mode 100644 index 0000000..15ca92b --- /dev/null +++ b/src/Tests_hough/test_hough_gradient.m @@ -0,0 +1,45 @@ +function test_hough_gradient(images_path, image_name, use_edges_mask) + i = imread([images_path image_name]); + + green = i(:,:,2); + green_filtered = imgaussfilt(green, 1.0); + + edges = zeros(size(green)); + if use_edges_mask + otsu = ~im2bw(green_filtered, graythresh(green_filtered)); + se = strel('rectangle', [3 3]); + edges = imdilate(otsu, se) - imerode(otsu, se); + end + + s = [-1 0 1; -2 0 2; -1 0 1]; + x_edge = conv2(cast(green_filtered, 'double'), s , 'valid'); + y_edge = conv2(cast(green_filtered, 'double'), s', 'valid'); + + magnitudes = sqrt(x_edge .^ 2 + y_edge .^ 2); + + if use_edges_mask + magnitudes(~edges(2:end-1, 2:end-1)) = 0; + end + + disp('Applying Houg...'); + tic + [acc_votes, acc_radius] = HTCircleGradient(magnitudes, [25, 35]); + toc + + disp('Finding ellipses...'); + tic + ellipses = find_ellipses(acc_votes, acc_radius); + toc + + name = ['Hough gradient - ' image_name]; + if use_edges_mask + name = [name ' (with edges)']; + end + + show_figures(name, {... + {green_filtered, 'original filtered with a gaussian, sigma=1'},... + {edges, 'edges (otsu -> dilate - erode)'},... + {magnitudes, 'magnitudes'},... + {expand_matrix(acc_votes), 'votes'}}, green, ellipses); +end +