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

问题描述 投票:5回答:1

我一直试图在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);

问题(b) - 仅隔离中心

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

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

matlab matlab-figure
1个回答
1
投票

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

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

对不起,我没有实际的代码来支持这种方法,但这会让你非常接近。您可能需要更多步骤来清理最终结果。

© www.soinside.com 2019 - 2024. All rights reserved.