我正在开展白细胞检测项目。在应用白细胞检测的边缘检测步骤后,我得到了以下图像:
我想将每个单元格(带有白色边框)显示为单独的图像,到目前为止,我已尝试过以下代码: 这里imabord是链接中给出的图像。
r=regionprops(imabord, 'BoundingBox');
exTractedCell=imcrop(imabord,r.BoundingBox);
imshow(exTractedCell);
通过应用此代码,我得到了所有单元格的裁剪图像;但我想将所有单元格分别显示为单独的图像。 请帮助我将所有检测到的细胞显示为单独的图像。
答案 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和子图,它给出如下内容:
您可以在循环中添加一些代码,以便使用裁剪后的图像操作/执行任何操作。
希望有所帮助!如果没有,请提供您想要的更多详细信息。