二值圖像重構方法及裝置與流程
2023-06-11 22:09:11 3
本發明涉及圖像處理
技術領域:
,具體而言,涉及一種二值圖像重構方法及裝置。
背景技術:
:二值圖像的壓縮與重構被廣泛應用於圖像處理、工農業生產檢測、交通與公共安全監測等領域的對象識別和圖像理解任務之中。在各種壓縮方法中,使用二值圖像中區域的骨架來進行壓縮是主要方法之一,骨架配合上各骨架點處的區域最大圓盤半徑值,也可以從理論上實現區域的無損壓縮和重構。由於骨架本身可以作為區域形狀的描述特徵之一,在形狀匹配、形狀分析方面具有重要應用,因此在很多圖像處理與對象識別應用中,骨架以及基於骨架的區域重構具有重要意義。但是,二值圖像重構是一種基礎且頻繁使用的操作,因此重構速度的提高,對於很多應用的整體性能提高有著顯著的影響。技術實現要素:本發明的目的在於提供一種二值圖像重構方法,用以改善上述問題。本發明的另一目的在於提供一種二值圖像重構裝置,用以改善上述問題。為了實現上述目的,本發明實施例採用的技術方案如下:本發明提供了一種二值圖像重構方法,其包括:獲取當前骨架點對應的當前最大圓形區域內每個列的遊程,其中,當前骨架點為二值圖像的中軸線上的像素點;判斷當前最大圓形區域的半徑與預先給定的切換半徑閾值的大小;若當前最大圓形區域的半徑小於或等於切換半徑閾值,則直接根據遊程重構出結果二值圖像,若當前最大圓形區域的半徑大於切換半徑閾值,則將當前最大圓形區域內的遊程與其他最大圓形區域內的遊程進行合併操作,得到二值圖像每個列的運算結果遊程樹,並根據結果遊程樹重構出結果二值圖像。本發明還提供了一種二值圖像重構裝置,遊程獲取模塊,用於獲取當前骨架點對應的當前最大圓形區域內每個列的遊程,其中,當前骨架點為二值圖像的中軸線上的像素點;圖像重構模塊,用於判斷當前最大圓形區域的半徑與預先給定的切換半徑閾值的大小;若當前最大圓形區域的半徑小於或等於切換半徑閾值,則直接根據遊程重構出結果二值圖像,若當前最大圓形區域的半徑大於切換半徑閾值,則將當前最大圓形區域內的遊程與其他最大圓形區域內的遊程進行合併操作,得到二值圖像每個列的運算結果遊程樹,並根據結果遊程樹重構出結果二值圖像。與現有技術相比,本發明提供的一種二值圖像重構方法及裝置,通過獲取當前骨架點對應的當前最大圓形區域內每個列的遊程,以合併遊程的方法來實現以當前骨架點為圓心、以當前最大圓形區域半徑為半徑的重構圓形區域與其他重構區域的快速合併操作,快速地實現二值圖像的重構,從而使得其重構速度顯著快於直接對像素進行設置的重構方法。為使本發明的上述目的、特徵和優點能更明顯易懂,下文特舉較佳實施例,並配合所附附圖,作詳細說明如下。附圖說明為了更清楚地說明本發明實施例的技術方案,下面將對實施例中所需要使用的附圖作簡單地介紹,應當理解,以下附圖僅示出了本發明的某些實施例,因此不應被看作是對範圍的限定,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他相關的附圖。圖1示出了本發明較佳實施例提供的電子設備的方框示意圖。圖2示出了本發明較佳實施例提供的二值圖像重構方法流程圖。圖3為圖2示出的步驟S101的子步驟流程圖。圖4為圖2示出的步驟S102的子步驟流程圖。圖5為圖4示出的子步驟S1024的子步驟流程圖。圖6為圖4示出的子步驟S1025的子步驟流程圖。圖7示出了本發明較佳實施例提供的二值圖像重構裝置的方框示意圖。圖8為圖7示出的二值圖像重構裝置中遊程獲取模塊的方框示意圖。圖9為圖7示出的二值圖像重構裝置中圖像重構模塊的方框示意圖。圖10為圖9示出的圖像重構模塊中第三子執行模塊的方框示意圖。圖11為圖9示出的圖像重構模塊中遊程重構模塊的方框示意圖。圖標:100-電子設備;101-存儲器;102-存儲控制器;103-處理器;200-二值圖像重構裝置;201-遊程獲取模塊;202-圖像重構模塊;2011-第一子設置模塊;2012-第二子設置模塊;2013-第一子執行模塊;2021-第三子設置模塊;2022-判斷模塊;2023-第二子執行模塊;2024-第三子執行模塊;2025-遊程重構模塊;20241-第四子設置模塊;20242-第五子設置模塊;20243-第四子執行模塊;20244-第五子執行模塊;20245-第六子執行模塊;20246-第七子執行模塊;20251-第八子執行模塊。具體實施方式下面將結合本發明實施例中附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。通常在此處附圖中描述和示出的本發明實施例的組件可以以各種不同的配置來布置和設計。因此,以下對在附圖中提供的本發明的實施例的詳細描述並非旨在限制要求保護的本發明的範圍,而是僅僅表示本發明的選定實施例。基於本發明的實施例,本領域技術人員在沒有做出創造性勞動的前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。應注意到:相似的標號和字母在下面的附圖中表示類似項,因此,一旦某一項在一個附圖中被定義,則在隨後的附圖中不需要對其進行進一步定義和解釋。同時,在本發明的描述中,術語「第一」、「第二」等僅用於區分描述,而不能理解為指示或暗示相對重要性。圖1示出本發明較佳實施例提供的電子設備100的方框示意圖。電子設備100優選為計算機,可以包括臺式機和個人筆記本電腦。所述電子設備100包括二值圖像重構裝置200、存儲器101、存儲控制器102、處理器103。所述存儲器101、存儲控制器102、處理器103各元件相互之間直接或間接地電性連接,以實現數據的傳輸或交互。例如,這些元件相互之間可通過一條或多條信號線實現電性連接。所述二值圖像重構裝置200包括至少一個可以軟體或固件(firmware)的形式存儲於所述存儲器101中或固化在所述電子設備100的作業系統(operatingsystem,OS)中的軟體功能模塊。所述處理器103用於執行存儲器101中存儲的可執行模塊,例如所述二值圖像重構裝置200包括的軟體功能模塊或電腦程式。其中,存儲器101可以是,但不限於,隨機存取存儲器(RandomAccessMemory,RAM),只讀存儲器(ReadOnlyMemory,ROM),可編程只讀存儲器(ProgrammableRead-OnlyMemory,PROM),可擦除只讀存儲器(ErasableProgrammableRead-OnlyMemory,EPROM),電可擦除只讀存儲器(ElectricErasableProgrammableRead-OnlyMemory,EEPROM)等。其中,存儲器101用於存儲程序,所述處理器103在接收到執行指令後,執行所述程序,本發明任一實施例揭示的流程定義的伺服器所執行的方法可以應用於處理器103中,或者由處理器103實現。處理器103可以是一種集成電路晶片,具有信號處理能力。上述的處理器103可以是通用處理器,包括中央處理器(CentralProcessingUnit,CPU)、網絡處理器(NetworkProcessor,NP)、語音處理器以及視頻處理器等;還可以是數位訊號處理器、專用集成電路、現場可編程門陣列或者其他可編程邏輯器件、分立門或者電晶體邏輯器件、分立硬體組件。可以實現或者執行本發明實施例中的公開的各方法、步驟及邏輯框圖。通用處理器可以是微處理器或者該處理器103也可以是任何常規的處理器等。第一實施例請參考圖2,圖2示出了本發明較佳實施例提供的二值圖像重構方法流程圖。二值圖像重構方法包括以下步驟:步驟S101,獲取當前骨架點對應的當前最大圓形區域內每個列的遊程,其中,當前骨架點為二值圖像的中軸線上的像素點。在本發明實施例中,二值圖像中的一個遊程,優選為二值圖像的一列中連續不間斷的若干個像素點構成的一條直線段,該像素點優選為白色。在本發明實施例中,二值圖像的中軸線線上的像素點,優選為距離二值圖像邊界上兩個點等距的像素點。請參考圖3,步驟S101還包括以下子步驟:步驟S1011,設定當前骨架點的網格處圓盤半徑Rmax,網格處圓盤半徑Rmax為當前最大圓形區域半徑ri向下取整,即設定所述當前最大圓形區域半徑平方值RRS=ri2,設定當前骨架點pi處的網格處圓盤半徑平方值其中,預先給定二值圖像中的骨架點集S={pi=(xi,yi)|i=1,...,N},以及每個骨架點pi處的最大圓形區域半徑ri,其中N為骨架點的數目。步驟S1012,設定當前骨架點的列坐標偏移量為網格處圓盤半徑,即x=-Rmax,設定當前骨架點的列坐標偏移量y=0,從而確定當前最大圓形區域的邊緣坐標(xi+x,yi)。步驟S1013,沿行坐標方向逐漸減小當前骨架點的列坐標偏移量,並確定列坐標偏移量所在列,沿列坐標方向遍歷列中的所有像素點,獲得當前最大圓形區域內每個列的遊程。步驟S102,判斷當前最大圓形區域的半徑與預先給定的切換半徑閾值的大小;若當前最大圓形區域的半徑小於或等於切換半徑閾值,則直接根據遊程重構出結果二值圖像,若當前最大圓形區域的半徑大於切換半徑閾值,則將當前最大圓形區域內的遊程與其他最大圓形區域內的遊程進行合併操作,得到二值圖像每個列的運算結果遊程樹,並根據結果遊程樹重構出結果二值圖像。請參考圖4,步驟S102還包括以下子步驟:步驟S1021,設置二值圖像的所有像素點均為黑色。步驟S1022,判斷當前最大圓形區域的半徑與切換半徑閾值的大小。步驟S1023,若當前最大圓形區域的半徑小於或等於切換半徑閾值,則將當前最大圓形區域的像素點置為白色,重構出結果二值圖像。步驟S1024,若當前最大圓形區域半徑大於切換半徑閾值,則將當前最大圓形區域內每個列的遊程分別合併至對應的遊程列表中。請參考圖5,步驟S1024還包括以下子步驟:步驟S10241,設定探測遊程指針uc為遊程列表的第一個遊程,每個遊程的第一個像素點的行號為u.s,每個遊程的最後一個像素點的行號為u.e-1。步驟S10242,若遊程列表為空列表,則設置探測遊程指針uc為空,設置改寫遊程指針uw為空,設置已寫標記f=FALSE。步驟S10243,當uc不為空,且f=FALSE時,若uc.e<u.s,則置uc為遊程列表中的下一個遊程;若uc.e=u.s,或者uc.s≤u.s且uc.eu.s且uc.eu.e且uc.s≤u.s,則置uw=uc,置uc為空,然後置uw.s=u.s,f=TRUE;若uc.e≤u.e且uc.s>u.s,則將遊程插入到uc之前,然後置uc為空,f=TRUE。步驟S10244,當uc為空,且f=FALSE時,則將遊程插至遊程列表的末尾,合併操作結束。步驟S10245,當uc不為空,且f=TRUE時,若uw.e<uc.s,則置uc為空;若uw.euc.e且uw.s<uc.s,則將uc從遊程列表中刪除,並置uc為遊程列表中的下一個遊程。步驟S10246,當uc為空,且f=TRUE時,則合併操作結束。步驟S1025,當合併操作結束後,遍歷遊程列表中的遊程,並將所有遊程的每個像素點均置為白色,重構出結果二值圖像。請參考圖6,步驟S1025還包括以下子步驟:步驟S10251,當合併操作結束後,對每一列的遊程列表,遍歷其中的每個遊程,並將二值圖像中每一列的第u.s行到第u.e-1行的所有像素點置為白色,重構出結果二值圖像。請參考表1,表1示出了4種二值圖像重構方法的運行時間,4種二值圖像重構方法包括:像素直接重構法(記為BRUTE)、二值圖像邏輯或重構方法(記為RFO)、以及本發明提供的二值圖像重構方法,其中,本發明提供的二值圖像重構方法又分為兩種,一種是使用部分直接重構,切換半徑閾值為35像素,記為RFHYB;另一種是不使用直接重構,記為RFOA。BRUTE、RFO、RFHYB與RFOA均在一個80幅植物葉片圖片構成的圖像集上進行運算,實驗結果如下:表1.BRUTE、RFO、RFHYB與RFOA的運行時間方法運行時間(s)BRUTE7.42RFO137.63RFHYB3.48RFOA3.51由表1可知,本發明提供的二值圖像重構方法的運行時間明顯小於其他重構方法,也就是說,本發明提供的二值圖像重構方法優於其他重構方法。需要說明的是,本發明提供的二值圖像重構方法中,遊程定義為二值圖像的列中的連續白色(垂直)直線段。如果採用二值圖像的行中的連續白色(水平)直線段作為遊程,則二者應視為實質等同,應屬於本發明的保護範圍。需要說明的是,本發明提供的二值圖像重構方法中採用了最大圓形區域來進行基於骨架的重構,如果不是採用圓形區域,而是採用其他容易計算的凸圖形(如正方形、長方形、菱形等)來替代,並採用了本發明中的遊程合併方法,則同樣屬於本發明的保護範圍。第二實施例請參考圖7,圖7示出了本發明較佳實施例提供的二值圖像重構裝置200的方框示意圖。二值圖像重構裝置200應用於電子設備100,其包括遊程獲取模塊201和圖像重構模塊202。遊程獲取模塊201,用於獲取當前骨架點對應的當前最大圓形區域內每個列的遊程,其中,當前骨架點為二值圖像的中軸線上的像素點。在本發明實施例中,遊程獲取模塊201可以用於執行步驟S101。請參考圖8,遊程獲取模塊201包括第一子設置模塊2011、第二子設置模塊2012及第一子執行模塊2013。第一子設置模塊2011,用於設定當前骨架點的網格處圓盤半徑Rmax,網格處圓盤半徑Rmax為當前最大圓形區域半徑ri向下取整,即設定所述當前最大圓形區域半徑平方值RRS=ri2,設定當前骨架點pi處的網格處圓盤半徑平方值其中,預先給定二值圖像中的骨架點集S={pi=(xi,yi)|i=1,...,N},以及每個骨架點pi處的最大圓形區域半徑ri,其中N為骨架點的數目。在本發明實施例中,第一子設置模塊2011可以用於執行步驟S1011。第二子設置模塊2012,用於設定當前骨架點的列坐標偏移量為網格處圓盤半徑,即x=-Rmax,設定當前骨架點的列坐標偏移量y=0,從而確定當前最大圓形區域的邊緣坐標(xi+x,yi)。在本發明實施例中,第二子設置模塊2012可以用於執行步驟S1012。第一子執行模塊2013,用於沿行坐標方向逐漸減小當前骨架點的列坐標偏移量,並確定列坐標偏移量所在列,沿列坐標方向遍歷列中的所有像素點,獲得當前最大圓形區域內每個列的遊程。在本發明實施例中,第一子執行模塊2013可以用於執行步驟S1013。圖像重構模塊202,用於判斷當前最大圓形區域的半徑與預先給定的切換半徑閾值的大小;若當前最大圓形區域的半徑小於或等於切換半徑閾值,則直接根據遊程重構出結果二值圖像,若當前最大圓形區域的半徑大於切換半徑閾值,則將當前最大圓形區域內的遊程與其他最大圓形區域內的遊程進行合併操作,得到二值圖像每個列的運算結果遊程樹,並根據結果遊程樹重構出結果二值圖像。在本發明實施例中,圖像重構模塊202可以用於執行步驟S102。請參考圖9,圖像重構模塊202包括第三子設置模塊2021、判斷模塊2022、第二子執行模塊2023、第三子執行模塊2024及遊程重構模塊2025。第三子設置模塊2021,用於設置二值圖像的所有像素點均為黑色。在本發明實施例中,第三子設置模塊2021可以用於執行步驟S1021。判斷模塊2022,用於判斷當前最大圓形區域的半徑與切換半徑閾值的大小。在本發明實施例中,判斷模塊2022可以用於執行步驟S1022。第二子執行模塊2023,用於若當前最大圓形區域的半徑小於或等於切換半徑閾值,則將當前最大圓形區域的像素點置為白色,重構出結果二值圖像。在本發明實施例中,第二子執行模塊2023可以用於執行步驟S1023。第三子執行模塊2024,用於若當前最大圓形區域半徑大於切換半徑閾值,則將當前最大圓形區域內每個列的遊程分別合併至對應的遊程列表中。在本發明實施例中,第三子執行模塊2024可以用於執行步驟S1024。請參考圖10,第三子執行模塊2024包括第四子設置模塊20241、第五子設置模塊20242、第四子執行模塊20243、第五子執行模塊20244、第六子執行模塊20245及第七子執行模塊20246。第四子設置模塊20241,用於設定探測遊程指針uc為遊程列表的第一個遊程,每個遊程的第一個像素點的行號為u.s,每個遊程的最後一個像素點的行號為u.e-1。在本發明實施例中,第四子設置模塊20241可以用於執行步驟S10241。第五子設置模塊20242,用於若遊程列表為空列表,則設置探測遊程指針uc為空,設置改寫遊程指針uw為空,設置已寫標記f=FALSE。在本發明實施例中,第五子設置模塊20242可以用於執行步驟S10242。第四子執行模塊20243,用於當uc不為空,且f=FALSE時,若uc.e<u.s,則置uc為遊程列表中的下一個遊程;若uc.e=u.s,或者uc.s≤u.s且uc.eu.s且uc.eu.e且uc.s≤u.s,則置uw=uc,置uc為空,然後置uw.s=u.s,f=TRUE;若uc.e≤u.e且uc.s>u.s,則將遊程插入到uc之前,然後置uc為空,f=TRUE。在本發明實施例中,第四子執行模塊20243可以用於執行步驟S10243。第五子執行模塊20244,用於當uc為空,且f=FALSE時,則將遊程插至遊程列表的末尾,合併操作結束。在本發明實施例中,第五子執行模塊20244可以用於執行步驟S10244。第六子執行模塊20245,用於當uc不為空,且f=TRUE時,若uw.e<uc.s,則置uc為空;若uw.euc.e且uw.s<uc.s,則將uc從遊程列表中刪除,並置uc為遊程列表中的下一個遊程。在本發明實施例中,第六子執行模塊20245可以用於執行步驟S10245。第七子執行模塊20246,用於當uc為空,且f=TRUE時,則合併操作結束。在本發明實施例中,第七子執行模塊20246可以用於執行步驟S10246。遊程重構模塊2025,用於當合併操作結束後,遍歷遊程列表中的遊程,並將所有遊程的每個像素點均置為白色,重構出結果二值圖像。在本發明實施例中,遊程重構模塊2025可以用於執行步驟S1025。請參考圖11,遊程重構模塊2025包括第八子執行模塊20251。第八子執行模塊20251,用於當合併操作結束後,對每一列的遊程列表,遍歷其中的每個遊程,並將二值圖像中每一列的第u.s行到第u.e-1行的所有像素點置為白色,重構出結果二值圖像。在本發明實施例中,第八子執行模塊20251可以用於執行步驟S10251。綜上所述,本發明提供的一種二值圖像重構方法及裝置,首先,獲取當前骨架點對應的當前最大圓形區域內每個列的遊程,其中,當前骨架點為二值圖像的中軸線上的像素點;其次,判斷當前最大圓形區域的半徑與預先給定的切換半徑閾值的大小;若當前最大圓形區域的半徑小於或等於切換半徑閾值,則直接根據遊程重構出結果二值圖像,若當前最大圓形區域的半徑大於切換半徑閾值,則將當前最大圓形區域內的遊程與其他最大圓形區域內的遊程進行合併操作,得到二值圖像每個列的運算結果遊程樹,並根據結果遊程樹重構出結果二值圖像。與現有技術的直接對像素進行設置的二值圖像重構相比,本發明能夠通過二值圖像中的區域骨架以及各骨架點處最大圓形區域半徑,快速地實現二值圖像的重構,其速度顯著快於直接對像素進行設置的重構方法。在本申請所提供的幾個實施例中,應該理解到,所揭露的裝置和方法,也可以通過其它的方式實現。以上所描述的裝置實施例僅僅是示意性的,例如,附圖中的流程圖和框圖顯示了根據本發明的多個實施例的裝置、方法和電腦程式產品的可能實現的體系架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用於實現規定的邏輯功能的可執行指令。也應當注意,在有些作為替換的實現方式中,方框中所標註的功能也可以以不同於附圖中所標註的順序發生。例如,兩個連續的方框實際上可以基本並行地執行,它們有時也可以按相反的順序執行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執行規定的功能或動作的專用的基於硬體的系統來實現,或者可以用專用硬體與計算機指令的組合來實現。另外,在本發明各個實施例中的各功能模塊可以集成在一起形成一個獨立的部分,也可以是各個模塊單獨存在,也可以兩個或兩個以上模塊集成形成一個獨立的部分。所述功能如果以軟體功能模塊的形式實現並作為獨立的產品銷售或使用時,可以存儲在一個計算機可讀取存儲介質中。基於這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分或者該技術方案的部分可以以軟體產品的形式體現出來,該計算機軟體產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,伺服器,或者網絡設備等)執行本發明各個實施例所述方法的全部或部分步驟。而前述的存儲介質包括:U盤、移動硬碟、只讀存儲器(ROM,Read-OnlyMemory)、隨機存取存儲器(RAM,RandomAccessMemory)、磁碟或者光碟等各種可以存儲程序代碼的介質。需要說明的是,在本文中,諸如第一和第二等之類的關係術語僅僅用來將一個實體或者操作與另一個實體或操作區分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關係或者順序。而且,術語「包括」、「包含」或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句「包括一個……」限定的要素,並不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。以上所述僅為本發明的優選實施例而已,並不用於限制本發明,對於本領域的技術人員來說,本發明可以有各種更改和變化。凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護範圍之內。應注意到:相似的標號和字母在下面的附圖中表示類似項,因此,一旦某一項在一個附圖中被定義,則在隨後的附圖中不需要對其進行進一步定義和解釋。當前第1頁1 2 3