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