2014-10-28 73 views
1

我上的白血细胞的项目detection.I施加边缘检测步骤,白细胞检测后得到了以下图像工作: enter image description here分割的多个对象,并显示它们作为单独的图像

我想要显示每个单元格(带有白色边界)作为单独的图像,到目前为止,我已经尝试了以下代码: 这里imabord是链接中给出的图像。

r=regionprops(imabord, 'BoundingBox'); 
exTractedCell=imcrop(imabord,r.BoundingBox); 
imshow(exTractedCell); 

通过应用此代码,我刚刚得到所有单元格的裁剪图像;但我想要将所有单元格分别显示为单独的图像。 请帮助我将所有检测到的细胞显示为单独的图像。

回答

1

这里有一些代码,我认为做你想要的。我添加了“区域”属性以拒绝太小的单元格。当然你可以改变参数。在for循环中,我评论了一个用于使用子图创建某种蒙太奇的代码,如果您想要在一个图中显示所有单元格。

close all 
clear 
clc 

A = im2bw(imread('ImCells.jpg')); %// Read the image 

r=regionprops(A, 'BoundingBox','Area'); 

r(1) = []; %// Clear 1st entry as it's the outside rectangle. 

MaxArea = 40; %// Select largest area you want to keep. 
r = r([r.Area] > MaxArea); %// Detect cells larger than some value. 

L = length(r); 

figure 


% hold all %// Use if you use the subplot command 
for k = 1:L 

    exTractedCell=imcrop(A,[r(k).BoundingBox]); 

    imshow(exTractedCell) 
    pause(0.01); 
    %subplot(10,10,k); %//You could create a montage using subplots. 
    %imshow(exTractedCell); 

end 

例如使用20的最大区域,它给像这样的次要情节: enter image description here

您可以在回路中添加一些代码来操纵/做任何你想要的裁剪图像,然后。

希望有帮助!如果不是,请提供更多关于你想要的细节。

+0

实际上,我想显示所有裁剪的单元格图像在单独的figure.for例如,如果一个图像有4个单元格,然后我需要这4个单元格分别显示在4个数字。 – user21 2014-10-29 09:30:19

+0

好的,上面的代码做正确的事情?在循环中调用t imshow时,单个单元格图像应该一次显示一个。 – 2014-10-29 12:17:06

+0

代码适用于此特定图像,但如果我将其他图像作为输入,则由于最大面积条件,不会显示任何图像。 – user21 2014-10-29 13:41:19

相关问题