1 function test_hough_gradient(images_path, image_name, use_edges_mask)
2 i = imread([images_path image_name]);
5 green_filtered = imgaussfilt(green, 1.0);
7 edges = zeros(size(green));
9 otsu = ~im2bw(green_filtered, graythresh(green_filtered));
10 se = strel('rectangle', [3 3]);
11 edges = imdilate(otsu, se) - imerode(otsu, se);
14 s = [-1 0 1; -2 0 2; -1 0 1];
15 x_edge = conv2(cast(green_filtered, 'double'), s , 'valid');
16 y_edge = conv2(cast(green_filtered, 'double'), s', 'valid');
18 magnitudes = sqrt(x_edge .^ 2 + y_edge .^ 2);
21 magnitudes(~edges(2:end-1, 2:end-1)) = 0;
24 disp('Applying Houg...');
26 [acc_votes, acc_radius] = HTCircleGradient(magnitudes, [25, 35]);
29 disp('Finding ellipses...');
31 ellipses = find_ellipses(acc_votes, acc_radius);
34 name = ['Hough gradient - ' image_name];
36 name = [name ' (with edges)'];
39 show_figures(name, {...
40 {green_filtered, 'original filtered with a gaussian, sigma=1'},...
41 {edges, 'edges (otsu -> dilate - erode)'},...
42 {magnitudes, 'magnitudes'},...
43 {expand_matrix(acc_votes), 'votes'}}, green, ellipses);