Introduction:
对不同种类的细胞图像进行计数。目前有很多自动计数的工具,但是主要存在以下两个问题:1、自动计数器的不准确性 2、非专业人员要使用这些工具有困难。本文设计了一种细胞计数工具叫做Cell-Counter。它设置了一些固定的过滤器,这些过滤器的参数是特定的,比较好的。(应该是具有不错的泛化能力的)
这个项目是和一个研究小组合作的,这个小组通过细胞计数来进行特定条件下的活细胞检测和转染效率。下面来说一下本文面对的问题:不同种类的试剂(染色用的吧)导致图片种类很多,无法泛化;在多核细胞中无法检测(分离)出一个单独的细胞核;粘连细胞问题;图片光照不平衡和其他一些由于设备导致的问题。本文目标是推出一款能够在尽可能少的标注下,得到一款应用于特定情况的软件。
我们的学习作为优化问题,目标是优化程序计数结果与人工计数之间的差异。Cell-Counter使用了预定义的滤波器序列(filter sequence),滤波器的参数是对特定的应用经过调整的。图片过滤器的参数是一个向量,里面的值需要优化。
优化的目标函数能被改变,在优化过程的任何一步都可以被停下来,得到当时的结果,然后人工介入。
Cell-Counter:
分为Learning Part和Counting Part。
But the user can also participate in this ongoing process, since a set of candidate counters is immediately offered. This set is the set of currently best known counters and the user can assess the given counters. If the user is satisfied with the results he/she can interrupt the learning and use the counter.
a set of candidate counters 是什么意思?最终结果不是最好的吗,至少在优化结果看来。
WorkFlowNote:要选择尽可能不同情况的图片,让子集图片少但是尽可能地覆盖到全集里的情况。人工计数是标出目标的大概的中心位置。在学习过程中可以人工干预,观察结果后,发现结果集不满意可以去添加新的子集图片。
IMPLEMENT DETAIL:
1、优化问题
寻找一个计数器使得计数error在learning set上最小化。
输入:有k张图片的子集
Img = { img1,img2,...,imgk }
对于每张图片img,人工标注的结果是由下面的式子给出:
Cman(img) = {p1,p2,...,pn},其中p indicates point in the plane.
输出:参数向量P = {param1,param2,...,paraml }
Cp(img) = { p1, p2, ...,pm }
goal function(这是用来判定的标准):至少有以下两个基本准则
1、人工计数和算法得到的数量应该尽可能接近
2、算法找到的细胞应该和标注的位置尽可能接近(这里可能会引申出人为对一个物体算不算细胞的定义是什么)
针对一张图片img来说,
求出所有人工点和算法点之间的距离之和,注意这里是以人工点为标准。
第二条准则
其中,d是两点之间的距离(欧几里得度量),closest function 是用来找到距离点p最近的人工点。然后遍历所有的点。
如果是只采用第二条准则的话,会出现一些边界数据异常。下面是一个例子,因此我们要结合两个目标函数。
方块是人工点,圆形是算法点
然后我们把目标函数扩展到训练样本集里面。测试过最大值,中位数和平均数,他们选择了平均数。
image
同理GD(P,Img)。
算法流程:
1、增强对比度
2、转为二值图像
3、分水岭算法进行分割
(在文章中以上的过程被称为filters)
4、Holefill 把空洞的细胞填充起来
5、微粒分析,检测剩下的有效像素里是否还有细胞。确定是不是细胞的参数。
ChromosomeParticle analysis - the last step of the algorithm detects the remaining blobs of active pixels in the image and decides whether to add an object to the count or not. There are a few parameters upon which this decision is made - the most important being the minimum radius, the maximum radius, and the eccentricity(离心率) of the object.
文章把上面五个步骤作为一条染色体,然后通过对这条染色体进行不断的更新换代(Generations)来更新这些步骤中的参数,使得参数值合适。
算法概述Lines 3-6 of the pseudocode demonstrate the aforementioned combination of functions ∆ and D. The first 10% of the generations, the fitness function is only ∆. After this starting generations, the D function is used in every other generation, eliminating possibly corrupt counters that accidentally count a similar number of cells, but on completely different positions that those obtained by the manual count.
The selection (lines 8-10) of the counters which are used for creating a new generation is done with rank selection, i.e. the probability that a counter is chosen is proportional to its rank in the current population.
The crossover (line 11) used is a one-point crossover, i.e. a random position in the chromosome is chosen and the two chromosomes exchange the parameters to the left of that position. The mutation (line 12) is not a bit-level mutation (as it is usually the case with genetic algorithms), but we used a mutation on the parameter level, where a uniformly random value is chosen from the parameter domain.
Ultimately, to obtain the next generation, only the best counters are chosen in line 13.
结论,通过这套系统,他们确定了一系列用于检测不同细胞数目的模板参数吧,这样对于特定的细胞数目就可以直接拿过来用。现在的方法是使用固定的过滤序列,但是可以被拓展到任何序列上。(???)
The presented method was used on a fixed sequence of filters, however it can easily be extended to any sequence.
最后附上他们的样本数据:
网友评论