首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图像中的感染白细胞检测

图像中的感染白细胞检测
EN

Stack Overflow用户
提问于 2014-05-07 10:35:39
回答 1查看 749关注 0票数 7

你好,我是matlab的初学者,也是我家庭作业的一部分。我需要在图像中检测被感染的白血球,并数一数被感染的白血球的核大小和颜色的蓝色。

原始图像

解释图像:

所以我试着分离出被感染的白细胞,然后检测出被感染的白细胞,但是我被困住了,不知道该怎么做,我会写我的代码,并提到我卡在哪里,如果三种方法是另一种方法来做这个请求帮助

  1. 将图像从RGB转换为YcBcR空间颜色,以检测其销售情况 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);为i=1:index1 CopyOfOrgenalImg标记白细胞像素%(r(I),c(i),:) = 255;标题(“白细胞”); 白细胞图像:

2.在这里,我试图将白细胞图像转换为灰色grayscale,以删除和删除不需要的形状,但我无法找到方法来做到这一点,所以请帮助我,我如何继续我的家庭作业,以检测和计数与细胞,如果有其他方法做这个请求,让我知道,提前感谢任何帮助。

EN

回答 1

Stack Overflow用户

发布于 2014-05-14 11:40:07

您可以尝试根据蓝色通道对图像进行阈值化,以识别与每个单元格相对应的区域。对于一项非研究/家庭作业练习,只要有一个精心选择的阈值(下面的代码为0.66),这可能就足够了。然后,您可以遍历每个连接的组件,并根据该区域做出决策。在现实世界中,你会训练一个基于某种形状描述符的系统,但是如果你只有2个例子图像,像这样的硬编码的启发式看起来是不可避免的。

这里有一个解决方案:

代码语言:javascript
复制
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是经反复试验确定的。

样本输出:

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

https://stackoverflow.com/questions/23515402

复制
相关文章

相似问题

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