【问题标题】:How to eliminate unwanted small regions in an image如何消除图像中不需要的小区域
【发布时间】:2015-04-28 18:45:07
【问题描述】:

我将分割算法应用于MRI脊柱图像,然后对分割图像进行连接分量分析,得到以下图像。

此图像包含不需要的区域。我只需要垂直脊柱,更具体地说是椎间盘。你能建议任何方法来提取它吗?形态学操作无济于事。我试过了

一些代码:

Img= imread('sub.png');
figure,imshow(Img);
Img=rgb2gray(Img);
Img = adapthisteq(Img);
K1=imadjust(Img);
figure, imshow(Img), title('After Adjustment Image')
hy = fspecial('sobel');
hx = hy';
Iy = imfilter(double(Img), hy, 'replicate');
Ix = imfilter(double(Img), hx, 'replicate');
gradmag = sqrt(Ix.^2 + Iy.^2);
figure, imshow(gradmag,[]), title('gradmag')
%threshold = graythresh(im);
originalImage = im2bw(Img,.18);
figure, imshow(originalImage), title('After thresholding')
originalImage = bwareaopen(originalImage,150);
figure, imshow(originalImage), title('After bwarea')
k=2;
tic
[mask1,mu1,v,p]=EMSeg(ima,k);
for i=1:k
    figure
    im2bw(mask1==i);
end
toc
im=mask1;
hy = fspecial('sobel');
hx = hy';
Iy = imfilter(double(im), hy, 'replicate');
Ix = imfilter(double(im), hx, 'replicate');
gradmag = sqrt(Ix.^2 + Iy.^2);
figure, imshow(gradmag,[]), title('gradmag')

se = strel('disk', 1); %# structuring element
closeBW = imclose(gradmag,se);
CC = bwconncomp(closeBW);
L = labelmatrix(CC);
[labeled,numObjects]= bwlabel(im);
numObjects 
figure, imshow(label2rgb(L));
originalImage=labeled;
se = strel('disk', 1); %# structuring element
originalImage = imclose(originalImage,se);
figure, imshow(originalImage);
stats = regionprops(labeled, 'Area')
%idx = find([stats.Area]>1000 & [stats.Area]<300);
 labeled=labeled(labeled<50)

【问题讨论】:

  • 向我们展示一些您尝试过的代码!
  • 还有你想要的原图和结果,因为我不知道椎间盘是哪个位。
  • 用代码和原图编辑
  • 为什么不直接裁剪和遮盖您的图像?
  • 看起来您使用黑色作为轮廓颜色,黑色也出现在不需要的区域中,并且与脊椎区域无法区分。所以尝试从脊椎盘中搜索浅灰色......形成一个包含所有找到的区域的多边形并将其用作掩码...... +/- 一些边界或根据段区域分割盘......

标签: matlab image-processing


【解决方案1】:

也许您可以使用 2D 相关性。假设椎间盘是水平方向的椭圆形状(在双色图像中),您可以尝试定义一个看起来与您想要查找的形状大致相似的示例形状,然后在整个字段上执行 2D 相关。您将获得一张图像,其中希望有与光盘中心相对应的较亮点,您可以将其用作更复杂过程的起点。您可能必须使用一系列内核反复执行此操作。

此外,虽然形态学运算并没有直接解决问题,但它们可能仍然发挥作用。例如,如果您定义一个看起来有点像您的目标形状的结构元素,您可以用它来腐蚀图像以尝试减少图像的线性部分(例如脊椎),然后对其执行相关性。

或者,您可以尝试使用 morphops 关闭光盘(重开和关闭),目的是平滑所有边缘并填充所有孔。然后你可以提取骨架,修剪短分支并遍历生成的树,查看每个节点的连接性:希望如果你已经将每个磁盘转换成一个位于两条轨道之间的实心椭圆,你可能能够基于它检测到它们。

【讨论】:

  • 您需要一个“内核”或一个小的“理想”图像来搜索,它看起来与您所有的光盘都有些相似,但又不太具体。您可能必须通过从训练集中切出圆盘并进行平均或类似的方法手动构建一个。但这不是成功完成问题的秘诀,这些只是帮助您入门的想法。如果它们对您来说是新手,那么我强烈建议您从一些教科书开始 - szeliski.org/book 是一个很好的起点。如果你想要数学的话,Hastie 和 Tibshirani。
猜你喜欢
  • 2014-05-02
  • 2016-02-28
  • 2012-06-29
  • 2014-06-15
  • 1970-01-01
  • 2013-12-28
  • 2012-09-20
  • 1970-01-01
  • 2016-01-12
相关资源
最近更新 更多