An edge outline segmentation suggestion please
2 次查看(过去 30 天)
显示 更早的评论
Dear All
Here is a very interesting and challenging task you may contribute to help me.
I have an ultrasound image with annotations (see attached image [annotations.png]) that I'd like to auto segment/outline.
I also attach another image using the method of P. Pandey [https://gitlab.com/prashp/shadow-peak-us-bone-seg/blob/master/readme.md (Pandeysuccess.png)] and a similar approach using a simple Sobel edge command [Sobeledge.png].
As you can see from the annotated image, there are two regions that are interested to me. An upper curve line that is an interface between human skin and a standoff material and the lower small curve which is the bone boundary.
A satisfactory result comes from both Pandey technique and edge technique. However, the edge technique comes with a lot of noise and speckle dots.
I'd like to ask a way to reproduce Pandey's technique somehow, maybe by using a more simplistic method, to get those two outlines as they appear in the image of Pandey's technique. If those two lines at some points come disconnected with gaps, there must be a way, e.g. by using a dijkstra algorithm to find the shortest path between the dots and pieces in order to form a seamless line by connecting them and of course discard all the speckle noise and blobs smaller than a minimum size, to clear the image and isolate those two lines as can be seen by Pandey's technique.
Finally, I am looking for a method to place a contour upon the white pixels of the image. The white pixels of the image ideally should be only the standoff outline and bone outline. All others should be eliminated. The contour lines upon the white pixels should be closed in order to form a 3d reconstructed object.
Any advice from the Matlab experts should be appreciated more than enough.
0 个评论
采纳的回答
Subhadeep Koley
2019-8-20
You can return all edges that are stronger than a specified threshold to minimize the effect of noise and speckle dots. Refer the documentation here.
I=imread('your_ultrasound.jpg');
Iedge=edge(rgb2gray(I),'canny',[0.1 0.3]);% define high and low threshold here
figure;imshow(Iedge,[]);
Now, to place a contour upon the detected edge use the following code,
Iedge=uint8(Iedge);
Iedge_rgb = cat(3,Iedge,Iedge,Iedge);
figure;imshow(Iedge_rgb);
hold all;
contour(Iedge);colormap(hsv);
更多回答(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!