MATLAB-填充椭圆/头骨形状的空白区域吗?

Use*_*234 5 matlab matlab-figure

我一直在尝试在Matlab中填充二进制图像,以使剩下的整个椭圆形图像都像这样。

->可视化我的问题<-

但是,实际上在定义红色区域时遇到了一个问题。我尝试了以下方法:

  1. 使用该bwconvhull函数准确填充形状,但是我不知道如何摆脱内部形状而仅隔离红色区域。
  2. 我也曾尝试追踪二进制区域的边界,但无济于事。我不完全确定在划定边界后该怎么做。我试图仅跟踪内部边界,但是该bwtraceboundary函数仅遵循整个边界(在头骨的内部和外部)。

bwconvhull是否有任何类似的功能,我可以从中心向外扩展区域?我的主要困难在于隔离(a)头骨的内部边界或(b)大脑应该位于的内部“黑色”区域。我的编码尝试可以在下面找到:

问题(a)-追踪界限

hole=imread('Copy CT.jpg');
BW=im2bw(hole,.9); 
dim=size(BW);
col=round(dim(2)/2);        
row=min(find(BW(:,col)));
boundary = bwtraceboundary(BW,[row,col],'S');
x=boundary(:,2);
y=boundary(:,1);
Run Code Online (Sandbox Code Playgroud)

问题(b)-仅隔离中心

hole=imread('Copy CT.jpg');
BW=im2bw(hole,.9);   
CH=bwconvhull(BW);
KH=CH-BW;
KH2=bwareaopen(KH,200);
Run Code Online (Sandbox Code Playgroud)

是否有任何值得尝试的特定功能,或者还有另一种方法可以隔离圆心,因此我只能突出显示红色区域?任何见解将不胜感激!

Mic*_*tuh 1

我将通过以下步骤来解决这个问题:

  1. 应用边缘检测过滤器,最终得到两个椭圆形部分:内椭圆和外椭圆。
  2. 对内椭圆应用算法椭圆拟合。那里有一些很好的例子,但我没有。
  3. 用内椭圆减去 bwconvhull 边界。
  4. 减去新椭圆形与原始图像白色部分重叠的所有部分。

很抱歉,我没有实际的代码来支持这种方法,但这将使您非常接近。您可能需要更多步骤来清理最终结果。