關(guān)鍵詞:圖像分割;區(qū)域分割;水表數(shù)字;圖像處理
中圖分類(lèi)號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2024)26-0010-04開(kāi)放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID) :
0引言
在醫(yī)院等特殊環(huán)境中,水表需要具備高精度以便準(zhǔn)確測(cè)量非常小的水流量變化,這對(duì)于確保水資源的合理使用和控制成本至關(guān)重要。實(shí)時(shí)監(jiān)控水表讀數(shù)能夠幫助醫(yī)院管理人員及時(shí)了解水使用情況,快速檢測(cè)泄漏或異常使用模式,從而可以及時(shí)采取措施。自動(dòng)記錄水表讀數(shù)并生成報(bào)告的能力,有助于醫(yī)院進(jìn)行水資源管理和規(guī)劃。
傳統(tǒng)的人工查抄水表方法費(fèi)時(shí)費(fèi)力,正逐步被計(jì)算機(jī)自動(dòng)識(shí)別取代[1-3]。在水表讀數(shù)識(shí)別過(guò)程中,水表數(shù)字的分割主要采用手動(dòng)分割方法和列方向像素點(diǎn)灰度值累積方法。手動(dòng)分割方法的穩(wěn)健性較低,要求每張水表圖像具有高度一致性,且分割結(jié)果易出現(xiàn)無(wú)意義的聚團(tuán)[4-7];列方向像素點(diǎn)灰度值累積方法雖然穩(wěn)健性較高,但分割出的數(shù)字同樣容易帶有無(wú)意義的聚團(tuán)[8-9]。李云棟等[10]提出的一種改進(jìn)的基于連通域的分割方法雖然分割較為精準(zhǔn),但需要對(duì)所有的像素進(jìn)行連通域分析,導(dǎo)致算法執(zhí)行效率低且穩(wěn)健性較差。
因此,本文提出了一種利用區(qū)域分割算法的方法來(lái)分割水表數(shù)字。該方法能夠通過(guò)自動(dòng)選取種子點(diǎn)進(jìn)行區(qū)域分割,并剔除錯(cuò)誤的分割結(jié)果。由于該方法僅對(duì)目標(biāo)數(shù)字進(jìn)行精準(zhǔn)切割,分割結(jié)果極少出現(xiàn)無(wú)關(guān)聚團(tuán),從而提高了分割的精準(zhǔn)性和穩(wěn)健性。
1 分割算法
1.1 區(qū)域分割算法
區(qū)域分割算法在分割圖像時(shí),首先需要確定種子點(diǎn)以及表示“相似程度”的閾值。區(qū)域分割算法的核心在于尋找符合閾值要求的種子點(diǎn)周?chē)南袼攸c(diǎn),并形成一個(gè)連通圖。種子點(diǎn)的確定通常有兩種方式:一是手動(dòng)確定種子點(diǎn),二是依據(jù)預(yù)先設(shè)定的規(guī)則自動(dòng)選取種子點(diǎn)。
在確定種子點(diǎn)和閾值后,算法開(kāi)始對(duì)周?chē)袼攸c(diǎn)進(jìn)行檢測(cè)。這些檢測(cè)點(diǎn)包括種子點(diǎn)的上、下、左、右、左上、右上、左下和右下這8個(gè)方向的像素點(diǎn),如圖1 所示。分別計(jì)算這些點(diǎn)與種子點(diǎn)的差值。如果差值小于或等于閾值,則將這些點(diǎn)標(biāo)記為下一步進(jìn)行區(qū)域生長(zhǎng)的種子點(diǎn);如果差值大于閾值,則不標(biāo)記這些點(diǎn)。
這種方法通過(guò)在圖像中逐步“生長(zhǎng)”區(qū)域,使得能夠有效對(duì)感興趣的區(qū)域進(jìn)行分割,從而提高分割的精準(zhǔn)性和穩(wěn)健性。
在區(qū)域分割算法中,對(duì)所有種子點(diǎn)求其像素值的平均值,并將其作為這些種子點(diǎn)的新的像素值。隨后,對(duì)這些新合并的種子點(diǎn)進(jìn)行新一輪的檢測(cè)。此過(guò)程重復(fù)進(jìn)行,直到?jīng)]有新的種子點(diǎn)可合并為止,此時(shí)分割結(jié)束。
1.2 列方向像素點(diǎn)灰度值累積算法
列方向像素點(diǎn)灰度值累積算法通常用于處理二值圖像。這種方法首先計(jì)算圖像中每一列的像素值之和,然后根據(jù)先驗(yàn)知識(shí)確定一個(gè)分割閾值。當(dāng)某列的像素值之和小于該閾值時(shí),這一列即被視為分割的邊界。
例如,要對(duì)圖2中的白色區(qū)域進(jìn)行分割,可以根據(jù)圖3中列像素灰度值的統(tǒng)計(jì)結(jié)果進(jìn)行操作。在列方向上,黑色色塊的灰度值累積之和為0,而白色色塊的累積之和為52。假設(shè)設(shè)定的閾值為52,由于黑色色塊在列方向上的灰度值累積之和為0,小于閾值,這可以用于找出白色色塊與黑色色塊的分割邊界。
2 圖像預(yù)處理
2.1查找數(shù)字大概區(qū)域
首先,將水表圖像轉(zhuǎn)換為灰度圖像?;叶葓D像是指僅有一種采樣顏色的圖像,通常從黑到白包含256 級(jí)灰度。轉(zhuǎn)化為灰度圖像可以為后續(xù)的邊緣檢測(cè)操作做好準(zhǔn)備。如圖4所示,展示了轉(zhuǎn)換后的水表灰度圖像。由于碼字區(qū)域的灰度值較小且連續(xù),并與背景形成明顯的差異,因此可以通過(guò)以下操作獲取碼字的概略區(qū)域。
接下來(lái),首先對(duì)圖像進(jìn)行邊緣檢測(cè)。邊緣檢測(cè)采用Roberts算子,因?yàn)樽鳛橐浑A微分算子,Roberts算子簡(jiǎn)單且計(jì)算量小,并對(duì)圖像細(xì)節(jié)反應(yīng)敏感。通過(guò)這一步,可以得到包含水表圖像中各組成部分邊緣的二值圖像,如圖5所示。在獲取邊緣檢測(cè)圖像后,接下來(lái)進(jìn)行腐蝕和閉運(yùn)算。
對(duì)圖像進(jìn)行閉運(yùn)算后,仍然存在許多較小的聚團(tuán),這些聚團(tuán)會(huì)影響碼字區(qū)域的準(zhǔn)確定位,因此需要進(jìn)行去除處理。經(jīng)過(guò)處理后,可以看到,最終獲得的圖像中白色區(qū)域便是水表數(shù)字的大致區(qū)域,如圖8所示。
2.2 定位碼字區(qū)域并分割
對(duì)碼字區(qū)域的分割,筆者采用累積像素值的方法。首先對(duì)碼字區(qū)域的上下邊界進(jìn)行查找?;谙闰?yàn)知識(shí),確定一個(gè)合適的閾值。由于圖像是二值圖像,列方向灰度值的累積實(shí)際上就是計(jì)算每列中表示白色點(diǎn)的像素總和,灰度值即為像素值。從得到圖像的中間行開(kāi)始,分別向上下兩個(gè)方向逐行累積像素值。當(dāng)某行的像素累積值小于該閾值時(shí),即認(rèn)為該行是水表數(shù)字區(qū)域邊界的橫坐標(biāo)。同樣地,利用列方向累積像素值的方法,可以得到水表數(shù)字區(qū)域左右邊界的縱坐標(biāo)。圖9和圖10分別為圖像在列方向和行方向上像素點(diǎn)灰度值累積的統(tǒng)計(jì)圖。
根據(jù)上文所得的碼字區(qū)域的上下左右邊界的橫縱坐標(biāo),在原始的水表灰度圖像上進(jìn)行裁剪,就可以獲得水表數(shù)字區(qū)域的圖像。結(jié)果如圖11所示。
3 水表數(shù)字分割
3.1 二值化處理
剪切得到的灰度圖像的像素值范圍較廣,由于難以準(zhǔn)確確定圖像中水表數(shù)字的像素值范圍,直接進(jìn)行基于區(qū)域分割算法的分割會(huì)存在一定困難。因此,筆者對(duì)定位剪切后的圖像進(jìn)行二值化處理。二值化圖像是指將圖像中所有像素點(diǎn)的值根據(jù)一定方法劃分為0和1。在劃分過(guò)程中需要確定閾值,這里的二值化閾值可以采用Otsu(大津法)獲得。Otsu方法是由日本學(xué)者大津于1979年提出的一種自適應(yīng)閾值確定方法,主要用于灰度圖像的背景與目標(biāo)分割。該方法通過(guò)求解背景和目標(biāo)之間的最大類(lèi)間方差來(lái)確定全局閾值。
通過(guò)二值化處理,可以將所有表示水表數(shù)字的像素值設(shè)為1,從而統(tǒng)一水表數(shù)字的像素值,方便種子點(diǎn)的選取以及區(qū)域分割算法閾值的設(shè)置。
3.2 選取種子點(diǎn)
首先,選擇圖像中間行的一系列像素點(diǎn)作為種子點(diǎn)的備選點(diǎn)。由于圖像是二值化的,因此像素點(diǎn)的值只有0和1,且表示水表數(shù)字的像素值為1,所以在進(jìn)行區(qū)域分割算法時(shí),閾值設(shè)為0。從左邊起始的第一個(gè)像素點(diǎn)開(kāi)始檢查:如果該像素值為0,則跳過(guò)該點(diǎn),檢查下一個(gè)像素點(diǎn);如果值為1,則將該點(diǎn)作為種子點(diǎn),進(jìn)行一次區(qū)域分割算法運(yùn)算,求出包含該點(diǎn)的碼字圖像。
這一過(guò)程中可能存在的問(wèn)題是,某兩個(gè)種子點(diǎn)可能被同一個(gè)碼字所包含,逐點(diǎn)檢查可能會(huì)生成重復(fù)的碼字圖像。為了解決這個(gè)問(wèn)題,采用的方法是在利用區(qū)域分割算法分割出一個(gè)碼字圖像后,在下一次檢查時(shí)直接跳過(guò)M個(gè)像素點(diǎn)。這個(gè)M值取決于圖像中碼字的寬度,可以根據(jù)先驗(yàn)知識(shí)選擇一個(gè)合適的M值,如圖13所示。
3.3 剔除無(wú)關(guān)圖像
在進(jìn)行區(qū)域分割算法時(shí),一些無(wú)關(guān)的像素點(diǎn)可能會(huì)被錯(cuò)誤地當(dāng)作碼字圖像分割出來(lái),這不僅導(dǎo)致生成無(wú)意義的圖像,還可能引起圖像分割錯(cuò)誤。為了解決這個(gè)問(wèn)題,在執(zhí)行區(qū)域分割算法的過(guò)程中,可以通過(guò)計(jì)算生成圖像的寬度來(lái)做判斷。
具體步驟是:在生成圖像后,若其寬度小于某個(gè)預(yù)設(shè)值,則直接舍棄該圖像,視為無(wú)關(guān)點(diǎn)處理。同時(shí),下一個(gè)種子點(diǎn)正常選取,不進(jìn)行跳轉(zhuǎn)。這個(gè)寬度閾值同樣取決于圖像中碼字的期望寬度,可以根據(jù)實(shí)際需要設(shè)置一個(gè)合適的值,如圖14所示。這樣做能夠有效減少無(wú)效分割,并提高圖像分割的準(zhǔn)確性。
3.4 對(duì)分割圖像裁剪
分割出的圖像需要進(jìn)一步裁剪,以形成獨(dú)立的碼字圖片。裁剪的方法是首先識(shí)別圖像中碼字的左右邊緣,然后對(duì)圖像進(jìn)行裁剪,去除多余的圖像內(nèi)容,如圖15、圖16所示。
4 實(shí)驗(yàn)
4.1 實(shí)驗(yàn)準(zhǔn)備
為了驗(yàn)證區(qū)域分割算法在分割圖像水表數(shù)字時(shí)的正確性和有效性,本文分別采用了區(qū)域分割算法、列方向像素點(diǎn)灰度值累積的方法以及手動(dòng)分割方法進(jìn)行實(shí)驗(yàn)對(duì)比。算法的實(shí)驗(yàn)環(huán)境為Windows 10操作系統(tǒng),使用Matlab平臺(tái)。實(shí)驗(yàn)所用圖像為一般家用水表圖像,其中水表數(shù)字居中且清晰可見(jiàn),圖像尺寸為640×480像素,如圖17所示。
4.2 實(shí)驗(yàn)結(jié)果與分析
實(shí)驗(yàn)結(jié)果如圖18、圖19、圖20所示。
從結(jié)果可以看出,當(dāng)分割第二和第三個(gè)水表數(shù)字時(shí),使用列方向像素點(diǎn)灰度值累積方法和手動(dòng)分割方法所得到的分割結(jié)果中都存在與數(shù)字無(wú)關(guān)的聚團(tuán)。這些聚團(tuán)可能會(huì)干擾后續(xù)的圖像處理,因此分割結(jié)果不如本文提出的方法那樣理想,如圖21所示。
5 結(jié)論
針對(duì)醫(yī)院特殊環(huán)境中需要高精度實(shí)時(shí)讀取水表讀數(shù)的應(yīng)用場(chǎng)景,本文提出了一種基于區(qū)域分割算法的水表數(shù)字分割方法。文章首先介紹了區(qū)域分割算法的基本原理,隨后描述了圖像分割的預(yù)處理過(guò)程,包括去除無(wú)關(guān)信息和定位碼字區(qū)域。在此基礎(chǔ)上,重點(diǎn)講解了水表數(shù)字分割的實(shí)際操作,包括種子點(diǎn)的選取方法、可能存在的問(wèn)題及其解決方案,以及對(duì)分割圖像的進(jìn)一步處理。最后,通過(guò)實(shí)驗(yàn)將本文提出的方法與列方向像素點(diǎn)灰度值累積的方法進(jìn)行對(duì)比,驗(yàn)證了本文方法在分割水表數(shù)字上的精準(zhǔn)性和穩(wěn)健性。此外,該圖像識(shí)別方法也可應(yīng)用于醫(yī)院自助影像膠片打印等場(chǎng)景。