王希暢,呂學強,何 健,董志安
(1.北京信息科技大學 網(wǎng)絡(luò)文化與數(shù)字傳播北京市重點實驗室,北京 100101;2.北京洛奇智慧醫(yī)療科技有限公司,北京 100015;3.清華大學互聯(lián)網(wǎng)產(chǎn)業(yè)研究院,北京 100084)
隨著信息化時代的到來,醫(yī)療化驗單識別已成為醫(yī)療領(lǐng)域重要的研究話題。醫(yī)療OCR[1-2](optical character recognition,光學字符識別)生成的電子化驗單可以解決紙質(zhì)化驗單數(shù)量過大,不便于保存,且患者無法正確理解各項指標含義的困擾[3]。而區(qū)域檢測是指需檢測到化驗單的檢驗項區(qū)域,為化驗單識別做預(yù)處理,對提取化驗單的有效信息進而進行后續(xù)的自動處理具有重要的作用。因此如何檢測檢驗項區(qū)域成為一項必不可少的研究。利用合適的檢測方法,可以得到較準確的檢驗項區(qū)域,對之后的識別[4-5]起到了重要的作用。
與其他區(qū)域檢測不同,醫(yī)療化驗單具有規(guī)定版型的特征,可以根據(jù)化驗單中的直線特點進行檢測。因此文中基于直線檢測進行化驗單檢驗項的區(qū)域檢測。在直線檢測領(lǐng)域內(nèi),霍夫變換占據(jù)著核心地位,分為標準霍夫變換與累積概率霍夫變換。同時,結(jié)合檢驗項區(qū)域特征,提出了基于二值化的單側(cè)區(qū)域檢測與雙側(cè)區(qū)域檢測方法,適用于不同傾斜程度的化驗單。
綜上所述,以某醫(yī)院真實化驗單為實驗數(shù)據(jù)進行區(qū)域檢測并切割,通過應(yīng)用不同的區(qū)域檢測方法,對比區(qū)域切割的效果,對每種方法所適合的場景進行分析。
為尋找合適的區(qū)域檢測方法進行化驗單檢測,下面將著重介紹三種基于直線檢測的方法:基于霍夫直線檢測、單側(cè)區(qū)域檢測、雙側(cè)區(qū)域檢測。不同方法的區(qū)域檢測效果不同,利用合適的區(qū)域檢測方法可以得到較好的區(qū)域檢測效果。
1.1.1 霍夫直線檢測原理
霍夫直線檢測[6]在計算機視覺領(lǐng)域中有著重要的研究意義,其基本原理在于利用圖像空間中的邊緣像素點映射參數(shù)空間中參考點的可能軌跡。即圖像空間與參數(shù)空間中的點線是一一對應(yīng)的,圖像空間中的某個點對應(yīng)著參數(shù)空間中的某條線,反之同理。由此可知,參數(shù)空間中多條線映射著圖像空間中多個不同的點,而多條線的交點即為圖像空間中的某條直線[7],通過計算累計結(jié)果的局部最大值得到直線集合。
依照上述原理進行圖像中的直線檢測,利用公式ρ=xcosθ+ysinθ求解兩空間的對應(yīng)關(guān)系[8]。首先遍歷圖像中的像素點,將像素點的坐標值與規(guī)定范圍內(nèi)θ角度值代入公式計算距離ρ值,以ρ值與θ角度值為橫縱坐標存入計數(shù)器矩陣中,計算兩值相同的像素點的數(shù)量。每個像素點的角度變換極值為180。,均遍歷后得到計數(shù)器矩陣。在規(guī)定閾值的前提下,矩陣中元素值超過閾值的橫縱坐標(θ,ρ)為直線在參數(shù)空間中的映射表示,代入公式求解x值與y值即得到基于霍夫變換[9]檢測到的直線坐標集合。
1.1.2 邊緣檢測
為使醫(yī)療化驗單區(qū)域檢測的效果更佳,在霍夫直線檢測之前對圖像進行邊緣檢測[10]。所謂邊緣是指圖像信息周圍灰度值急劇變化的像素集合,是不同屬性區(qū)域的交界處,通常代表著內(nèi)容的變化[11-12],它是圖像分割所依賴的最重要的依據(jù)。
Canny邊緣檢測包含四個步驟:(1)利用高斯濾波器進行濾波操作,降低噪聲點的干擾;(2)使用Sobel算子,計算各個點的梯度幅值與梯度方向;(3)利用非極大值抑制,消除邊緣檢測的雜散效應(yīng);(4)通過設(shè)置雙閾值,確定邊緣。
本節(jié)針對邊緣檢測使用python環(huán)境的cv2.Canny()函數(shù)[13],該函數(shù)對上述功能進行封裝,可直接調(diào)用。在調(diào)用時需設(shè)置閾值1與閾值2,一般來說閾值2大于閾值1,利用閾值2可檢測出大部分明顯的邊緣,確定真實邊緣,但仍有紕漏。需要設(shè)置[14]較小的閾值1連接斷斷續(xù)續(xù)的直線,確定潛在邊緣。
設(shè)置合適的閾值可以較為完整地顯示圖像中的輪廓信息,雙閾值設(shè)置過大或過小時均會造成圖像信息的不準確。雙閾值均過小時除描述輪廓外會產(chǎn)生較多雜質(zhì),即篩選條件過低,將不屬于輪廓的噪聲也一并顯示,容易對區(qū)域檢測造成干擾。而雙閾值過大代表著篩選條件過高,原本圖像中的輪廓易被當作雜質(zhì)忽略,會篩除真實邊緣,無法完整表示圖像輪廓信息,造成圖像信息缺失。
如上所述,閾值過大或過小均會造成圖像輪廓信息無法正確顯示。因此,找到合適的雙閾值可以有效地對圖像進行邊緣檢測。經(jīng)過對比,實驗設(shè)置的雙閾值為(50,150),可較為完整地顯示圖像輪廓,無其余雜質(zhì),效果較佳。
1.1.3 基于霍夫直線檢測具體流程
利用霍夫直線檢測進行醫(yī)療化驗單的區(qū)域檢測具體流程如圖1所示。
圖1 區(qū)域檢測具體流程
首先,對化驗單灰度圖進行邊緣檢測生成二值圖。再利用概率霍夫變換函數(shù)cv2.HoughLinesP()生成檢測到的所有線段頭尾坐標集合。由于集合中有部分線段不符合后續(xù)區(qū)域檢測的要求,因此需要對線段集合進行篩選。篩選條件設(shè)置為兩個:(1)刪除豎直線段,即起點與終點橫坐標相差距離較小的線段;(2)刪除平行距離過近的線段,由于化驗單中的黑線不只由一行像素點表示,因此需刪去相鄰的線段,保留靠近下邊緣的線段。
將篩選后的線段縱坐標放入新的集合,需在該集合中自動檢測出檢驗項區(qū)域的上下邊界,篩除不符合條件的線段。該醫(yī)院化驗單的特點為檢驗項呈現(xiàn)在表格之中。因此,可基于該特點確定區(qū)域上邊界max_up與下邊界max_down。通過比較相鄰兩直線的距離進行判斷,直線相差距離較大的下方直線為下邊界,上邊界為距離較小的上方直線,依據(jù)最終上下邊界進行切割即得到化驗單檢驗項區(qū)域。
該方法的難點在于調(diào)試合適的參數(shù),使檢驗項區(qū)域檢測效果達到最佳。邊緣檢測,霍夫直線檢測均需要針對不同的醫(yī)療化驗單進行閾值調(diào)試,往往不同化驗單所需閾值不同,且調(diào)試閾值較花費時間,故該方法無法對大量醫(yī)療化驗單進行區(qū)域檢測。
由于醫(yī)療化驗單具有固定的版型,因此本節(jié)通過二值圖的黑色像素點是否連續(xù)來判斷直線坐標,根據(jù)圖像單側(cè)檢測到的直線坐標進行區(qū)域檢測。利用該方法檢測化驗單的檢驗項區(qū)域可較準確地提取出所需部分。
1.2.1 圖像二值化
為使醫(yī)療化驗單中區(qū)域區(qū)分更加明顯,預(yù)先利用python環(huán)境的cv2.cvtColor()函數(shù)將原始RGB圖像轉(zhuǎn)換為灰度圖[15],將色彩三通道變?yōu)閱瓮ǖ?,以此減少運算量;再對灰度圖二值化達到突出前景的目的。二值化是指通過設(shè)置閾值,把圖像的每個像素值按照閾值大小設(shè)定為0或255,使圖像呈黑白效果,有效地突出圖像輪廓,可明顯區(qū)分圖像前景與背景,方便提取圖像中的信息,降低維度。
二值化處理中最重要的是閾值選取,需要根據(jù)閾值的大小判斷像素點的值,不同閾值的選取會呈現(xiàn)不同的圖像效果,合適的閾值選取會提高單側(cè)區(qū)域檢測方法的檢測準確性。閾值選取分為全局閾值與局部閾值。全局閾值是指圖像像素均按照一個閾值來劃分:大于該值的像素群和小于該值的像素群,該閾值選取方法較單一,無法根據(jù)圖像亮度等因素進行閾值設(shè)定,對光照不均勻的圖像容易出現(xiàn)錯誤的二值分割;局部閾值是指按照圖像中不同部分的不同亮度來計算每一個區(qū)域的閾值[16-17],該方法按照區(qū)域特點[18]設(shè)定不同閾值。為準確地突出每一部分的輪廓,避免光照不均勻等誤差,實驗將使用局部自適應(yīng)閾值法進行圖像預(yù)處理。
局部自適應(yīng)閾值法[19]是根據(jù)像素的鄰域塊的像素值分布來確定該像素位置上的二值化閾值。通過調(diào)用函數(shù)cv2.adaptiveThreshold()對灰度圖實現(xiàn)二值化,針對每一個像素點設(shè)置相應(yīng)的閾值,即對該像素點周圍的像素值加權(quán)平均,并減去一設(shè)定常數(shù),從而得到該像素點的閾值。該方法打破了全局閾值的束縛,減少了相對誤差。
1.2.2 單側(cè)區(qū)域檢測具體流程
單側(cè)區(qū)域檢測是基于醫(yī)療化驗單二值圖實現(xiàn)的,按照判定范圍分為左側(cè)區(qū)域檢測與右側(cè)區(qū)域檢測,即從不同側(cè)對化驗單進行檢驗項區(qū)域檢測。二者針對不同傾斜方向的圖像有著不同的效果。單側(cè)區(qū)域檢測具體流程如圖2所示。
圖2 單側(cè)區(qū)域檢測具體流程
首先,對醫(yī)療化驗單灰度圖進行自適應(yīng)閾值化生成二值圖,大于閾值的像素值設(shè)為255,反之則設(shè)為0。再根據(jù)待測圖像的特征輸入判定范圍,可選擇左側(cè)或右側(cè)進行區(qū)域檢測,本節(jié)設(shè)判定長度為40。從圖像縱軸起點開始判定,若該行像素點均為黑色,則將該行橫坐標計入直線集合中;若存在白色像素點,則跳到下一行,以此循環(huán)。將范圍內(nèi)的像素點均遍歷過后,即得到初檢測的直線集合。
上述所得到的直線集合是范圍內(nèi)未經(jīng)篩選的全部直線,為找出檢驗項區(qū)域的上下邊界,需對該集合進行篩選[20],篩選條件與基于霍夫檢測方法相同,篩選后即得到檢驗項區(qū)域上下邊界,依據(jù)檢測到的上下邊界進行區(qū)域切割。
單側(cè)區(qū)域檢測的特點是以單側(cè)檢測的坐標為基準進行切割,對于傾斜角度較小的化驗單具有良好的檢測效果,不同側(cè)的區(qū)域檢測方法適用于不同傾斜方向的化驗單。同時,該方法無需耗費過多時間進行參數(shù)調(diào)試,即可實現(xiàn)大量化驗單的檢驗項區(qū)域檢測。
雙側(cè)區(qū)域檢測是在單側(cè)區(qū)域檢測的基礎(chǔ)上完成的,具體流程相似。二者均預(yù)先對醫(yī)療化驗單灰度圖進行二值化處理,生成像素值為0或255的二值圖;再利用判定直線算法產(chǎn)生初直線集合;最后基于篩選條件生成檢驗項區(qū)域的上下邊界,以此完成檢驗項區(qū)域檢測。但不同于單側(cè)的左側(cè)遍歷或右側(cè)遍歷,雙側(cè)區(qū)域檢測的特點是相繼輸入左側(cè)與右側(cè)的判定范圍,分別實現(xiàn)上述過程后返回兩組輸出值,對比兩組輸出值生成檢驗項區(qū)域的上下邊界,以此進行區(qū)域切割。
直線判定范圍是決定區(qū)域檢測效果的重要因素,合適的判定范圍可優(yōu)化檢驗項區(qū)域的檢測效果,雙側(cè)區(qū)域檢測需設(shè)定不同側(cè)的直線判定范圍。設(shè)醫(yī)療化驗單寬度為w,寬度系數(shù)為100。實驗分別對比了橫軸起點為左側(cè)w/25,左側(cè)w/6,右側(cè)w/6的圖像信息。結(jié)果表明圖像在不同的范圍內(nèi)呈現(xiàn)不同的信息。故選定左側(cè)w/6與右側(cè)w/6作為雙側(cè)區(qū)域檢測范圍。
左側(cè)與右側(cè)分別輸出檢驗項區(qū)域上下邊界的目的是防止左右傾斜相差過大,為均衡左右邊界坐標,減少雜質(zhì)切割,即對左右兩側(cè)的輸出值進行對比得到最終的上下邊界(max_up,max_down),并進行檢驗項區(qū)域切割。
通過對比左右側(cè)返回的坐標,判斷該化驗單是否處于傾斜狀態(tài)。若傾斜角度過大,可依據(jù)四點坐標進行傾斜圖像的矯正。
上文介紹了三種不同的區(qū)域檢測方法:基于霍夫直線檢測、單側(cè)區(qū)域檢測與雙側(cè)區(qū)域檢測方法,下面將針對三種方法的檢測效果進行分析總結(jié)。實驗數(shù)據(jù)為某醫(yī)院30張真實醫(yī)療化驗單:16張手機拍攝+14張高拍儀拍攝。針對以下問題展開具體分析:(1)針對不同設(shè)備拍攝的化驗單,三種區(qū)域檢測方法效果是否相同;(2)是否對所有類型的化驗單圖像均可準確檢測,如在不同傾斜角度下拍攝的化驗單。
據(jù)高拍儀拍攝的14張圖像顯示,由于高拍儀設(shè)備具有自動裁剪與亮度均勻的特點,可精準裁剪化驗單的整體輪廓。故拍攝的圖像均為水平放置,且無背景噪聲。
由此可見,醫(yī)療化驗單經(jīng)高拍儀拍攝后,均顯示為規(guī)整模式的圖像,無區(qū)域檢測難度。分別利用三種區(qū)域檢測方法對14張高拍儀拍攝的化驗單進行檢測,發(fā)現(xiàn)由于化驗單的類型相同,任意一種方法均能準確地檢測出14張圖像的檢驗項區(qū)域,檢測效果良好且相同。因此,若對高拍儀拍攝的醫(yī)療化驗單進行區(qū)域檢測,采用任意一種檢測方法均可。
針對16張手機拍攝的醫(yī)療化驗單進行區(qū)域檢測時發(fā)現(xiàn),不同于高拍儀拍攝的化驗單,由于手機拍攝缺乏專業(yè)性,會出現(xiàn)化驗單傾斜、背景噪聲等問題,對區(qū)域檢測造成干擾。因此對每種方法所適合的檢測場景展開研究。
(1)由于霍夫直線檢測有設(shè)置閾值的限制,利用基于霍夫直線檢測方法進行區(qū)域檢測時,需設(shè)置最小線長度閾值(minLineLength)與最大線差值(maxLineGap),因此研究不同閾值與化驗單的關(guān)系是區(qū)域檢測的基礎(chǔ)。為確定不同閾值對同一張醫(yī)療化驗單區(qū)域檢測效果的影響,設(shè)置不同閾值進行對比實驗。選定任意一張手機拍攝的醫(yī)療化驗單,在該化驗單的基礎(chǔ)上設(shè)置不同的最小線長度閾值(minLineLength),并對檢測效果進行對比。首先對化驗單a選定兩個不同的最小線長度閾值,分別為147與180??梢钥闯觯瑢瀱蝍進行閾值調(diào)試時,閾值為147的檢測效果較好,可較準確的檢測出檢驗項區(qū)域。
由此可得,對于同一張手機拍攝的醫(yī)療化驗單,設(shè)置不同的閾值檢測效果有明顯差異。因此,對醫(yī)療化驗單進行區(qū)域檢測時,需針對不同化驗單進行閾值的調(diào)試,閾值可直接影響檢測效果。將閾值設(shè)為最佳數(shù)值時能準確地檢測出醫(yī)療化驗單的檢驗項區(qū)域,檢測效果較好。
為更清晰地分析基于霍夫直線檢測的區(qū)域檢測方法適合的場景,需以同一閾值對不同的醫(yī)療化驗單進行區(qū)域檢測。在化驗單a中最小線長度閾值為147時檢測效果較佳,故利用該閾值對化驗單b進行區(qū)域檢測。通過對比同一閾值下不同化驗單的檢測效果判斷該方法能否進行批量化驗單的區(qū)域檢測。實驗結(jié)果如圖3所示,圖3(a)為當minLineLength=147時對化驗單a進行檢測的效果,圖3(b)為當minLineLength=147時,對另一張手機拍攝的化驗單b進行區(qū)域檢測的效果,可明顯看出,效果不佳。
(a)當minLineLength=147時化驗單a的檢測效果
(b)當minLineLength=147時化驗單b的檢測效果
如上文所述,基于霍夫直線檢測的區(qū)域檢測方法應(yīng)用在手機拍攝的化驗單上有一定的局限性。當對某張化驗單進行不同閾值測試時,可根據(jù)檢測效果得到適合該化驗單的最佳閾值;利用該閾值對其他化驗單進行檢測時發(fā)現(xiàn)效果較差,是由于手機拍攝的圖像類型不盡相同,例如傾斜程度的不同會產(chǎn)生不同的干擾。因此對于手機拍攝的單張化驗單,需調(diào)到適合該化驗單的檢測閾值進行檢測。不同圖像的檢測閾值往往不同,且調(diào)試到合適的閾值較花費時間,故無法應(yīng)用此方法對大批量化驗單進行檢驗項區(qū)域檢測。
(2)單側(cè)區(qū)域檢測方法沒有霍夫閾值的限制,因此無需對不同化驗單進行閾值調(diào)試,檢測花費時間較少。該方法分為左側(cè)區(qū)域檢測與右側(cè)區(qū)域檢測,即按照左側(cè)或右側(cè)檢測的坐標進行檢驗項區(qū)域切割。二者適用于不同傾斜方向的圖像,對順時針傾斜或逆時針傾斜的化驗單有不同的檢測效果。若利用左側(cè)檢測方法對順時針傾斜的化驗單進行區(qū)域檢測,可較準確地檢測出檢驗項區(qū)域,減少背景雜質(zhì)的出現(xiàn)。通過對比不同方法對同一傾斜圖像的檢測效果,找到適合該類型圖像的檢測方法。如圖4(a)為對順時針傾斜的化驗單進行左側(cè)檢測的效果,圖4(b)為對相同圖像進行右側(cè)檢測的效果。
經(jīng)對比可知,左側(cè)區(qū)域檢測方法適用于順時針傾斜的化驗單圖像,依照左側(cè)檢測的坐標對該類型圖像進行切割可減少背景噪聲,防止切割到其余雜質(zhì)。同理,針對逆時針傾斜的化驗單圖像,利用右側(cè)區(qū)域檢測方法較為合適,以右側(cè)檢測到的邊界線對逆時針傾斜的圖像進行區(qū)域切割,可得到較準確的檢驗項區(qū)域。
(a)對順時針傾斜的化驗單左側(cè)檢測的效果
(b)對順時針傾斜的化驗單右側(cè)檢測的效果
綜上所述,單側(cè)區(qū)域檢測方法適用于不同傾斜方向的化驗單。根據(jù)化驗單的狀態(tài)選擇左側(cè)檢測或右側(cè)檢測,可得到較優(yōu)效果。即對不同傾斜方向的醫(yī)療化驗單進行區(qū)域檢測,需選擇適合該檢測場景的區(qū)域檢測方法。
(3)對手機拍攝的16張醫(yī)療化驗單進行區(qū)域檢測時發(fā)現(xiàn),雙側(cè)區(qū)域檢測的特點是會返回左右兩側(cè)檢測到的縱軸坐標值,該值為檢驗項區(qū)域的上下邊界坐標。當圖像趨于傾斜時返回的坐標會有明顯差異,左右兩側(cè)坐標未處于同一水平線,可以此判斷圖像是否處于傾斜狀態(tài)。通過對比左右兩側(cè)坐標值,將傾斜圖像校正并切割檢驗項區(qū)域。
醫(yī)療領(lǐng)域的發(fā)展已成為社會熱點,醫(yī)療化驗單識別在醫(yī)療領(lǐng)域中占據(jù)著重要的研究地位。檢驗項區(qū)域檢測是化驗單識別必不可少的預(yù)處理,前者的檢測效果對識別的準確率有著重要的影響。因此找到區(qū)域檢測方法所適合的檢測場景有著重要的研究意義。
該文提出了三種區(qū)域檢測方法,分別描述每種方法的原理與流程,為后續(xù)對比實驗奠定基礎(chǔ)。同時,以某醫(yī)院真實化驗單為實驗數(shù)據(jù),利用不同設(shè)備對醫(yī)療化驗單進行拍攝,通過對比化驗單的區(qū)域檢測效果對每種方法適合的拍攝情景進行說明。
不同的區(qū)域檢測方法適合不同類型的化驗單。根據(jù)化驗單特點找到適合的區(qū)域檢測方法,可得到較好的檢測效果,為后續(xù)的識別做鋪墊,效果顯著。