给定图像的细胞计数
Cell Count from given image
我无法从下图中弄清楚如何计算大单元格的数量。
由于感兴趣的细胞看起来很圆,您可以在 Lab 颜色 space 中使用 imfindcircles,这比 RGB space 更适合在这里工作,因为 ~细胞 H&E 染色的紫色。
所以基本上转换颜色space,然后在大细胞最亮的第3通道应用阈值,然后应用imfindcircles
。请注意,这里 Edge
属性 必须非常低,以便区分彼此靠近的单元格(如图像的左下方)。而且,我的Matlab版本不支持rgb2lab so I used makecform颜色之间的转换spaces。
这是 Lab 颜色space 中图像的 3 个通道的样子:
如你所见,看起来最亮的大细胞核大细胞在第三通道中非常突出。因此,我们将仅对其余通道设置阈值。
为了获得检测到的细胞的数量,只需询问函数 imfindcircles
(numel(radii)
).
给出的 radii
的数量
clear
clc
close all
Im = imread('Cells.jpg');
%// Transform to Lab color space
cform = makecform('srgb2lab');
Im_lab = applycform(Im,cform);
%// Apply threshold
Im_lab = im2bw(Im_lab(:,:,3),.35);
%// Detect ~circles
[centers, radii] = imfindcircles(Im_lab,[12 35],'Sensitivity',0.7,'Edge',0.1,'ObjectPolarity','dark');
imshow(Im);
hold on
viscircles(centers, radii,'EdgeColor','k','LineWidth',4);
NumCircles = numel(radii);
%// Display message box
Msg = sprintf('You have just found %i circles!!!\n',NumCircles);
msgbox(Msg)
输出:
我无法从下图中弄清楚如何计算大单元格的数量。
由于感兴趣的细胞看起来很圆,您可以在 Lab 颜色 space 中使用 imfindcircles,这比 RGB space 更适合在这里工作,因为 ~细胞 H&E 染色的紫色。
所以基本上转换颜色space,然后在大细胞最亮的第3通道应用阈值,然后应用imfindcircles
。请注意,这里 Edge
属性 必须非常低,以便区分彼此靠近的单元格(如图像的左下方)。而且,我的Matlab版本不支持rgb2lab so I used makecform颜色之间的转换spaces。
这是 Lab 颜色space 中图像的 3 个通道的样子:
如你所见,看起来最亮的大细胞核大细胞在第三通道中非常突出。因此,我们将仅对其余通道设置阈值。
为了获得检测到的细胞的数量,只需询问函数 imfindcircles
(numel(radii)
).
radii
的数量
clear
clc
close all
Im = imread('Cells.jpg');
%// Transform to Lab color space
cform = makecform('srgb2lab');
Im_lab = applycform(Im,cform);
%// Apply threshold
Im_lab = im2bw(Im_lab(:,:,3),.35);
%// Detect ~circles
[centers, radii] = imfindcircles(Im_lab,[12 35],'Sensitivity',0.7,'Edge',0.1,'ObjectPolarity','dark');
imshow(Im);
hold on
viscircles(centers, radii,'EdgeColor','k','LineWidth',4);
NumCircles = numel(radii);
%// Display message box
Msg = sprintf('You have just found %i circles!!!\n',NumCircles);
msgbox(Msg)
输出: