首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >圆与二值图像的交点MATLAB

圆与二值图像的交点MATLAB
EN

Stack Overflow用户
提问于 2013-06-01 07:40:43
回答 1查看 1.2K关注 0票数 0

我已经对二值图像和结点信息进行了骨架分析。我想在交点处画圆作为圆心,并想找出圆和二值图像的交点。我写了以下代码:

代码语言:javascript
复制
 BW = imread('circles.png');
 imshow(BW);
 BW2 = bwmorph(BW,'remove');
 figure, imshow(BW2)
 BW3 = bwmorph(BW,'skel',Inf);
 figure, imshow(BW3)
 BW3t = bwmorph(BW3,'thin');
 figure, imshow(BW3t)


 [rj, cj, re, ce] = findendsjunctions(BW3t, 1);
 hold on 
 plot(cj(1),rj(1),'ob')
 hold on
 circle([cj(1),rj(1)],4,50,':r');

M和从属文件show.m可以分别从这里下载:http://www.csse.uwa.edu.au/~pk/research/matlabfns/LineSegments/findendsjunctions.m和这里http://www.csse.uwa.edu.au/~pk/research/matlabfns/Misc/show.m。和circle.m可以从这里下载:http://www.mathworks.co.uk/matlabcentral/fileexchange/2876-draw-a-circle/content/circle.m

我想找出圆形是否与其周围的2,3或4个血管相交(在图像中标记为星形)。即使圆周横切多次,单个血管,但输出应为每个血管的一个交点。

请建议如何找到圆形血管和二进制血管的交点。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-03 06:49:26

我已经找到了圆和二值图像的交点和3个点的坐标(在我的问题提供的图像中标记为星形)。我更改了函数circle.m (在上面的问题中提到),以输出圆的所有X和Y坐标,然后我编写了以下matlab代码:

代码语言:javascript
复制
   [H, X, Y]=circle([cj(1),rj(1)],4,50,':r');
   c = improfile(BW3t,X,Y)
   x=1:length(c)
   figure
   plot(x, c,'r')

代码语言:javascript
复制
   [maxtab, mintab]=peakdet(c, 1)
   [pks,locs] = findpeaks(c)
   pt1=[X(locs(1)) Y(locs(1))]
   pt2=[X(locs(2)) Y(locs(2))]
   pt3=[X(locs(3)) Y(locs(3))]

   hold on
   plot(pt1(1),pt1(2),'om','LineWidth',2)
   hold on
   plot(pt2(1),pt2(2),'og','LineWidth',2)
   hold on
   plot(pt3(1),pt3(2),'ob','LineWidth',2)

pt1,pt2 pt3是圆切割二值图像的三个点

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16867511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档