張 璇 曾 智 孫明山
1(重慶師范大學計算機與信息科學學院 重慶 401331)
作為臨床醫(yī)學上常用的一種檢驗項目,尿常規(guī)檢驗用于泌尿系統(tǒng)疾病的臨床診斷、鑒別、療效觀察、預后評估等,同時也能夠?qū)σ鹉蛞荷煞指淖兊钠渌到y(tǒng)疾病如糖尿病、血液病、流行性出血熱等的診斷的臨床診斷和治療提供參考[1-2]。
目前主要通過干化學檢測法對尿十項試紙進行檢測。尿十項試紙主要是對尿液中的白細胞、亞硝酸鹽、尿膽原、蛋白質(zhì)、pH值、潛血、比重、酮體、膽紅素、葡萄糖共十項指標通過與標準色卡比對后進行檢測[3]。常規(guī)方式是使用尿液分析儀進行檢測,過程簡單快捷。但尿液分析儀屬于醫(yī)院專用分析儀器,不屬于消費者產(chǎn)品,對于需要長期對尿常規(guī)進行監(jiān)測的患者而言,每次都需要到醫(yī)院進行檢查,具有較大的不便利性。隨著智能手機移動終端系統(tǒng)的快速發(fā)展,越來越多的常規(guī)健康檢測可以通過手機在家里完成。利用手機終端實現(xiàn)常規(guī)尿十項檢測也成為可能。
目前,針對試紙檢測問題已提出了很多相對應的算法。孫冬梅[4]針對過敏源檢測試紙圖像使用圖像二值化和幾何變換實現(xiàn)試紙定位,采用改進的CLAHE圖像增強算法達到增強圖像細節(jié)的目的。胡勇[5]針對膠體金蛋白試紙圖像提出使用邊緣檢測和Hough變換實現(xiàn)試紙定位、傾斜矯正,并通過像素點累加法和投影法對試紙顯色區(qū)域進行分割。
現(xiàn)有的算法雖然能較好地分割出試紙條,但對于拍照角度和試紙條的擺放有一定要求,不能過于隨意。另外,由于尿液試紙中的檢測色塊會隨著不同人的尿液的檢測結(jié)果不同而變化,并且受光照影響嚴重。用手機拍照、特別是老年人在家獨自用手機拍照所帶來的定位隨意性和相應的自動分割定位的難度,以及不同手機相機內(nèi)在的色彩差異、拍照時可能會有復雜的圖像背景、不同光照條件等所帶來的顏色的差異,使得現(xiàn)有的方法不能很好地滿足尿紙條自動檢測的要求。因此,為了解決以上問題,本文提出首先采用自動白平衡對采集后的圖像進行預處理;然后利用顏色直方圖和改進的Canny算法對基于多顏色分量下的尿液試紙圖像進行試紙定位、分割;再利用顏色直方圖和水平垂直投影對檢測色塊定位、分割;最后使用歐氏距離色塊顏色識別,幫助用戶快速有效地進行尿常規(guī)檢驗,隨時掌握自己的尿檢數(shù)據(jù),使用戶能夠?qū)崟r地了解自身的健康狀況,真正地享受便捷的醫(yī)療服務。
尿常規(guī)檢測算法主要流程包括:采用自動白平衡算法解決不同光照條件下試紙顏色不均的情況;利用尿十項試紙樣本圖像在HSV顏色空間下的S分量的顏色直方圖,對試紙條進行粗分割和在RGB顏色空間下各顏色分量通過Canny算法和OSTU算法相結(jié)合進行二次試紙定位,分離前后背景;為了解決拍照角度不同導致的檢測色塊誤分割,使用透視變換算法對定位試紙進行角度矯正;基于顏色直方圖及水平垂直投影算法分割出檢測色塊;分別提取標準色卡和試紙色塊顏色特征,應用歐氏距離進行最短距離顏色識別,獲得最終結(jié)果。算法流程如圖1所示。
圖1 本文算法流程
由于圖片在不同光照條件下,試紙條容易出現(xiàn)顏色不均。如果光源不穩(wěn)定,出現(xiàn)如大片的陰影或者圖像亮度過明、過暗都是不利于高精度的識別的,會對后期色塊特征提取識別增加難度。因此針對試紙條圖像采集,會首先采用自動白平衡對試紙條進行顏色調(diào)整,使其獲取的顏色特征與真實顏色更加接近。
自動白平衡算法[6]的目的是在不同的光照條件下,通過隨著光照強度的變化自適應閾值,從而獲得更加真實的亮度。即通過確定R、G、B各顏色分量的平均值都趨向于同一個灰度G。首先通過式(1)獲取三個通道的平均值。
(1)
式中:R′、G′、B′為R、G、B各顏色通道的平均值。
再通過式(2)計算R、G、B各顏色通道的增益kr、kg、kb。
(2)
然后根據(jù)式(3)計算出圖像中每個像素點新的R、G、B像素值R1、G1、B1。
(3)
顏色特征是一種全局特征,具有平移不變性、旋轉(zhuǎn)不變性和計算簡單等特點[7]。彩色圖像與灰度圖像相比提供了更為豐富的色彩信息,彩色圖像處理中常用的顏色空間有RGB顏色空間和HSV顏色空間。手機拍照所獲得的圖片通常為RGB顏色空間。HSV模型由色調(diào)、飽和度和亮度三個顏色分量構(gòu)成[8]。與RGB顏色空間相比,HSV更容易表達顏色之間明暗、色調(diào),對于不斷變換的光照,圖像信息也能穩(wěn)定顯示[9-11]。
尿十項試紙樣本圖像如圖2所示,采用的背景為白色,能更好地突出目標顏色。通過手機采集的尿十項試紙圖像常在不同光照、不同拍照角度下,導致分割目標區(qū)域容易出現(xiàn)偏差。同時傳統(tǒng)算法中常直接使用輪廓檢測算法,然后通過尋找最大連通域?qū)D中的目標進行定位。但由于在不同光照條件下常出現(xiàn)大面積的陰影,導致尋找最大連通域的過程當中出現(xiàn)目標定位、分割失誤。
圖2 試紙樣本與HSV各分量
針對以上問題,本文提出的尿液試紙條定位包括基于HSV顏色空間S分量的顏色直方圖閾值粗分割角度矯正,以及基于RGB顏色空間各分量使用Canny邊緣檢測算法和OSTU算法相結(jié)合的自適應閾值分割。
(1) 顏色直方圖閾值分割。顏色直方圖是顏色特征的主要描述方法之一,對一幅彩色圖像中出現(xiàn)的顏色頻率進行統(tǒng)計,橫坐標為像素點的像素值,縱坐標為出現(xiàn)的頻數(shù)。顏色直方圖的計算公式如下:
Hist=f(cj)
(4)
式中:j=1,2,…,k,k表示彩色圖像中像素點數(shù)目;cj表示每個像素點的像素值;f(cj)表示該像素值出現(xiàn)的頻數(shù)。
RGB顏色空間轉(zhuǎn)換HSV顏色空間的計算如下:
(5)
實驗發(fā)現(xiàn),基于HSV顏色空間中的S分量顏色特征保存最為完整。
對手機拍攝的原圖(如圖2(a)所示)從RGB顏色空間轉(zhuǎn)換成HSV顏色空間,通過將圖2(b)中的H分量、圖2(c)中的S分量和圖2(d)中的V分量相比較,S分量中的試紙目標特征更加明顯,并對S分量進行高斯濾波降噪處理。
將S分量的色值范圍設為[0,255],通過S分量的顏色直方圖,如圖3所示,獲取波峰值T,即為當前圖片中,顏色統(tǒng)計數(shù)量最多的顏色色值。
圖3 S分量顏色直方圖
通過對找到的S分量波峰加權,從而設置高低閾值范圍。最后,使用找到的閾值范圍,在高低閾值范圍內(nèi)的視為背景,范圍以外的視為目標試紙條,進行二值圖像前后背景分割。
通過對連通域面積設置閾值,去除圖中面積大小小于m的連通域,從而降低噪聲。
由于色塊與色塊之間試紙條與背景部分相似,前后背景分割后,常出現(xiàn)試紙目標斷裂。在尋找最大連通域時,由于目標沒有全部找到,導致誤分割。通過形態(tài)學[12-13]閉運算橫向膨脹后,尋找最大連通域,定位出大致的試紙位置,這樣的方法能夠保證目標試紙條完整分割,分割結(jié)果如圖4所示。
圖4 閾值分割結(jié)果
通過獲取最大連通域外接矩形的四個角點坐標,使用透視變換將圖像轉(zhuǎn)換成俯視圖,對試紙條旋轉(zhuǎn)角度進行校正。
透視變換[14]的實質(zhì)是將圖片投影到一個新平面的過程。即將透視平面上的每一個像素點通過二維圖像透視變化公式變換到俯視圖上所對應的像素點。
二維圖像透視變化公式如下:
(6)
(7)
校正后的圖像如圖5所示。
基于HSV顏色空間中S分量的顏色直方圖閾值分割算法流程如圖6所示。
圖6 顏色直方圖閾值分割算法流程
(2) Canny邊緣檢測算法自適應閾值分割。對完成定位分割后的彩色圖像進行二次角度矯正分割,通過對RGB各顏色分量進行分析,分別進行高斯模糊及自適應中值濾波去除噪聲,再使用Sobel算子計算x方向和y方向上的梯度分量,求出梯度幅值。然后使用Canny邊緣檢測算法[15-16]和OSTU算法進行自適應閾值分割。
針對傳統(tǒng)Canny算法手動設置高低閾值的缺陷,采用OSTU算法,將經(jīng)加權梯度幅值運算得到的閾值T1、T2=T1/2,設置為Canny算法的雙閾值,增強Canny算法的自適應能力,從而獲得RGB顏色空間各分量上的二值圖像。
OSTU法[17-22]又名最大類間方差法,是一種自適應閾值的方法。它的算法思想是將圖片分成背景與目標兩個部分。背景和目標之間的類間方差越大,說明構(gòu)成圖像的兩部分的差別越大;當兩部分的類間方差越小,目標錯分為背景或背景錯分為目標的部分越多,從而選取最佳閾值。最大類間方差公式如下:
σ2=ω1ω2(μ2-μ1)2
(8)
式中:ω1和ω2分別是背景和目標在整幅圖像中所占比例;μ1和μ2分別是前景和目標的平均灰度。
最后將RGB各分量上的二值圖像進行線性融合獲得最終的二值圖像,如圖7所示。
圖7 融合后的二值圖
經(jīng)過形態(tài)學算法后的圖像如圖8所示。
圖8 橫向膨脹二值圖
找到最大面積連通域,進行試紙圖像邊緣分割。將分割后的試紙圖像進行二次角度矯正,從而保證待檢測色塊圖像分割的準確性。
定位后的尿十項試紙去除了背景區(qū)域,接下來就是對待檢測色塊的分割。由于是對尿液中的十項指標進行檢測,所以需要分割從左至右的十個色塊。研究發(fā)現(xiàn),關于位置的分割多是應用水平、垂直投影法[23]實現(xiàn)。
水平、垂直投影法的主要思想是根據(jù)試紙條邊緣信息在投影圖對應的投影模塊,找出局部最大值,從而確定檢測色塊的橫縱坐標。從試紙條結(jié)構(gòu)分析來看,首先需要通過二值圖像邊界信息進行水平投影確定試紙條的上下邊界,由上至下,統(tǒng)計當前行白色點的個數(shù),將圖像分成上下兩個部分,理想情況下各局部白點數(shù)最多的兩行,即為試紙條上、下邊界;然后需要通過邊界信息確定各檢測色塊的左右邊界,由左至右統(tǒng)計當前列白點的個數(shù),找出局部最大值即可找出左右邊界。
但由于色塊邊緣顏色分布不均,若直接使用垂直投影找左右邊界,可能找到局部最優(yōu)值,導致誤分割。傳統(tǒng)的垂直投影圖如圖9所示。
圖9 傳統(tǒng)垂直投影圖
因此本文采用了基于HSV顏色空間中S分量顏色直方圖,根據(jù)波峰值設置閾值范圍,將色塊與試紙條背景進行分割,閾值分割結(jié)果如圖10所示。
圖10 直方圖分割二值圖
再通過形態(tài)學使得邊界信息盡可能保存完整。最終試紙條二值圖像如圖11所示。
圖11 形態(tài)學二值圖
圖12 水平投影圖
圖13 垂直投影圖
圖14為最終分割出的十項尿常規(guī)檢測指標的檢測色塊。
圖14 分割的檢測色塊
圖15為試紙檢測色塊分割流程。
圖15 試紙檢測色塊分割流程
(1) 提取顏色特征。首先提取基于HSV顏色空間下標準色卡的顏色特征,通過字典建立標準顏色庫。然后再提取分割的檢測色塊的顏色特征。
(2) 顏色識別。本文以歐氏距離[24]作為檢測色塊與標準色庫之間相識性度量標準。歐氏距離是較常用于表示特征相似度量的方法,是指在空間中兩點之間的實際距離。在兩個圖像矩陣各形成了一個點,通過數(shù)學上的歐氏距離公式計算這兩個點之間的距離dist(x,y),距離最小者就是最匹配的圖像。
兩個n維向量樣本點a(x1,x2,…,xn)與樣本點b(y1,y2,…,yn)間的歐氏距離公式如下:
(9)
在HSV顏色空間中,待檢測色塊中的某一點像素值為a(h1,s1,v1),標準顏色庫中對應點的顏色為b(h2,s2,v2),通過歐氏距離公式,最相似兩幅圖的距離為:
(10)
本文算法共應用于100幅圖片,圖片為彩色RGB圖像,大小為3 968×2 976。這些圖片通過在室內(nèi)不同光源及不同角度下,使用不同安卓手機對以A4紙為背景的尿液試紙進行拍照獲得。
實驗發(fā)現(xiàn),通過在S分量閾值分割時,S分量顏色直方圖波峰值為T,當設置高閾值為h=2.5T,低閾值為l=0.2T,能更好地分割前后背景,不被光照噪聲所影響,并且將連通域面積設置閾值m=300時,能夠有效地去除噪聲。在二次定位階段,通過OSTU算法設置Canny算法的閾值,與傳統(tǒng)算法相比能更好地適應于不同圖片,使得分割效果最好。通過分割算法使分割成功率達到93%。分割算法分析如表1所示。
表1 分割算法分析
圖16為本文算法輸出結(jié)果,圖17為通過尿液分析儀給出的原始結(jié)果。通過對比發(fā)現(xiàn)本文算法對尿液試紙條進行檢測具有一定的參考作用。
圖16 本文算法結(jié)果 圖17 原始結(jié)果
將本文算法運用于手機終端,圖18為尿十項檢測試紙條分割結(jié)果,圖19為尿十項檢測試紙顏色識別結(jié)果。
圖18 試紙分割結(jié)果 圖19 試紙顏色識別結(jié)果
本文提出一種基于多顏色分量的尿液試紙識別算法。針對光照不均問題,先采用自動白平衡算法矯正圖像顏色,再將HSV顏色空間下S分量的顏色直方圖與自適應Canny算法相結(jié)合,提高尿液試紙定位準確率;針對拍照角度問題,使用透視變換,通過獲取四個角地點,糾正角度;將顏色直方圖與水平、垂直投影法相結(jié)合,最大程度保留檢測色塊邊界,方便準確分割檢測色塊;使用歐氏距離對檢測色塊進行顏色識別。
本文算法共應用于100幅圖片,這些圖片通過在不同光源及不同角度下獲得,最終,通過基于本文算法開發(fā)成的手機應用,對獲取到的尿常規(guī)檢測試紙進行識別具有一定的參考作用。與傳統(tǒng)采用尿液檢測儀相比,該方法能幫助病人更加方便、實時地了解自身的健康狀況。