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

时间:2018-02-12 22:10:12

标签: matlab matlab-figure

我一直在尝试在Matlab中填写二进制图像,这样我就像这样留下了这个像椭圆形图像的整体。

--> VISUALIZATION OF MY ISSUE <--

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

  1. 使用bwconvhull函数准确填充形状,但后来我不知道如何摆脱内部形状以仅隔离红色区域。
  2. 我也试图追踪二进制区域的边界,但无济于事。在追踪边界后我不完全确定要做什么。我试图仅追踪内部边界,但bwtraceboundary函数只是跟随整个边界(在头骨的内侧和外侧)。
  3. bwconvhull是否有类似的功能,我可以从中心向外扩展一个区域?我主要的困难在于:(a)头骨的内部边界或(b)内部&#34;黑色&#34;大脑应该存在的区域。我的编码尝试可以在下面找到:

    问题(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);
    

    问题(b) - 仅隔离中心

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

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

1 个答案:

答案 0 :(得分:0)

我将通过以下步骤进行处理:

  1. 应用边缘检测滤镜,这样最终得到两个椭圆形的部分:一个内部和外部椭圆。
  2. 对内部椭圆应用算法椭圆拟合。 There are some good examples out there,但我身上没有人。
  3. 用内部椭圆减去bwconvhull边界。
  4. 减去新椭圆形与原始图像的白色部分重叠的所有部分。

对不起,我没有支持该方法的实际代码,但这将使您更加接近。您可能需要更多步骤来清理最终结果。