- 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
3 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
回答 (1 件)
Swastik Sarkar
2024 年 12 月 18 日
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 件のコメント
参考
カテゴリ
Help Center および File Exchange で Biomedical Imaging についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!