Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 圆与二值图像的交点_Matlab_Image Processing - Fatal编程技术网

Matlab 圆与二值图像的交点

Matlab 圆与二值图像的交点,matlab,image-processing,Matlab,Image Processing,我有骨骼化二值图像和连接信息。我想画一个以交点为中心的圆,然后找到圆和二值图像的交点。 我编写了以下代码: 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)

我有骨骼化二值图像和连接信息。我想画一个以交点为中心的圆,然后找到圆和二值图像的交点。 我编写了以下代码:

 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');
findendsjunctions.m和从属文件show.m可分别从此处和此处下载。 和circle.m可从此处下载:

我想知道这个圆是与它周围的2条、3条还是4条血管相交(在图像中标记为星形)。即使圆横穿单个容器多次,但输出应为每个容器的一个交点

请建议如何找到圆和二元容器的交点


谢谢

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

   [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')


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

和您的问题?到目前为止你试着做什么?你有其他代码的链接,实现这些代码有什么问题?@natan实现上述代码没有问题,但我的下一步是找到圆和二进制图像的交点。我想找到圆与双星容器相交的3个点(在图像中标记为星)。您可以提出建议?请参见Andrey的网页:
   [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)