image - 图像中感染的白细胞检测

标签 image matlab image-processing

你好,我是使用 matlab 的初学者,这是我家庭作业的一部分。我需要检测图像中受感染的白细胞,并在受感染白细胞的核大且颜色为蓝色的地方对它们进行计数。

原始图像

解释图像:

所以我尝试分离白细胞,然后检测受感染的白细胞,但我卡住了,不知道该怎么办我会写我的代码并提到我卡住的地方,如果三个是另一种方法请帮忙

  1. 将图像从 RGB 转换为 YcBcR 空间颜色以检测销售情况

    OrgenalImg = imread('D:\Users\FADI\Desktop\cells\cells1.jpg');
    
    CopyOfOrgenalImg = OrgenalImg;
    
     YcbcrImage = rgb2ycbcr(CopyOfOrgenalImg);
     cb = YcbcrImage(:,:,2);
     cr = YcbcrImage(:,:,3);
    
    [r,c,v] = find(cb>=77 & cb<=127 & cr>=133 & cr<=173);
    
    index1 = size(r,1);
    
    %Mark the white cell pixel
    for i=1:index1
      CopyOfOrgenalImg(r(i),c(i),:) = 255;
    end
    
    figure, imshow(CopyOfOrgenalImg);title('White Cells');
    

    白细胞图像:

2.我被卡住了,我尝试将白细胞图像转换为灰色 grayscale 以删除和移除不需要的形状,但我找不到方法,所以请帮助以及如何我可以继续我的家庭作业来检测和计数细胞吗,如果有其他方法可以做到这一点,请告诉我提前感谢任何帮助。

最佳答案

您可以尝试根据蓝色 channel 对图像进行阈值处理,以识别与每个单元格对应的区域。对于非研究/家庭作业练习,考虑到精心选择的阈值(下面代码中的 0.66),这可能就足够了。然后您可以遍历每个连接的组件并根据区域做出决定。在现实世界的情况下,您会为此训练一个基于某种形状描述符的系统,但鉴于您只有 2 个示例图像,因此某种像这样的硬编码启发式方法似乎是不可避免的。

这是一种解决方案:

INFECTED_AREA_THRESHOLD=3000; 

img=double(imread('\cell.jpg'))./255;
blueness=img(:,:,3)./(img(:,:,1)+img(:,:,2)+img(:,:,3));
blueness=blueness./max(max(blueness));
cellmask=blueness<0.66;

cellmask=bwfill(~cellmask,'holes');

map=bwlabel(cellmask);
labels=setdiff(unique(map),0)';

infectedcomponents=zeros(size(img,1),size(img,2));
areas=[];
infected=0;
for thislbl=labels
    connectedcomp=(map==thislbl);
    thisarea=sum(sum(connectedcomp));
    areas=[areas; thisarea];
    if (thisarea>INFECTED_AREA_THRESHOLD)
        infected=infected+1
        infectedcomponents=infectedcomponents | connectedcomp;
    end
end

imshow(rgb2gray(img).*infectedcomponents);
title(strcat(num2str(infected),' infected components detected'));
sort(areas)

阈值为 3000 的决定是通过检查变量“区域”中的组件/单元区域列表做出的。 0.66 的蓝色阈值是通过反复试验得出的。

示例输出:

enter image description here

关于image - 图像中感染的白细胞检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23515402/

相关文章:

Javascript 函数(异步)在 Mozilla FF 中有效,但在 Chrome 中无效?

c# - 如何在 WPF 进度条中使用图像?

c# - 如何将图像插入 RichTextBox?

javascript - 使用 Javascript 更改图像源

javascript - 通过 Javascript 创建的图像未显示

c++ - 如何可视化 OpenCV 中的内在/外在相机参数?

matlab - 在 3d 中绘制法向量

PHP输出文本图像字符编码错误

matlab - 运动检测的最佳算法?

image - OpenCV:从文件夹中读取图像系列