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 是什么意思?最終結果不是最好的嗎,至少在優化結果看來。
Note:要選擇盡可能不同情況的圖片,讓子集圖片少但是盡可能地覆蓋到全集里的情況。人工計數是標出目標的大概的中心位置。在學習過程中可以人工干預,觀察結果后,發現結果集不滿意可以去添加新的子集圖片。
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最近的人工點。然后遍歷所有的點。
如果是只采用第二條準則的話,會出現一些邊界數據異常。下面是一個例子,因此我們要結合兩個目標函數。
然后我們把目標函數擴展到訓練樣本集里面。測試過最大值,中位數和平均數,他們選擇了平均數。
同理GD(P,Img)。
算法流程:
1、增強對比度
2、轉為二值圖像
3、分水嶺算法進行分割
(在文章中以上的過程被稱為filters)
4、Holefill 把空洞的細胞填充起來
5、微粒分析,檢測剩下的有效像素里是否還有細胞。確定是不是細胞的參數。
Particle 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.
最后附上他們的樣本數據: