So I have made 3 differents codes :
The first one is the most simplier :
grayImage = rgb2gray(image);
med_grayImage = medfilt2(double(grayImage), [20 20]);
filteredImage = imgaussfilt(med_grayImage, sigma);
laplacian = fspecial('laplacian');
laplacianFiltered = imfilter(filteredImage, laplacian);
imshow(laplacianFiltered);
BW1 = edge(laplacianFiltered,'canny', [0.0010 0.0018]);
BW1 = bwmorph(BW1, "clean", Inf);
BW3 = bwmorph(BW2,'bridge', Inf);
2nd :
grayImage = rgb2gray(image);
med_grayImage = medfilt2(grayImage, [32 32]);
gaussian1 = imgaussfilt(double(med_grayImage), sigma1);
gaussian2 = imgaussfilt(double(med_grayImage), sigma2);
DoG = gaussian1 - gaussian2;
filteredImage = imgaussfilt(DoG, sigma);
laplacian = fspecial('laplacian');
laplacianFiltered = imfilter(filteredImage, laplacian);
imshow(laplacianFiltered);
BW1 = edge(laplacianFiltered,'canny', [0.0010 0.0018]);
BW1 = bwmorph(BW1, "clean", Inf);
BW4 = bwmorph(BW2,'bridge', Inf);
Third :
grayImage = rgb2gray(image);
med_grayImage = medfilt2(grayImage, [20 20]);
sobelMaskX = [-1 0 1; -2 0 2; -1 0 1];
sobelFilteredX = imfilter(double(med_grayImage), sobelMaskX);
sobelMaskY = [-1 -2 -1; 0 0 0; 1 2 1];
sobelFilteredY = imfilter(double(med_grayImage), sobelMaskY);
gradientMagnitude = sqrt(sobelFilteredX.^2 + sobelFilteredY.^2);
imshow(uint8(gradientMagnitude));
filteredImage = imgaussfilt(gradientMagnitude, sigma);
laplacian = fspecial('laplacian');
laplacianFiltered = imfilter(filteredImage, laplacian);
imshow(laplacianFiltered);
BW1 = edge(laplacianFiltered,'canny', [0.0010 0.0018]);
BW1 = bwmorph(BW1, "clean", Inf);
BW4 = bwmorph(BW2,'bridge', Inf);
here what I get using one of the 3 codes above :
Do you think I can improve it ?
Thank you !