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

我希望将每个单元格(带白色边界)显示为单独的图像,到目前为止,我已经尝试了以下代码: Here imabord是链接中给出的图像。
r=regionprops(imabord, 'BoundingBox');
exTractedCell=imcrop(imabord,r.BoundingBox);
imshow(exTractedCell);通过应用此代码,我只获得了所有单元格的裁剪图像;但我希望将所有单元格分别显示为单独的图像。请帮助我将所有检测到的细胞显示为单独的图像。
发布于 2014-10-29 06:43:27
这里有一些代码,我认为它们可以做你想做的事情。我添加了'Area‘属性,以便拒绝太小的单元格。当然,您可以更改参数。在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的最大面积和它给出的子图如下所示:

然后,您可以在循环中添加一些代码来操作/处理裁剪后的图像。
希望这能有所帮助!如果没有,请提供您想要的更多细节。
https://stackoverflow.com/questions/26618709
复制相似问题