首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在一个图像中拆分多个对象,并将它们显示为单独的图像

在一个图像中拆分多个对象,并将它们显示为单独的图像
EN

Stack Overflow用户
提问于 2014-10-29 05:21:01
回答 1查看 1.5K关注 0票数 1

我正在做一个白细胞检测的项目。在应用边缘检测步骤进行白细胞检测后,我得到了以下图像:

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

代码语言:javascript
复制
r=regionprops(imabord, 'BoundingBox');
exTractedCell=imcrop(imabord,r.BoundingBox);
imshow(exTractedCell);

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

EN

回答 1

Stack Overflow用户

发布于 2014-10-29 06:43:27

这里有一些代码,我认为它们可以做你想做的事情。我添加了'Area‘属性,以便拒绝太小的单元格。当然,您可以更改参数。在for循环中,如果您想在一个图形中显示所有单元格,我注释了一段代码,该代码用于使用子图创建某种类型的蒙太奇。

代码语言:javascript
复制
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的最大面积和它给出的子图如下所示:

然后,您可以在循环中添加一些代码来操作/处理裁剪后的图像。

希望这能有所帮助!如果没有,请提供您想要的更多细节。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26618709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档