- Instead of using imgaussfilt, consider utilizing imbilatfilt, an edge-preserving Gaussian bilateral filter.
- The imdiffusefilt function can be employed to smooth out the edges of the image.
Coronary Artery Edge Detection
32 views (last 30 days)
Show older comments
Hello everyone, I am working on developing a system that determines the boundaries of coronary arteries and calculates their tortuosity. The code I have written works well on certain datasets. However, it struggles to process low-quality images due to reasons such as contrast imbalance or blurriness. What kind of improvements can I make to ensure the code works on a broader range of data, or are there better methods you would recommend? I’ll share the code below. Thank you in advance.
function sequential_edge_detection()
img = imread("image.jpg");
if size(img, 3) == 3
img_gray = rgb2gray(img);
else
img_gray = img;
end
img_gray = im2double(img_gray);
img_smooth = imgaussfilt(img_gray, 2);
img_clahe_1 = adapthisteq(img_smooth);
options = struct('FrangiScaleRange', [1 5], ...
'FrangiScaleRatio', 1, ...
'BlackWhite', true, ...
'verbose', false);
[frangi_img, ~] = FrangiFilter2D(img_clahe_1, options);
img_clahe_2 = adapthisteq(mat2gray(frangi_img));
edges_canny = edge(img_clahe_2, 'Canny', [0.1, 0.3]);
figure;
imshow(edges_canny);
title('Final Edge Detection');
end
0 Comments
Answers (1)
Swastik Sarkar
on 18 Dec 2024 at 10:11
Several methods are available to improve the workflow for edge detection, which may require improvisation based on the following options:
In both cases, strel can be used to clean up and connect edges after detection in the following way
s = strel('disk', 2);
imclose(edge ,s)
For more information regarding these functions, refer to the following documentation:
0 Comments
See Also
Categories
Find more on Biomedical Imaging in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!