在一个图像中拆分多个对象并将其显示为单独的图像

时间:2014-10-28 21:21:01

标签: matlab matlab-figure

我正在开展白细胞检测项目。在应用白细胞检测的边缘检测步骤后,我得到了以下图像: enter image description here

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

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

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

1 个答案:

答案 0 :(得分:1)

以下是我认为你想做的一些代码。我添加了' Area'属性为了拒绝太小的细胞。您可以更改参数。在for-loop中,我评论了一个用于使用子图创建某种蒙太奇的代码,如果你想在一个图中显示所有单元格。

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

您可以在循环中添加一些代码,以便使用裁剪后的图像操作/执行任何操作。

希望有所帮助!如果没有,请提供您想要的更多详细信息。