From 0ff8fb82457bd5a858b2218ab07f69c81323537e Mon Sep 17 00:00:00 2001 From: Greg Burri Date: Mon, 23 Nov 2015 11:33:25 +0100 Subject: [PATCH] Add some tests on different variations of Hough algorithm. --- .../ma_autocount/plasmodium-autocount-0.1.py | 122 +++++++++++------- src/Tests_hough/HTCircle.m | 42 ++++++ src/Tests_hough/HTCircleGradient.m | 42 ++++++ src/Tests_hough/HTCircleMa.m | 41 ++++++ src/Tests_hough/HTEllipse.m | 56 ++++++++ src/Tests_hough/HTEllipse2.m | 75 +++++++++++ src/Tests_hough/draw_ellipses.m | 44 +++++++ src/Tests_hough/expand_matrix.m | 4 + src/Tests_hough/find_ellipses.m | 60 +++++++++ src/Tests_hough/images/heap_1.png | Bin 0 -> 46491 bytes src/Tests_hough/images/rbc_single.png | Bin 0 -> 7746 bytes src/Tests_hough/images/rbc_single_blurred.png | Bin 0 -> 11307 bytes .../images/rbc_single_oblong_1.png | Bin 0 -> 11315 bytes .../images/rbc_single_oblong_2.png | Bin 0 -> 14734 bytes .../images/rbc_single_oblong_3.png | Bin 0 -> 10041 bytes src/Tests_hough/images/two_rbc_1.png | Bin 0 -> 16133 bytes src/Tests_hough/images/two_rbc_2.png | Bin 0 -> 15460 bytes src/Tests_hough/images/two_rbc_3.png | Bin 0 -> 16004 bytes src/Tests_hough/images/wbc_1.png | Bin 0 -> 28298 bytes src/Tests_hough/images/wbc_2.png | Bin 0 -> 19008 bytes src/Tests_hough/results/notes.txt | 0 src/Tests_hough/show_figures.m | 9 ++ src/Tests_hough/show_image_ellipses.m | 11 ++ src/Tests_hough/show_votes_figure.m | 26 ++++ src/Tests_hough/test_all.m | 38 ++++++ src/Tests_hough/test_hough_ellipses.m | 22 ++++ src/Tests_hough/test_hough_ellipses2.m | 49 +++++++ src/Tests_hough/test_hough_gradient.m | 45 +++++++ src/Tests_hough/test_hough_ma.m | 49 +++++++ src/Tests_hough/test_hough_simple.m | 22 ++++ 30 files changed, 707 insertions(+), 50 deletions(-) create mode 100644 src/Tests_hough/HTCircle.m create mode 100644 src/Tests_hough/HTCircleGradient.m create mode 100644 src/Tests_hough/HTCircleMa.m create mode 100644 src/Tests_hough/HTEllipse.m create mode 100644 src/Tests_hough/HTEllipse2.m create mode 100644 src/Tests_hough/draw_ellipses.m create mode 100644 src/Tests_hough/expand_matrix.m create mode 100644 src/Tests_hough/find_ellipses.m create mode 100644 src/Tests_hough/images/heap_1.png create mode 100644 src/Tests_hough/images/rbc_single.png create mode 100644 src/Tests_hough/images/rbc_single_blurred.png create mode 100644 src/Tests_hough/images/rbc_single_oblong_1.png create mode 100644 src/Tests_hough/images/rbc_single_oblong_2.png create mode 100644 src/Tests_hough/images/rbc_single_oblong_3.png create mode 100644 src/Tests_hough/images/two_rbc_1.png create mode 100644 src/Tests_hough/images/two_rbc_2.png create mode 100644 src/Tests_hough/images/two_rbc_3.png create mode 100644 src/Tests_hough/images/wbc_1.png create mode 100644 src/Tests_hough/images/wbc_2.png create mode 100644 src/Tests_hough/results/notes.txt create mode 100644 src/Tests_hough/show_figures.m create mode 100644 src/Tests_hough/show_image_ellipses.m create mode 100644 src/Tests_hough/show_votes_figure.m create mode 100644 src/Tests_hough/test_all.m create mode 100644 src/Tests_hough/test_hough_ellipses.m create mode 100644 src/Tests_hough/test_hough_ellipses2.m create mode 100644 src/Tests_hough/test_hough_gradient.m create mode 100644 src/Tests_hough/test_hough_ma.m create mode 100644 src/Tests_hough/test_hough_simple.m diff --git a/Documentation/ma_autocount/plasmodium-autocount-0.1.py b/Documentation/ma_autocount/plasmodium-autocount-0.1.py index b2fa3d2..d97e059 100644 --- a/Documentation/ma_autocount/plasmodium-autocount-0.1.py +++ b/Documentation/ma_autocount/plasmodium-autocount-0.1.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- #!/usr/bin/env python # Copyright (C) 2010 Monash University @@ -23,7 +24,6 @@ Identify red blood cells and red blood cells infected with plasmodium in a set o """ from PIL import Image - import sys, numpy, os, random from scipy import ndimage @@ -58,20 +58,32 @@ N_processors = 1 # # What to show in diagnostic output images -Show_edges = False +Show_edges = True Show_stain = False Show_infection = False -Show_hand_marks = True +Show_hand_marks = False Show_computer_marks = True -Show_cell_shapes = False +Show_cell_shapes = True # ================= # Image scaling -Resize_width = 680 -Resize_height = 512 +Resize = False + +# Tailles pour les images dans '08.10.2015' +Resize_width = 1296 #680 +Resize_height = 972 #512 + +# Tailles pour les images dans '22.05.2015' (50%) +#Resize_width = 1296 +#Resize_height = 972 + + +# [GB] Hemato +# Resize_width = 2864 +# Resize_height = 2885 # ========================================== @@ -109,7 +121,7 @@ Infection_pixels_required = 1 # Size of cells, for Hough transform Hough_min_radius = 5 -Hough_max_radius = 20 +Hough_max_radius = 32 # 20 # Portion of cell used for classification as infected/weird # (may be abutting an infected cell, so be cautious) @@ -117,7 +129,7 @@ Hough_max_radius = 20 Cell_inside_radius = 0.9 # Do not allow another cell center to be detected within this radius -Cell_suppression_radius = 1.25 +Cell_suppression_radius = 1.05 # 1.25 # ======================= @@ -127,17 +139,13 @@ Cell_suppression_radius = 1.25 Max_dark_stain_proportion = 0.728 # Minimum/maximum radius (as determined by Hough transform) -Min_cell_radius = 9 -Max_cell_radius = 20 +Min_cell_radius = 11 # 9 +Max_cell_radius = 32 # 20 # Proportion of radius that center of mass can be away from Hough determined center Max_offcenter = 0.5 - - - - _offset_cache = { } def offsets(inner_radius, outer_radius): """ @@ -244,14 +252,14 @@ def process(filename_in, filename_out, filename_coords, name): print 'Processing', filename_in, '->', filename_out # Resize (mostly done for speed increase) - i = i.resize((Resize_width,Resize_height), Image.ANTIALIAS) + i = i.resize((Resize_width,Resize_height), Image.ANTIALIAS) if Resize else i # Convert to numpy array - a = numpy.asarray(i).astype('float64') + a = numpy.asarray(i).astype('float64') # [GB] Shape: (512, 680, 3) height = a.shape[0] width = a.shape[1] - a_gray = numpy.sum(a, 2) + a_gray = numpy.sum(a, 2) # [GB] Somme de chaque composante RGB (non-normalisé) # Make a copy of the array to doodle various diagnostic markings on a_output = a.copy() @@ -262,33 +270,39 @@ def process(filename_in, filename_out, filename_coords, name): # Denoise/unsharp mask - a_enhanced = gaussian_blur(a, Enhance_a) - Enhance_b*gaussian_blur(a,Enhance_c) - + # [GB] (Concerne les trois channels RGB). + a_enhanced = gaussian_blur(a, Enhance_a) - Enhance_b * gaussian_blur(a, Enhance_c) # Split into foreground and background using k-medians status('fg/bg') + # [GB] Chaque canal de couleur est linéarisé dans un tableau. a_raveled = numpy.reshape(a_enhanced,(width*height,a_enhanced.shape[2])) - average = numpy.average(a_raveled, axis=0) - # Initial guess - color_bg = average*1.5 - color_fg = average*0.5 + # [GB] Moyenne de chaque canal. + average = numpy.average(a_raveled, axis=0) + + # Initial guess of the medians + color_bg = average * 1.5 # [GB] Plus clair + color_fg = average * 0.5 # [GB] Plus sombre + + # Fifty times: (0 to 4). for i in xrange(5): - d_bg = a_raveled-color_bg[None,:] + d_bg = a_raveled - color_bg[None,:] d_bg *= d_bg - d_bg = numpy.sum(d_bg,1) - d_fg = a_raveled-color_fg[None,:] + d_bg = numpy.sum(d_bg, 1) # [GB] Somme des carrés des couleurs + d_fg = a_raveled - color_fg[None,:] d_fg *= d_fg - d_fg = numpy.sum(d_fg,1) - fg = d_fg*Background_weight < d_bg - color_fg = numpy.median(a_raveled[fg,:],axis=0) + d_fg = numpy.sum(d_fg, 1) + fg = d_fg * Background_weight < d_bg + color_fg = numpy.median(a_raveled[fg,:],axis=0) # [GB] axis = 0 -> par colonne (ordonnées). Le résultat est alors 3 valeurs, une pour chaque couleur color_bg = numpy.median(a_raveled[~fg,:],axis=0) - - fg = numpy.reshape(fg, (height,width)) + + fg = numpy.reshape(fg, (height,width)) # [GB] Image binaire du premier plan. - edge = ndimage.maximum_filter(fg,size=3) != ndimage.minimum_filter(fg,size=3) + edge = ndimage.maximum_filter(fg,size=3) != ndimage.minimum_filter(fg,size=3) # [GB] image binaire des contours du premier plan. + # [GB] délinéarisation des tableaux résultant du k-median (niveau de gris). d_fg = numpy.sqrt(numpy.reshape(d_fg, (height,width))) d_bg = numpy.sqrt(numpy.reshape(d_bg, (height,width))) @@ -298,10 +312,15 @@ def process(filename_in, filename_out, filename_coords, name): # (should be invariant under changes in brightness) mag_bg = numpy.average(color_bg) + # [GB] Les "dark stain" : + # * sont d'une intensité plus élevée que la moyenne du bg multiplié par un facteur (Dark_stain_level) + # * les valeurs rouges sont plus petites que la mediane du premier-plan pour les rouges + # * les valeurs vertes sont plus petites que la médiane du premier-plan pour les verts + # * appartiennent au foreground dark_stain = ( (d_fg > mag_bg*Dark_stain_level) & - (a_enhanced[:,:,0] < color_fg[0]) & - (a_enhanced[:,:,1] < color_fg[1]) & + (a_enhanced[:,:,0] < color_fg[0]) & # [GB] Red channel + (a_enhanced[:,:,1] < color_fg[1]) & # [GB] Green channel fg ) @@ -332,6 +351,8 @@ def process(filename_in, filename_out, filename_coords, name): if Show_infection: a_output[infection,0] += 128 + #a_output[stain, 1] += 128 + # Hough transform status('hough') @@ -409,9 +430,11 @@ def process(filename_in, filename_out, filename_coords, name): candidates = [ ] for y in xrange(height): for x in xrange(width): - if hough[y,x] > thresh: - candidates.append((hough[y,x],y,x)) - candidates.sort(reverse=True) + if hough[y, x] > thresh: + candidates.append((hough[y,x], y, x)) + candidates.sort(reverse = True) + hough + status('classify') @@ -420,21 +443,20 @@ def process(filename_in, filename_out, filename_coords, name): suppress = numpy.zeros((height,width), 'bool') claim_strength = numpy.zeros((height,width), 'float64') + 1e30 - cells = [ ] # [(y,x)] + cells = [] # [(y,x)] n = 0 n_infected = 0 - n_late = 0 for _,y,x in candidates: radius = hough_radius[y,x] - + # Make sure candidate is not near a previously detected cell, # and does not abut the edge of the image if not suppress[y,x] and \ y >= radius and x >= radius and y < height-radius and x < width-radius: - coords = clipped_coordinates(0,radius*Cell_inside_radius, y,x,height,width) + coords = clipped_coordinates(0, radius * Cell_inside_radius, y, x, height, width) #Only include foreground - this_fg = fg[coords[:,0],coords[:,1]] + this_fg = fg[coords[:,0], coords[:,1]] # [GB] Booleans coords = coords[this_fg] this_strength = ((coords[:,0]-y)**2 + (coords[:,1]-x)**2) @@ -443,13 +465,12 @@ def process(filename_in, filename_out, filename_coords, name): this_strength ) - cells.append((y,x, coords,this_strength)) + cells.append((y, x, coords, this_strength)) - + # Suppress detection of cells too close to here - # (note: we do this irrespective of whether we treated this location as a hit) - - coords = clipped_coordinates(0,radius*Cell_suppression_radius, y,x,height,width) + # (note: we do this irrespective of whether we treated this location as a hit) + coords = clipped_coordinates(0,radius * Cell_suppression_radius, y,x,height,width) suppress[coords[:,0],coords[:,1]] = True #for oy, ox in offsets(0, radius*Cell_suppression_radius): #suppression_offsets: @@ -525,17 +546,18 @@ def process(filename_in, filename_out, filename_coords, name): color = (0,0,255) file_coords.write('%d,%d,Uninfected\n' % (x,y)) + if Show_cell_shapes: + a_output[coords[:,0],coords[:,1]] += [[ random.random()*64+32 for i in (0,1,2) ]] + # Mark detected cell on output image if Show_computer_marks: - set(a_output,y,x,color) + set(a_output, y, x, color) for i in xrange(1,3): set(a_output,y-i,x,color) set(a_output,y+i,x,color) set(a_output,y,x-i,color) set(a_output,y,x+i,color) - if Show_cell_shapes: - a_output[coords[:,0],coords[:,1]] += [[ random.random()*64+32 for i in (0,1,2) ]] diff --git a/src/Tests_hough/HTCircle.m b/src/Tests_hough/HTCircle.m new file mode 100644 index 0000000..3088c24 --- /dev/null +++ b/src/Tests_hough/HTCircle.m @@ -0,0 +1,42 @@ +% Hough Transform for circles. +% img : logical image, zeros are the circles edges +% radius_range is a vector : [min, max] +function [acc_votes, acc_radius] = HTCircle(img, radius_range) + + [rows, columns] = size(img); + + acc_votes = zeros(rows, columns); + acc_radius = zeros(rows, columns); + + phi_range = linspace(0, 2 * pi, 100); + phi_range(end) = []; + + indexes_non_zero = find(img)'; + s = size(img); + + for r = radius_range(1):radius_range(2) + acc = zeros(rows, columns); + for i = indexes_non_zero + [y, x] = ind2sub(s, i); + for phi = phi_range + x0 = round(x - r * cos(phi)); + y0 = round(y - r * sin(phi)); + if x0 < columns && x0 > 0 && y0 < rows && y0 > 0 + acc(y0, x0) = acc(y0, x0) + 1; + end + end + end + + for x = 1:columns + for y = 1:rows + if acc(y, x) > acc_votes(y, x) + acc_votes(y, x) = acc(y, x); + acc_radius(y, x) = r; + end + end + end + end + + acc_votes = imgaussfilt(acc_votes, 1.0); +end + diff --git a/src/Tests_hough/HTCircleGradient.m b/src/Tests_hough/HTCircleGradient.m new file mode 100644 index 0000000..fe20e20 --- /dev/null +++ b/src/Tests_hough/HTCircleGradient.m @@ -0,0 +1,42 @@ +% Hough Transform for circles with gradient. +% img : gradient image +% radius_range is a vector : [min, max] +function [acc_votes, acc_radius] = HTCircleGradient(img, radius_range) + + [rows, columns] = size(img); + + acc_votes = zeros(rows, columns); + acc_radius = zeros(rows, columns); + + phi_range = linspace(0, 2 * pi, 100); + phi_range(end) = []; + + indexes_non_zero = find(img)'; + s = size(img); + + for r = radius_range(1):radius_range(2) + acc = zeros(rows, columns); + for i = indexes_non_zero + [y, x] = ind2sub(s, i); + for phi = phi_range + x0 = round(x - r * cos(phi)); + y0 = round(y - r * sin(phi)); + if x0 < columns && x0 > 0 && y0 < rows && y0 > 0 + acc(y0, x0) = acc(y0, x0) + img(y, x); + end + end + end + + for x = 1:columns + for y = 1:rows + if acc(y, x) > acc_votes(y, x) + acc_votes(y, x) = acc(y, x); + acc_radius(y, x) = r; + end + end + end + end + + acc_votes = imgaussfilt(acc_votes, 1.0); +end + diff --git a/src/Tests_hough/HTCircleMa.m b/src/Tests_hough/HTCircleMa.m new file mode 100644 index 0000000..3afa97f --- /dev/null +++ b/src/Tests_hough/HTCircleMa.m @@ -0,0 +1,41 @@ +% Hough Transform for circles. +% x_dir : the x component of the normalized gradient +% y_dir : the y component of the normalized gradient +% edges : a binary image with edge = 1 +% radius_range is a vector : [min, max] +function [acc_votes, acc_radius] = HTCircleMa(x_dir, y_dir, edges, radius_range) + + [rows, columns] = size(edges); + + acc_votes = zeros(rows, columns); + acc_radius = zeros(rows, columns); + + indexes_edges = find(edges)'; + s = size(edges); + + for r = radius_range(1):radius_range(2) + acc = zeros(rows, columns); + for i = indexes_edges + [y, x] = ind2sub(s, i); + + x0 = round(x + x_dir(i) * r); + y0 = round(y + y_dir(i) * r); + + if x0 < columns && x0 > 0 && y0 < rows && y0 > 0 + acc(y0, x0) = acc(y0, x0) + 1; + end + end + + for x = 1:columns + for y = 1:rows + if acc(y, x) > acc_votes(y, x) + acc_votes(y, x) = acc(y, x); + acc_radius(y, x) = r; + end + end + end + end + + acc_votes = imgaussfilt(acc_votes, 1.0); +end + diff --git a/src/Tests_hough/HTEllipse.m b/src/Tests_hough/HTEllipse.m new file mode 100644 index 0000000..908f230 --- /dev/null +++ b/src/Tests_hough/HTEllipse.m @@ -0,0 +1,56 @@ +% Hough Transform for circles. +% img : logical image, zeros are the circles edges +% radius_range is a vector : [min, max] +function [acc_votes, acc_radius1, acc_radius2, acc_alpha] = HTEllipse(img, radius_range) + + [rows, columns] = size(img); + + acc_votes = zeros(rows, columns); + acc_radius1 = zeros(rows, columns); + acc_radius2 = zeros(rows, columns); + acc_alpha = zeros(rows, columns); + + alpha_range = linspace(0, pi / 2, 8); + alpha_range(end) = []; + + phi_range = linspace(0, 2 * pi, 32); + phi_range(end) = []; + + indexes_non_zero = find(img)'; + s = size(img); + + for alpha = alpha_range + transform_mat = [cos(alpha) -sin(alpha); sin(alpha) cos(alpha)]; + for r1 = radius_range(1):radius_range(2) + for r2 = radius_range(1):radius_range(2) + acc = zeros(rows, columns); + for i = indexes_non_zero + [y, x] = ind2sub(s, i); + for phi = phi_range + p0 = [x; y] - transform_mat * [r1 * cos(phi); r2 * sin(phi)]; + x0 = round(p0(1)); + y0 = round(p0(2)); + + if x0 < columns && x0 > 0 && y0 < rows && y0 > 0 + acc(y0, x0) = acc(y0, x0) + 1; + end + end + end + + for x = 1:columns + for y = 1:rows + if acc(y, x) > acc_votes(y, x) + acc_votes(y, x) = acc(y, x); + acc_radius1(y, x) = r1; + acc_radius2(y, x) = r2; + acc_alpha(y, x) = alpha; + end + end + end + end + end + end + + acc_votes = imgaussfilt(acc_votes, 1.0); +end + diff --git a/src/Tests_hough/HTEllipse2.m b/src/Tests_hough/HTEllipse2.m new file mode 100644 index 0000000..bea1243 --- /dev/null +++ b/src/Tests_hough/HTEllipse2.m @@ -0,0 +1,75 @@ +% Hough Transform for circles. +% img : logical image, zeros are the circles edges +% radius_range is a vector : [min, max] +function [acc_votes, acc_radius1, acc_radius2, acc_alpha] = HTEllipse2(x_dir, y_dir, edges, radius_range) + + [rows, columns] = size(edges); + + acc_votes = zeros(rows, columns); + acc_radius1 = zeros(rows, columns); + acc_radius2 = zeros(rows, columns); + acc_alpha = zeros(rows, columns); + + alpha_range = linspace(0, pi / 2, 8); + alpha_range(end) = []; +% alpha_range = pi/8; + + indexes_edges = find(edges)'; + s = size(edges); + + for alpha = alpha_range + rot_mat = [cos(alpha) -sin(alpha); sin(alpha) cos(alpha)]; + rot_mat_inv = [cos(-alpha) -sin(-alpha); sin(-alpha) cos(-alpha)]; + for r1 = radius_range(1):radius_range(2) + for r2 = radius_range(1):radius_range(2) + acc = zeros(rows, columns); + for i = indexes_edges + [y, x] = ind2sub(s, i); + v = [-x_dir(i); -y_dir(i)]; + u = rot_mat_inv * v; + if u(1) == 0 + if u(2) > 0 + theta = pi / 2.; + else + theta = 3. * pi / 2.; + end + elseif u(2) == 0 + if u(1) > 0 + theta = 0; + else + theta = pi; + end + elseif u(2) < 0 + t = u(2) / u(1); + theta = 2*pi + 2 * atan(... + (-r1 - r2*t*sqrt((r1^2+r2^2*t^2)/(r2^2*t^2)))... + /(r2*t)); + else + t = u(2) / u(1); + theta = 2 * atan(... + (-r1 + r2*t*sqrt((r1^2+r2^2*t^2)/(r2^2*t^2)))... + /(r2*t)); + end + C = round([x; y] - rot_mat * [r1*cos(theta); r2*sin(theta)]); + if C(1) < columns && C(1) > 0 && C(2) < rows && C(2) > 0 + acc(C(2),C(1)) = acc(C(2),C(1)) + 1; + end + end + + for x = 1:columns + for y = 1:rows + if acc(y, x) > acc_votes(y, x) + acc_votes(y, x) = acc(y, x); + acc_radius1(y, x) = r1; + acc_radius2(y, x) = r2; + acc_alpha(y, x) = alpha; + end + end + end + end + end + end + + acc_votes = imgaussfilt(acc_votes, 1.0); +end + diff --git a/src/Tests_hough/draw_ellipses.m b/src/Tests_hough/draw_ellipses.m new file mode 100644 index 0000000..d793f4d --- /dev/null +++ b/src/Tests_hough/draw_ellipses.m @@ -0,0 +1,44 @@ +% center : [x y] +function draw_ellipses(axe, ellipses, plot_3d, plot_center) + if ~exist('plot_3d', 'var') + plot_3d = false; + end + + if ~exist('plot_center', 'var') + plot_center = false; + end + + hold on; + + if plot_3d + z_space = [0 1]; + else + z_space = [0]; + end + + for i = 1:length(ellipses) + e = ellipses{i}; + transform_mat = [cos(e.alpha) -sin(e.alpha); sin(e.alpha) cos(e.alpha)]; + + p_previous = []; + for phi = linspace(0, 2 * pi, 36); + for z = z_space + p = [e.x0; e.y0] + transform_mat * [e.r1 * cos(phi); e.r2 * sin(phi)]; % p : [x y] + if ~isempty(p_previous) + line = plot3(axe, [p(1) p_previous(1)], [p(2) p_previous(2)], [z z], 'LineWidth', 1, 'Color', 'yellow'); + line.Color(4) = 0.5; + end + if z == 1 + line = plot3(axe, [p(1) p(1)], [p(2) p(2)], [0 1], 'LineWidth', 0.5, 'Color', 'yellow'); + line.Color(4) = 0.5; + end + end + p_previous = p; + end + + if plot_center + plot(e.x0, e.y0, 'r.', 'MarkerSize', 20); + end + end +end + diff --git a/src/Tests_hough/expand_matrix.m b/src/Tests_hough/expand_matrix.m new file mode 100644 index 0000000..b165902 --- /dev/null +++ b/src/Tests_hough/expand_matrix.m @@ -0,0 +1,4 @@ +function [m] = expand_matrix(m) + m = [m(:,1) m m(:,end)]; + m = [m(1,:); m; m(end,:)]; +end \ No newline at end of file diff --git a/src/Tests_hough/find_ellipses.m b/src/Tests_hough/find_ellipses.m new file mode 100644 index 0000000..4c5e7a0 --- /dev/null +++ b/src/Tests_hough/find_ellipses.m @@ -0,0 +1,60 @@ +function [ellipses] = find_ellipses(acc_votes, acc_radius_1, acc_radius_2, acc_alpha) + if ~exist('acc_radius_2', 'var') + acc_radius_2 = acc_radius_1; + end + + if ~exist('acc_alpha', 'var') + acc_alpha = zeros(size(acc_votes)); + end + + ellipses = {}; % struct('x0', 'y0', 'r1', 'r2', 'alpha') + max_votes = max(acc_votes(:)); + min_votes = min(acc_votes(:)); + threshold_votes = (max_votes - min_votes) * 0.7 + min_votes; + + acc_votes_suppressed = acc_votes; + while true + [votes, index_max] = max(acc_votes_suppressed(:)); + if votes <= threshold_votes + break; + end + + acc_votes_suppressed(index_max) = 0; % Suppress the vote. + + [y, x] = ind2sub(size(acc_votes_suppressed), index_max); + + % If the center ellipse isn't in a known ellipse then add it to 'ellipses'. + accept_ellipse = true; + for i = 1:length(ellipses) + ellipse = ellipses{i}; +% module = sqrt((x - ellipse.x)^2 + (y - ellipse.y)^2); +% phi = asin((y - ellipse.y) / module); +% +% p = [cos(a) -sin(a); sin(a) cos(a)] * [ellipse.r1 * cos(phi); ellipse.r2 * sin(phi)]; +% module_ellipse = sqrt(p(1)^2 + p(2)^2); + + a = ellipse.alpha; + x0 = ellipse.x0; + y0 = ellipse.y0; + r1 = ellipse.r1; + r2 = ellipse.r2; + n = ((x - x0) * cos(a) + (y - y0) * sin(a))^2 / r1^2 + ((x - x0) * sin(a) - (y - y0) * cos(a))^2 / r2^2; + if n <= 1 + accept_ellipse = false; + break; + end + end + + if accept_ellipse + e = struct(... + 'x0', x,... + 'y0', y,... + 'r1', acc_radius_1(index_max),... + 'r2', acc_radius_2(index_max),... + 'alpha', acc_alpha(index_max)); + ellipses{end+1} = e; + fprintf('Ellipse : (x0: %.1f, y0: %.1f, r1: %.1f, r2: %.1f, alpha: %.2f)\n', e.x0, e.y0, e.r1, e.r2, e.alpha); + end + end +end + diff --git a/src/Tests_hough/images/heap_1.png b/src/Tests_hough/images/heap_1.png new file mode 100644 index 0000000000000000000000000000000000000000..beaea3c07f0d613d1e32f6cf5130097a7943716e GIT binary patch literal 46491 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 literal 0 HcmV?d00001 diff --git a/src/Tests_hough/images/rbc_single.png b/src/Tests_hough/images/rbc_single.png new file mode 100644 index 0000000000000000000000000000000000000000..dc9424afc83aa600623c8d32959427047b4a275c GIT binary patch literal 7746 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%0A{+HcCMw<4a1B@o!3IxP@NoXSq`~pOA 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 IM6N<$f=1BL{Qv*} literal 0 HcmV?d00001 diff --git a/src/Tests_hough/images/rbc_single_blurred.png b/src/Tests_hough/images/rbc_single_blurred.png new file mode 100644 index 0000000000000000000000000000000000000000..77afb77a5824674ee2c9f8b88b77d7c8a4684243 GIT binary patch literal 11307 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 literal 0 HcmV?d00001 diff --git a/src/Tests_hough/images/rbc_single_oblong_1.png b/src/Tests_hough/images/rbc_single_oblong_1.png new file mode 100644 index 0000000000000000000000000000000000000000..549488a15d89298eb4242b2038c2bdd39b050581 GIT binary patch literal 11315 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 literal 0 HcmV?d00001 diff --git a/src/Tests_hough/images/rbc_single_oblong_2.png b/src/Tests_hough/images/rbc_single_oblong_2.png new file mode 100644 index 0000000000000000000000000000000000000000..4fb2fb6a716c8384ec175d8a9c0053be5b5cf198 GIT binary patch literal 14734 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 P00000NkvXXu0mjfT0-C< literal 0 HcmV?d00001 diff --git a/src/Tests_hough/images/two_rbc_1.png b/src/Tests_hough/images/two_rbc_1.png new file mode 100644 index 0000000000000000000000000000000000000000..bb67d0d5e56aac58a694c7ea7f380a4d539368e4 GIT binary patch literal 16133 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 XGcjja_DwB|00000NkvXXu0mjf&R)Sr literal 0 HcmV?d00001 diff --git a/src/Tests_hough/images/two_rbc_2.png b/src/Tests_hough/images/two_rbc_2.png new file mode 100644 index 0000000000000000000000000000000000000000..23f68b12c6ada085625b82f266228450e66e903a GIT binary patch literal 15460 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

}IGcqKQ3o8w}f=kP*v$%`z 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

%G8ry(p}CigI;9@QtggF$kqo-dbw95&35u%| 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 ZzyNK_&NFPQ?$H1M002ovPDHLkV1lc_AZ-8u literal 0 HcmV?d00001 diff --git a/src/Tests_hough/images/wbc_2.png b/src/Tests_hough/images/wbc_2.png new file mode 100644 index 0000000000000000000000000000000000000000..611bd3ad5307719d49adca9b15a406c05c3ed43f GIT binary patch literal 19008 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℞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 literal 0 HcmV?d00001 diff --git a/src/Tests_hough/results/notes.txt b/src/Tests_hough/results/notes.txt new file mode 100644 index 0000000..e69de29 diff --git a/src/Tests_hough/show_figures.m b/src/Tests_hough/show_figures.m new file mode 100644 index 0000000..ed6de4e --- /dev/null +++ b/src/Tests_hough/show_figures.m @@ -0,0 +1,9 @@ +function [hlink] = show_figures(name, images, original, ellipses) + [hlink, axes] = show_votes_figure(name, images); + draw_ellipses(axes(4), ellipses, true); + savefig(['results/' name '.fig']); + + show_image_ellipses(name, original, ellipses); + savefig(['results/' name ' - output.fig']); +end + diff --git a/src/Tests_hough/show_image_ellipses.m b/src/Tests_hough/show_image_ellipses.m new file mode 100644 index 0000000..229d524 --- /dev/null +++ b/src/Tests_hough/show_image_ellipses.m @@ -0,0 +1,11 @@ +function show_image_ellipses(name, img, ellipses) + f = figure; + f.Position = [10 10 700 700]; + f.Name = name; + grayscale = linspace(0, 1, 255); + colormap([grayscale' grayscale' grayscale']); + image(img); + axis image; + draw_ellipses(f.CurrentAxes, ellipses, false, true); +end + diff --git a/src/Tests_hough/show_votes_figure.m b/src/Tests_hough/show_votes_figure.m new file mode 100644 index 0000000..f6856d4 --- /dev/null +++ b/src/Tests_hough/show_votes_figure.m @@ -0,0 +1,26 @@ +function [hlink, axes] = show_votes_figure(name, images) + f = figure; + f.Name = name; + f.Position = [100 100 1300 900]; + + norm = @(A) (A - min(A(:)))/(max(A(:)) - min(A(:))); + + for i = 1:size(images, 2) + axes(i) = subplot(2, 2, i); + %colormap(hsv); + surf(norm(double(images{i}{1})), 'FaceColor','interp', 'FaceLighting', 'gouraud', 'EdgeColor', 'none'); + camlight left; + shading interp; + colormap(jet(10)) + axis tight; + title(images{i}{2}); + view(axes(i), [-39.5 70]); + end + + hlink = linkprop(axes, {'CameraPosition', 'CameraUpVector'}); + + rotate3d on; +end + + + diff --git a/src/Tests_hough/test_all.m b/src/Tests_hough/test_all.m new file mode 100644 index 0000000..5348923 --- /dev/null +++ b/src/Tests_hough/test_all.m @@ -0,0 +1,38 @@ +clear; + +images_path = 'D:\Master Thesis\src\Tests_hough\images\'; +image_names = { +% 'heap_1.png' +% +% 'rbc_single.png' +% 'rbc_single_blurred.png' + +% 'rbc_single_oblong_1.png' + 'rbc_single_oblong_2.png' +% 'rbc_single_oblong_3.png' +% +% 'two_rbc_1.png' +% 'two_rbc_2.png' +% 'two_rbc_3.png' +% 'wbc_1.png' +% 'wbc_2.png' + }; + +for k = 1:length(image_names) + image_name = image_names{k}; + +% test_hough_simple(images_path, image_name); +% close all; + +% test_hough_gradient(images_path, image_name, false) +% close all; + +% test_hough_ma(images_path, image_name) +% close all; + +% test_hough_ellipses(images_path, image_name); +% close all; + + test_hough_ellipses2(images_path, image_name); +% close all; +end \ No newline at end of file diff --git a/src/Tests_hough/test_hough_ellipses.m b/src/Tests_hough/test_hough_ellipses.m new file mode 100644 index 0000000..490b67d --- /dev/null +++ b/src/Tests_hough/test_hough_ellipses.m @@ -0,0 +1,22 @@ +function test_hough_ellipses(images_path, image_name) + i = imread([images_path image_name]); + green = i(:,:,2); + green_filtered = imgaussfilt(double(green), 1.0); + edges = edge(green_filtered); + + disp('Applying Houg...'); + tic + [acc_votes, acc_radius1, acc_radius2, acc_alpha] = HTEllipse(edges, [20, 40]); + toc + + disp('Finding ellipses...'); + tic + ellipses = find_ellipses(acc_votes, acc_radius1, acc_radius2, acc_alpha); + toc + + show_figures(['Hough ellipses - ' image_name], {... + {green, 'original'},... + {green_filtered, 'original filtered with a gaussian, sigma=1'},... + {edges, 'edges (sobel)'},... + {expand_matrix(acc_votes), 'votes'}}, green, ellipses); +end \ No newline at end of file diff --git a/src/Tests_hough/test_hough_ellipses2.m b/src/Tests_hough/test_hough_ellipses2.m new file mode 100644 index 0000000..41be4a8 --- /dev/null +++ b/src/Tests_hough/test_hough_ellipses2.m @@ -0,0 +1,49 @@ +function test_hough_ellipses2(images_path, image_name) + i = imread([images_path image_name]); + + green = i(:,:,2); + green_filtered = imgaussfilt(green, 1.0); + otsu = ~im2bw(green_filtered, graythresh(green_filtered)); + + se = strel('rectangle', [3 3]); + edges = imdilate(otsu, se) - imerode(otsu, se); + + s = [-1 0 1; -2 0 2; -1 0 1]; + x_edge = conv2(double(green_filtered), s, 'valid'); + y_edge = conv2(double(green_filtered), s', 'valid'); + + magnitudes = sqrt(x_edge .^ 2 + y_edge .^ 2); + + % Unit gradient. + x_dir = x_edge ./ magnitudes; + y_dir = y_edge ./ magnitudes; + + disp('Applying Houg...'); + tic + [acc_votes, acc_radius1, acc_radius2, acc_alpha] = HTEllipse2(x_dir, y_dir, edges(2:end-1, 2:end-1), [20, 40]); + toc + + disp('Finding ellipses...'); + tic + ellipses = find_ellipses(acc_votes, acc_radius1, acc_radius2, acc_alpha); + toc + + name = ['Hough ellipses 2 - ' image_name]; + show_figures(name, {... + {green_filtered, 'original filtered with a gaussian, sigma=1'},... + {edges, 'edges (otsu -> dilate - erode)'},... + {expand_matrix(x_edge), 'composante x du gradient'},... + {expand_matrix(acc_votes), 'votes'}}, green, ellipses); + + f = figure; + img = green_filtered; + grayscale = linspace(0, 1, 255); + colormap([grayscale' grayscale' grayscale']); + img(~edges) = 0; + image(img); + axis image; + hold on; + [X, Y] = meshgrid(1:size(green, 2), 1:size(green, 1)); + quiver(X, Y, expand_matrix(x_dir), expand_matrix(y_dir), 'Color', 'yellow'); + savefig(['results/' name ' - gradient.fig']); +end \ No newline at end of file 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 + diff --git a/src/Tests_hough/test_hough_ma.m b/src/Tests_hough/test_hough_ma.m new file mode 100644 index 0000000..690d3b2 --- /dev/null +++ b/src/Tests_hough/test_hough_ma.m @@ -0,0 +1,49 @@ +function test_hough_ma(images_path, image_name) + i = imread([images_path image_name]); + + green = i(:,:,2); + green_filtered = imgaussfilt(green, 1.0); + otsu = ~im2bw(green_filtered, graythresh(green_filtered)); + + se = strel('rectangle', [3 3]); + edges = imdilate(otsu, se) - imerode(otsu, se); + + s = [-1 0 1; -2 0 2; -1 0 1]; + x_edge = conv2(double(green_filtered), s, 'valid'); + y_edge = conv2(double(green_filtered), s', 'valid'); + + magnitudes = sqrt(x_edge .^ 2 + y_edge .^ 2); + + % Unit gradient. + x_dir = x_edge ./ magnitudes; + y_dir = y_edge ./ magnitudes; + + disp('Applying Houg...'); + tic + [acc_votes, acc_radius] = HTCircleMa(x_dir, y_dir, edges(2:end-1, 2:end-1), [25, 35]); + toc + + disp('Finding ellipses...'); + tic + ellipses = find_ellipses(acc_votes, acc_radius); + toc + + name = ['Hough Ma - ' image_name]; + show_figures(name,... + {{green_filtered, 'original filtered with a gaussian, sigma=1'},... + {edges, 'edges (otsu -> dilate - erode)'},... + {expand_matrix(x_edge), 'composante x du gradient'},... + {expand_matrix(acc_votes), 'votes'}}, green, ellipses); + + f = figure; + img = green_filtered; + grayscale = linspace(0, 1, 255); + colormap([grayscale' grayscale' grayscale']); + img(~edges) = 0; + image(img); + axis image; + hold on; + [X, Y] = meshgrid(1:size(green, 2), 1:size(green, 1)); + quiver(X, Y, expand_matrix(x_dir), expand_matrix(y_dir), 'Color', 'yellow'); + savefig(['results/' name ' - gradient.fig']); +end diff --git a/src/Tests_hough/test_hough_simple.m b/src/Tests_hough/test_hough_simple.m new file mode 100644 index 0000000..2725fc9 --- /dev/null +++ b/src/Tests_hough/test_hough_simple.m @@ -0,0 +1,22 @@ +function test_hough_simple(images_path, image_name) + i = imread([images_path image_name]); + green = i(:, :, 2); + green_filtered = imgaussfilt(cast(i(:, :, 2), 'double'), 1.0); + edges = edge(green_filtered); + + disp('Applying Houg...'); + tic + [acc_votes, acc_radius] = HTCircle(edges, [20, 40]); + toc + + disp('Finding ellipses...'); + tic + ellipses = find_ellipses(acc_votes, acc_radius); + toc + + show_figures(['Hough simple - ' image_name], {... + {green, 'original'},... + {green_filtered, 'original filtered with a gaussian, sigma=1'},... + {edges, 'edges (sobel)'},... + {acc_votes, 'votes'}}, green, ellipses); +end \ No newline at end of file -- 2.43.0