李帥,趙國棟,羅豐
(1.西安電子科技大學(xué) 電子工程學(xué)院,陜西 西安 710000;2.北京紅楓樹智能控制技術(shù)股份有限公司,北京100098)
隨著計算機技術(shù)的迅速發(fā)展和藥房設(shè)備的自動化水平不斷提高,為藥房自動化設(shè)備裝上“眼睛”,即加入視覺處理技術(shù),在進一步提高自動化水平和徹底解放藥劑師的雙手方面有著重要的意義。目前,為確保病患的用藥安全,自動化藥房的最后核驗步驟還是由藥劑師依據(jù)經(jīng)驗親自來比對,所以搭建一個藥品識別平臺對提高藥房效率有著重要的意義,藥品圖像分割就是其中的關(guān)鍵一步。
目前常用的彩色圖像分割有兩種,即基于聚類進行分割和基于區(qū)域進行分割?;诰垲惖乃惴ㄓ蠯 均值聚類和模糊C 均值(FCM)聚類,基于區(qū)域的算法有分水嶺分割和區(qū)域生長算法。
1967 年,MACQUEEN[1]提出了K 均值聚類(K-means)為后面的聚類算法奠定了基礎(chǔ),但該算法依賴出生點的選擇而且對異常點敏感。后來的學(xué)者對這做出了很多改進,1973 年,DUNN[2]在K-means 的基礎(chǔ)上加入了隸屬度的概念,提出了模糊C 均值聚類(FCM)。2002 年,AHMED等[3]在聚類過程中加入了空間概念,提高了FCM的抗噪性能。2012 年,公茂果等人在FCM 加入了局部紋理信息的考慮,提高了分割效果??傮w來說,K 均值聚類通過計量樣本點之間的距離來評價兩個點的相似度,通過不斷的迭代調(diào)整聚類中心使每個簇里內(nèi)部相似度盡可能高、簇間相似度盡可能低。1991 年,VINCENT 等[4]提出的分水嶺算法是將圖像灰度值和地理拓撲理論相結(jié)合,基本實現(xiàn)了對距離較近的目標進行分割,但容易產(chǎn)生過分割現(xiàn)象。后續(xù)學(xué)者對分水嶺算法做了改進,2011 年,胡敏等[5]基于形態(tài)學(xué)處理為分水嶺分割提供了先驗標記信息,去掉了人機交互進行標記的必要。2013 年,陳麗芳等[6]對分割后的結(jié)果進行處理,改善了過分割的現(xiàn)象。
基于區(qū)域的方法是目前分割算法應(yīng)用場合最多且分割性能較好的算法。區(qū)域生長算法的基本原理就是選好一個生長點,然后依據(jù)設(shè)定好的生長準則對周圍的像素點或者區(qū)域進行聚合,最終生長停止完成分割。區(qū)域分裂與合并法與生長相反,首先把圖像不斷分成一個個子區(qū)域,再通過某一規(guī)則對分類的子區(qū)域進行合并?;趨^(qū)域的方法的效果好壞就在于種子點的選定、生長準則的設(shè)計和結(jié)束生長的條件。2014 年,曹彪[7]在將區(qū)域生長算法應(yīng)用到了OCT 圖像上,結(jié)合OCT 圖像設(shè)置了種子點自動選取算法并改進了生長準則,提高了分割精度。2018 年,鄭又能等[8]應(yīng)用了最小二乘問題來在水岸線分割場景下實現(xiàn)種子點的自動選取。
預(yù)處理技術(shù)是整個圖像處理流程的開端,主要作用是提高圖像質(zhì)量方便后續(xù)的算法實現(xiàn)。一般來說,預(yù)處理技術(shù)主要有圖像濾波和圖像增強。圖像濾波是為了消除圖像產(chǎn)生過程中的無法避免的外界干擾以及背景環(huán)境的問題在圖像上產(chǎn)生的噪點,圖像增強是為了突出圖像某一方面的特性為后續(xù)的分割、識別等處理服務(wù)。
圖像濾波可以根據(jù)輸入輸出之間是否為線性劃分成線性濾波和非線性濾波兩種。線性濾波就是將對灰度值進行加權(quán)和處理,如常見的有高斯濾波;非線性濾波是對灰度值進行非線性處理,如常見的有中值濾波、雙邊濾波。高斯濾波就是用服從二維正態(tài)分布的卷積核與圖像作卷積計算,從而得到每個像素的值。本質(zhì)上是一種低通濾波,在每個像素值的計算過程中都加入了周圍像素的影響,這有一定的“平滑”效果,主要表現(xiàn)為圖像模糊,如圖2 所示。在實際使用中,一般將中值濾波用在椒鹽噪聲現(xiàn)象較為明顯的場合。雙邊濾波和高斯濾波同樣使用平均加權(quán)法,差異在于雙邊濾波既計算了像素間的歐氏距離,也加入了像素灰度的相似性計算,與高斯濾波相比,雙邊濾波可以更好的保存目標對象的邊緣信息。
濾波效果比較見圖1~4。
圖1 原圖及其二值化
圖2 高斯濾波及其二值化
圖3 中值濾波及二值化
圖4 雙邊濾波及其二值化
由上面的圖像濾波及其二值圖可看出,高斯濾波和中值濾波在目標邊緣處都出現(xiàn)和背景的粘連,為后面的分割工作增加了難度,雙邊濾波可以在降低背景干擾的情況下較好的保護目標的邊緣,綜合考慮本次算法選擇雙邊濾波算法進行濾波操作。
為了避免藥品光滑的表面出現(xiàn)反光導(dǎo)致藥品表面像素信息的損失,我們采取在較暗光照條件下進行圖像采集。暗光照條件導(dǎo)致了圖像的信息集中在低值區(qū)域,我們采用gamma 校正的圖像的增強算法擴寬了圖像的細節(jié)信息,豐富了圖像的特征。但藥品圖像在進行目標與背景的分割的時候主要有兩個問題,一是部分顏色在轉(zhuǎn)換到灰度空間時灰度值較低,縮小了與背景環(huán)境的差別,二是基于膠囊藥品的特性,存在一個目標的具有兩個顏色且在灰度圖中差異較大,往往只保留其中一部分。
問題說明見圖5~6。
圖5 原圖及灰度化結(jié)果一
圖6 原圖及灰度化結(jié)果二
除此之外,藥品在設(shè)備內(nèi)部會出現(xiàn)粘連現(xiàn)象,在保證藥品本身完整的基礎(chǔ)下將藥品之間較好的分割開,也是分割算法的難點。粘連效果見圖7。
圖7 藥品粘連
區(qū)域生長法就是依據(jù)事先選好的規(guī)則將一個像素點或者一個小塊領(lǐng)域不斷進行聚合的過程?;镜乃惴ㄋ枷刖褪菑姆N子點(像素點或者小區(qū)域)開始,通過生長準則評判種子點和待生長點是否為性質(zhì)相近來不斷的使區(qū)域擴大,直到生長停止。算法的效果好壞取決于種子點、生長準則和生長停止的條件的選擇是否合適。
區(qū)域生長的一般步驟如下:
(1)選擇好合適的種子點。
(2)通過生長準則將新的像素點合并。
(3)直到到達生長停止的條件。
改進的區(qū)域生長算法的基本思想是先將樣本圖像與背景圖像作差分處理,然后對結(jié)果做低閾值二值化處理和連通域篩選,得到藥品的粗分割結(jié)果,針對膠囊上下部分區(qū)域特征差別較大,先將上下部分看成兩個區(qū)域。我們選取連通域的質(zhì)心和主軸方向的兩個點作為種子的生長點,圖像二值化處理是將灰度圖的灰度值以某一固定值為閾值,將大于閾值的灰度值置255,小于閾值的灰度值置0,較少后續(xù)計算的運算量,突出圖像中的輪廓特征。二值化的公式如式(1):
式中,th 為閾值,g(i,j)為灰度圖中(i,j)位置的灰度值,b(i,j)為二值圖中對應(yīng)位置的值。二值化的方法有很多,但本文只是用二值化來篩選連通域,降低背景干擾同時預(yù)選ROI 區(qū)域,減少后續(xù)算法的運算量,所以選擇了簡單的固定閾值處理。
連通域篩選是在二值化圖像中,選擇出基本符合藥品目標特征的連通域,將一下背景的噪點及條紋反光部分刪除,提高算法的運行效率。通過測量連通域的面積和外接矩形的長寬比,經(jīng)測量,本文采集的藥品圖像中目標的連通域均遠遠大于500 像素值且外接矩形的長寬比在1∶8 之間。
將得到的連通域擴充得到的藥品的粗分割結(jié)果,標記為ROI 區(qū)域,效果見圖8。
圖8 種子生長點示意圖
考慮到藥品圖像大致有三種類型:純亮色、純暗色、雙色,我們使用基于Lab 顏色模型的色差來進行生長準則的閾值,色差的度量值如下:
式中,?L為待生長點與種子點在Lab 顏色模型中L 值上的差值,同理?a、?b為兩點在a 和b 值上的差值。我們設(shè)定生長閾值th2,將待生長點與種子點的色差值小于閾值時,此時認為待生長點和種子點屬于一個區(qū)域,對它進行生長標記。重復(fù)色差計算,直至遍歷完所有未知點,完成目標分割。分割結(jié)果即為集合O,則
只要待生長點Ni,x滿足生長條件R,與種子點的色差小于閾值,就將點Ni,x加入到集合O 中,即將種子點加入新的生長區(qū)域中。
種子的生長過程如圖9 所示,將得到的初始種子點設(shè)為S1,將其周圍的鄰域點設(shè)為P1-P8,對于鄰域點中滿足生長準則的點設(shè)為生長點,加入到種子集合中。然后對新的種子點的鄰域進行生長準則判斷,使得種子點集合不斷增加,目標區(qū)域不斷擴大。直到所有的未知點完成生長,則區(qū)域生長算法分割完成。
圖9 區(qū)域生長過程圖
按照上述種子點的選擇方法和生長準則,對于某雙色膠囊樣本得到的結(jié)果如圖10 所示。
圖10 本文算法中間處理結(jié)果
由上述方法得到的膠囊圖像會出現(xiàn)上下兩部分分隔開,對于這種情況下的連通域需進行合并處理。首先通過連通域形狀參數(shù)確認膠囊的上部分和下部分,計算兩部分連通域的主軸線的斜率和距離。經(jīng)測試,同一個膠囊上下部分連通域主軸線的斜率大約在5 度以內(nèi),距離差在30 個像素值內(nèi),對于一個膠囊的連通域進行閉運算鏈接處理。
計算連通域的質(zhì)心和主軸方向通過圖像的幾何矩進行計算。其中一階矩的公式如下:
式中,I(x,y) 為圖像(x,y)處的灰度值,當(dāng)圖像二值化后,m00就表示了圖像白色區(qū)域的面積。
二階矩:
其中,θ∈[-90o,90o]。
篩選連通域后合并的結(jié)果見圖11。
圖11 算法結(jié)果
算法步驟如下:
Step1:低閾值二值化圖像,確定藥品的出現(xiàn)區(qū)域,標記ROI,完成粗分隔;
Strp2:判斷連通域形狀參數(shù),篩選出單獨噪點、單藥、多藥連通域;
Strp3:單獨噪點連通域置零,多藥連通域進行標記,使用開運算,然后進行單藥連通域處理;
Strp4:對于單藥連通域和多藥連通域的處理結(jié)果進行本文區(qū)域生長分割;
Strp5:對多藥連通域的分隔結(jié)果進行形狀參數(shù)判斷,對同一膠囊的上下部分進行合并。
算法流程見圖12。
圖12 本文算法流程圖
對于分割算法性能的評價一般有主觀和客觀兩種。其中,主觀評價指標是指通過肉眼觀察,對比原圖來分析分割結(jié)果邊界是否清晰準確,是否存在粘連以及錯分的現(xiàn)象。客觀評價就是通過選擇某一評價標準來對結(jié)果進行計算測量,通過數(shù)字來表征來分割結(jié)果之間的差異。
本文采用兩種方法相結(jié)合的方式來對分割結(jié)果進行評價??陀^評價指標選擇的是差異實驗法。設(shè)S 為本文改進算法得到的藥品圖像,T 為手動分割的藥品圖像,I 代表整張?zhí)霅勰銈€,定義以下4 個參數(shù):
上式中,TP 即本文算法正確分割區(qū)域,F(xiàn)P 為本文算法錯誤分割區(qū)域;FN 為本文算法漏檢的目標區(qū)域,TN 為正確的背景區(qū)域。Sensitivityy(敏感率)表征了目標被分割到的概率,Accuracy(準確率)表征了分割結(jié)果中不是目標的概率。
我們從搜集到的圖像數(shù)據(jù)中隨機選擇10 幅圖像,分別用本文算法和手動進行分割,并用上式進行計算,計算結(jié)果見表1。
表1 本文分割算法評價表
由上表中的Sensitivity 和Accuracy 這兩列的均值和均方差可以看出,本文改進的算法對于藥品圖像有著很好的分割準確度,同時各項數(shù)據(jù)的方差都較小,說明本文算法有著較好的穩(wěn)定性。通過分析上表數(shù)據(jù)可以得出本文算法的分割結(jié)果和手動分割的結(jié)果相似,相差甚小,說明本文算法有著很高的準確率。
本文所使用的計算機處理器為Inter(R) Core(TM) i5-8300H CPU @ 2.30GHz 2.30GHz,內(nèi)存為8.0GB,軟件環(huán)境為微軟公司的Windows 10,仿真軟件為Visual Studio 2019,算法庫是Opencv 4.0。
通過對藥品圖像分析,我們發(fā)現(xiàn)處方結(jié)果圖大致有單藥片、單膠囊以及部分粘連這幾種情況,我們對這幾種情況進行分別采集各十張,原圖為3 072×2 048 分辨率,大小為280 KB,采用K 均值聚類、FCM 聚類算法、分水嶺算法以及本文的區(qū)域生長算法進行了實驗,部分結(jié)果見圖13~17。
圖13 藥品原圖
圖14 K 均值聚類結(jié)果
圖15 FCM 聚類結(jié)果
圖16 分水嶺分割結(jié)果
圖17 本文分割算法
觀察圖14 可知,K 均值聚類對于目標單一的場景下表現(xiàn)較好,可以較為清楚的將藥品目標與背景分隔開,尤其是對于藥片目標,分割結(jié)果清楚準確。但在有較多目標的場景下,一方面對于膠囊目標分割不完整,邊界部分缺失,一方面當(dāng)膠囊在藥片旁邊時容易被忽略,受膠囊表面光斑影響嚴重。
觀察圖15 可知,F(xiàn)CM 聚類算法在K 均值聚類算法中加入了軟間隔,同樣在藥品種類較為單一的情況下表現(xiàn)良好,但在多種藥品情況下會出現(xiàn)部分目標邊界不完整甚至大部分缺失的問題。
觀察圖16 可知,在手動準確的標記的情況下分水嶺算法可以較好的藥品目標從背景分離,邊界也較為清楚準確,但這一方面依賴人工標記提供的準確的先驗信息,另一方面在膠囊藥品標記信息不準確時會出現(xiàn)上下部分分離或者部分缺失的現(xiàn)象。
觀察圖17 可知,本文算法在中間過程無人為參與的情況下,對于膠囊目標、藥片目標以及混合情況、粘連情況都表現(xiàn)較好,目標分割準確,較少出現(xiàn)目標缺失或目標部分內(nèi)容缺失的情況出現(xiàn),基本滿足了醫(yī)院調(diào)價環(huán)境下藥品分割算法的需要。
表2 為100 張測試圖各算法用時結(jié)果統(tǒng)計平均值。本文算法與常見分割算法評價結(jié)果見表3。
表2 各算法所用時間表 (s)
表3 各算法評價結(jié)果表
由上述結(jié)果可以看出,K 均值聚類和FCM 聚類算法性能相似,首先是費時太久,算法收斂速度慢,而且對于膠囊的同物雙色的特性并沒有很好的識別性能,對于部分膠囊表面存在的反光光斑較敏感,分割精度較低,性能較差。
分水嶺分割算法與本文算法效果相近,都需要先對目標進行標記,但分水嶺算法存在大量的梯度運算,導(dǎo)致耗時較久,而且對于膠囊的上下部分沒有進行處理,沒有將上下部分合并為一個目標。
綜上所述,本文算法可以較好的對于醫(yī)院調(diào)劑環(huán)境下的藥品目標進行分割,提取出的目標輪廓較為準確清晰,而且區(qū)域生長算法計算較為簡單,節(jié)省時間。除此之外,本文算法對于膠囊的顏色分布特性進行了處理,基于連通域的主軸線的距離和偏轉(zhuǎn)角度差來判斷膠囊的上下部分連通域,從而進行合并。整體分割效果較好,而且耗時最短。
為了將醫(yī)院調(diào)劑環(huán)境下的藥品圖像更精確的分割出來,提出了一種改進的區(qū)域生長算法。首先對圖像進行預(yù)處理,雙邊濾波降低背景干擾點和噪聲的影響,然后用改進的區(qū)域生長算法進行藥品和藥品、藥品和背景之間的分割。本文算法使用連通域質(zhì)心及主軸線上的點作種子點,在不遺漏膠囊藥品上下部分的同時克服了生長點需人工交互的缺點。生長準則采用色差來計算,較好的實現(xiàn)了藥品和背景的分割。對于膠囊藥品,設(shè)計了連通域合并規(guī)則,實現(xiàn)了膠囊藥品的完整分割。經(jīng)測試表明,本文算法在時間復(fù)雜度和分割效果上均優(yōu)于其他常見算法。