一種八連通圖像處理方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種八連通圖像處理方法和裝置,方法包括步驟:讀取二值掩碼圖像;逐行或者逐列對二值掩碼圖像的像素點進行標(biāo)記,標(biāo)記時讀取到“0”值掩碼像素點時,其標(biāo)記值設(shè)為0,第一次讀取到的“1”值掩碼像素點的標(biāo)記值設(shè)為1,后面讀取到“1”值掩碼像素點時,判斷已標(biāo)記的“1”值掩碼像素點是否與當(dāng)前“1”值掩碼像素點八連通,如果是,則當(dāng)前“1”值掩碼像素點的標(biāo)記值為前面八連通標(biāo)記值中的最小值,否則當(dāng)前“1”值掩碼像素點的標(biāo)記值為前面標(biāo)記值中的最大值加1,得到標(biāo)記圖像;遍歷標(biāo)記圖像進行八連通迭代,當(dāng)標(biāo)記值不再變化時,停止迭代過程。裝置包括位于FPGA中并依次連接的圖像標(biāo)記模塊、八連通迭代模塊和清除小區(qū)域模塊。
【專利說明】一種八連通圖像處理方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及圖像處理【技術(shù)領(lǐng)域】,具體涉及一種八連通圖像處理方法和裝置。
【背景技術(shù)】
[0002]圖像分割是將圖像劃分成若干個互不相交的小區(qū)域的過程,小區(qū)域是某種意義下具有共同屬性的像素的連通集合。如不同目標(biāo)物體所占的圖像區(qū)域、前景所占的圖像區(qū)域等。通??梢酝ㄟ^灰度閾值,梯度閾值,方差閾值,直方圖閾值,P覆蓋率閾值等等方法進行分割處理。圖像連通是指連通集合中任意兩個點之間都存在著完全屬于該集合的連通路徑。對于離散圖像而言,連通有4連通和8連通之分。八連通指的是從區(qū)域中的一點出發(fā),可通過上、下、左、右、左上、右上、左下、右下這8個方向的移動組合來到達區(qū)域內(nèi)的任意像素。
[0003]如圖1所示,是一個8鄰域的示意圖,若取像素P四周的8個像素點作為相鄰點,則像素點P的這8個相鄰點就構(gòu)成了 8鄰域,如果8鄰域中有任意一點和P都屬于同一個集合屬性,則該點和P點即可相連,構(gòu)成連通區(qū)域。
[0004]8連通清除小區(qū)域是將同一個集合屬性的像素點(對于二值掩碼圖像來說,就是相鄰的標(biāo)為I的像素)連通,合并為同一連通區(qū)域,然后將同一個連通區(qū)域內(nèi)包含的像素數(shù)目小于預(yù)定閾值的連通區(qū)域去除。如圖2所示,通過圖像分割方法得到二值掩碼圖像,用八連通處理方法將其中若干個互不相交的小區(qū)域識別出來,并對每個連通區(qū)域內(nèi)的像素個數(shù)進行統(tǒng)計,然后把像素個數(shù)少的小區(qū)域清除,保留大的區(qū)域。
[0005]如圖3所示,在超聲嵌入式系統(tǒng)中,圖像處理通常都用FPGA來實現(xiàn),其中八連通處理和小區(qū)域清除是圖像處理的一個重要環(huán)節(jié),但因其中間統(tǒng)計數(shù)據(jù)規(guī)模比較大,F(xiàn)PGA內(nèi)部存儲空間無法存放,所以八連通圖像處理過程中的中間統(tǒng)計數(shù)據(jù)只能使用獨立于FPGA的存儲器件,增加了系統(tǒng)成本。
【發(fā)明內(nèi)容】
[0006]本發(fā)明要解決的技術(shù)問題在于,針對現(xiàn)有技術(shù)的不足,提供一種八連通圖像處理方法和裝置,克服現(xiàn)有技術(shù)的八連通圖像處理,F(xiàn)PGA無法存放八連通圖像處理過程中的中間統(tǒng)計數(shù)據(jù),需要額外增加外部存儲器,增加系統(tǒng)成本的缺陷。
[0007]本發(fā)明為解決上述技術(shù)問題所采用的技術(shù)方案為:
[0008]一種八連通圖像處理方法,包括步驟:
[0009]Al、讀取二值掩碼圖像;
[0010]A2、逐行或者逐列對該二值掩碼圖像的像素點進行標(biāo)記,標(biāo)記時讀取到“O”值掩碼像素點時,其標(biāo)記值設(shè)為0,第一次讀取到的“I”值掩碼像素點的標(biāo)記值設(shè)為1,后面讀取到“ I ”值掩碼像素點時,判斷已標(biāo)記的“ I ”值掩碼像素點是否與當(dāng)前“ I”值掩碼像素點八連通,如果是,則當(dāng)前“I”值掩碼像素點的標(biāo)記值為前面八連通標(biāo)記值中的最小值,否則當(dāng)前“I”值掩碼像素點的標(biāo)記值為前面標(biāo)記值中的最大值加1,得到標(biāo)記圖像;[0011]A3、遍歷該標(biāo)記圖像進行八連通迭代,迭代時O標(biāo)記值不作改變,對于非O標(biāo)記值,如果其八連通位置的其他非O標(biāo)記值中的最小值小于該非O標(biāo)記值,則用該最小值替換該非O標(biāo)記值;
[0012]A4、重復(fù)執(zhí)行步驟A3,當(dāng)標(biāo)記值不再變化時,停止迭代過程。
[0013]根據(jù)本發(fā)明的實施例,步驟A3還包括步驟:對同一非O標(biāo)記值的個數(shù)進行累加并存儲累加值,如果該累加值不小于小區(qū)域閾值,則只存儲該小區(qū)域閾值。
[0014]根據(jù)本發(fā)明的實施例,還包括步驟:
[0015]A5、同一非O標(biāo)記值的個數(shù)小于設(shè)定的小區(qū)域閾值,則其標(biāo)記值全部改為O。
[0016]根據(jù)本發(fā)明的實施例,該小區(qū)域閾值設(shè)為5到255之間的自然數(shù)。
[0017]根據(jù)本發(fā)明的實施例,該累加值存儲于FPGA中。
[0018]一種八連通圖像處理方法,包括步驟:
[0019]B1、讀取圖像數(shù)據(jù),設(shè)定標(biāo)記值閾值;
[0020]B2、逐行或者逐列對該圖像的像素點進行標(biāo)記,標(biāo)記時讀取到數(shù)值小于該標(biāo)記值閾值的像素點時,其標(biāo)記值設(shè)為0,第一次讀取到的數(shù)值不小于該標(biāo)記值閾值的像素點時,其標(biāo)記值設(shè)為1,后面讀取到數(shù)值不小于該標(biāo)記值閾值的像素點時,判斷已標(biāo)記的非O標(biāo)記值像素點是否與當(dāng)前像素點八連通,如果是,則當(dāng)前像素點的標(biāo)記值為前面八連通非O標(biāo)記值中的最小值,否則當(dāng)前像素點的標(biāo)記值為前面非O標(biāo)記值中的最大值加1,得到標(biāo)記圖像;
[0021]B3、遍歷該標(biāo)記圖像進行八連通迭代,迭代時O標(biāo)記值不作改變,對于非O標(biāo)記值,如果其八連通位置的其他非O標(biāo)記值中的最小值小于該非O標(biāo)記值,則用該最小值替換該非O標(biāo)記值;
[0022]B4、重復(fù)執(zhí)行步驟B3,當(dāng)標(biāo)記值不再變化時,停止迭代過程。
[0023]根據(jù)本發(fā)明的實施例,步驟B3還包括步驟:對同一非O標(biāo)記值的個數(shù)進行累加并存儲累加值,如果該累加值不小于小區(qū)域閾值,則只存儲該小區(qū)域閾值。
[0024]根據(jù)本發(fā)明的實施例,還包括步驟:
[0025]B5、同一非O標(biāo)記值的個數(shù)小于設(shè)定的小區(qū)域閾值,則其標(biāo)記值全部改為O。
[0026]根據(jù)本發(fā)明的實施例,該小區(qū)域閾值設(shè)為5到255之間的自然數(shù)。
[0027]根據(jù)本發(fā)明的實施例,該累加值存儲于FPGA中。
[0028]一種八連通圖像處理裝置,包括位于FPGA中并依次連接的圖像標(biāo)記模塊、八連通迭代模塊和清除小區(qū)域模塊,該圖像標(biāo)記模塊用于對二值掩碼圖像的像素點逐行或者逐列進行標(biāo)記,標(biāo)記時,“O”值像素點,其標(biāo)記值設(shè)為0,第一個“I”值像素點,其標(biāo)記值設(shè)為1,如果已標(biāo)記的“I”值像素點與當(dāng)前“I”值像素點八連通,則當(dāng)前像素點的標(biāo)記值為前面八連通非O標(biāo)記值中的最小值,否則當(dāng)前“I”值掩碼像素點的標(biāo)記值為前面標(biāo)記值中的最大值加1,得到標(biāo)記圖像;該八連通迭代模塊用于對該標(biāo)記圖像進行八連通迭代處理,迭代時O標(biāo)記值不作改變,對于非O標(biāo)記值,如果其八連通位置的其他非O標(biāo)記值中的最小值小于該非O標(biāo)記值,則用該最小值替換該非O標(biāo)記值,對同一非O標(biāo)記值的個數(shù)進行累加并將累加值存儲到FPGA的緩存中,當(dāng)標(biāo)記值不再變化時,停止迭代過程;該清除小區(qū)域模塊用于將累加值小于小區(qū)域閾值的同一非O標(biāo)記值全部改為O。
[0029]根據(jù)本發(fā)明的實施例,該圖像標(biāo)記模塊包括標(biāo)記判斷模塊、二值掩碼圖像緩存模塊和標(biāo)記圖像緩存模塊,該二值掩碼圖像緩存模塊、該標(biāo)記圖像緩存模塊與該標(biāo)記判斷模塊相連。
[0030]根據(jù)本發(fā)明的實施例,該八連通迭代模塊包括八連通迭代重新標(biāo)記模塊和標(biāo)記圖像緩存模塊,該八連通迭代重新標(biāo)記模塊與該標(biāo)記圖像緩存模塊相連。
[0031]根據(jù)本發(fā)明的實施例,該清除小區(qū)域模塊包括小區(qū)域判斷重新標(biāo)記模塊、標(biāo)記圖像緩存模塊,該小區(qū)域判斷重新標(biāo)記模塊與該標(biāo)記圖像緩存模塊相連。
[0032]根據(jù)本發(fā)明的實施例,如果該累加值不小于該小區(qū)域閾值,則只存儲該小區(qū)域閾值。
[0033]一種八連通圖像處理裝置,包括位于FPGA中并依次連接的圖像標(biāo)記模塊、八連通迭代模塊和清除小區(qū)域模塊,該圖像標(biāo)記模塊用于設(shè)定標(biāo)記值閾值,根據(jù)該標(biāo)記值閾值逐行或者逐列對圖像的像素點進行標(biāo)記,標(biāo)記時,數(shù)值小于該標(biāo)記值閾值的像素點,其標(biāo)記值全部設(shè)為0,數(shù)值不小于該標(biāo)記值閾值的第一個像素點,其標(biāo)記值設(shè)為1,如果已標(biāo)記并且不小于該標(biāo)記值閾值的像素點與當(dāng)前像素點八連通,則當(dāng)前像素點的標(biāo)記值為前面的八連通標(biāo)記值中的最小值,否則當(dāng)前像素點的標(biāo)記值為前面非O標(biāo)記值中的最大值加1,得到標(biāo)記圖像;該八連通迭代模塊用于對該標(biāo)記圖像進行八連通迭代處理,迭代時O標(biāo)記值不作改變,對于非O標(biāo)記值,如果其八連通位置的其他非O標(biāo)記值中的最小值小于該非O標(biāo)記值,則用該最小值替換該非O標(biāo)記值,對同一非O標(biāo)記值的個數(shù)進行累加并將累加值存儲到FPGA的緩存中,當(dāng)標(biāo)記值不再變化時,停止迭代過程;該清除小區(qū)域模塊用于將累加值小于小區(qū)域閾值的同一非O標(biāo)記值全部改為O。
[0034]實施本發(fā)明的技術(shù)方案,具有以下有益效果:八連通圖像處理會讀取圖像產(chǎn)生標(biāo)記圖像,圖像和標(biāo)記圖像都可以存放在DDR器件里,處理過程中,數(shù)據(jù)統(tǒng)計緩存需要進行離散讀寫,如果用DDR的話效率非常低,所以不適合用DDR來存儲;如果存儲在SRAM里,成本較高;由于存儲數(shù)據(jù)統(tǒng)計緩存需要較大空間,比如512*512的圖像需要512*512*18bit的存儲空間,F(xiàn)PGA無法提供如此多的片內(nèi)ram,因此無法放入FPGA內(nèi),本發(fā)明通過對八連通圖像處理進行巧妙的設(shè)計,將需要的存儲容量減少了至少8倍,因此成功把數(shù)據(jù)統(tǒng)計緩存放在FPGA內(nèi),提高了八連通圖像處理效率,降低了成本。
【專利附圖】
【附圖說明】
[0035]下面通過參考附圖并結(jié)合實例具體地描述本發(fā)明,本發(fā)明的優(yōu)點和實現(xiàn)方式將會更加明顯,其中附圖所示內(nèi)容僅用于對本發(fā)明的解釋說明,而不構(gòu)成對本發(fā)明的任何意義上的限制,在附圖中:
[0036]圖1為現(xiàn)有技術(shù)圖像八鄰域和坐標(biāo)關(guān)系不意圖;
[0037]圖2為現(xiàn)有技術(shù)八連通圖像處理和清除小區(qū)域的示意圖;
[0038]圖3為現(xiàn)有技術(shù)八連通圖像處理模塊示意圖;
[0039]圖4為本發(fā)明八連通處理方法的流程圖;
[0040]圖5為本發(fā)明八連通處理的改進示意圖;
[0041]圖6為本發(fā)明八連通迭代過程示意圖;
[0042]圖7為本發(fā)明八連通處理得到標(biāo)記圖像的示意圖;
[0043]圖8為本發(fā)明實施例中的統(tǒng)計數(shù)據(jù)緩存示意圖;[0044]圖9為本發(fā)明實施例八連通處理過程示意圖;
[0045]圖10為本發(fā)明八連通圖像處理裝置示意圖;
[0046]圖11為本發(fā)明圖像標(biāo)記模塊示意圖;
[0047]圖12為本發(fā)明八連通迭代模塊示意圖;
[0048]圖13為本發(fā)明清除小區(qū)域模塊示意圖。
【具體實施方式】
[0049]如圖4所示,本發(fā)明八連通圖像處理方法,包括步驟:
[0050](I)、讀取二值掩碼圖像;
[0051](2)、逐行或者逐列對二值掩碼圖像的像素點進行標(biāo)記,標(biāo)記時讀取到“O”值掩碼像素點時,其標(biāo)記值設(shè)為0,第一次讀取到的“I”值掩碼像素點的標(biāo)記值設(shè)為1,后面讀取到“ I ”值掩碼像素點時,判斷已標(biāo)記的“ I ”值掩碼像素點是否與當(dāng)前“ I”值掩碼像素點八連通,如果是,則當(dāng)前“I”值掩碼像素點的標(biāo)記值為前面八連通標(biāo)記值中的最小值,否則當(dāng)前“I”值掩碼像素點的標(biāo)記值為前面標(biāo)記值中的最大值加1,得到標(biāo)記圖像;
[0052](3)、遍歷標(biāo)記圖像進行八連通迭代,迭代時O標(biāo)記值不作改變,對于非O標(biāo)記值,如果其八連通位置的其他非O標(biāo)記值中的最小值小于非O標(biāo)記值,則用最小值替換非O標(biāo)記值,對同一非O標(biāo)記值的個數(shù)進行累加并存儲累加值,如果累加值不小于小區(qū)域閾值,則只存儲小區(qū)域閾值;
[0053](4)、重復(fù)執(zhí)行步驟(3),當(dāng)標(biāo)記值不再變化時,停止迭代過程;
[0054](5)、同一非O標(biāo)記值的個數(shù)小于設(shè)定的小區(qū)域閾值,則其標(biāo)記值全部改為O。
[0055]本發(fā)明的方法并非局限于對二值掩碼圖像的處理,由于八連通特性是具有共同屬性的像素的連通集合,因此本發(fā)明的方法是適用于任何圖像的,比如一幅灰度圖像,可以設(shè)定一個閾值N,小于閾值N的像素,其標(biāo)記值設(shè)為O ;大于閾值N的像素,其標(biāo)記值按本發(fā)明的方法進行處理,因此本發(fā)明另一種實施方式,包括步驟:
[0056]B1、讀取圖像數(shù)據(jù),設(shè)定標(biāo)記值閾值;
[0057]B2、逐行或者逐列對圖像的像素點進行標(biāo)記,標(biāo)記時讀取到數(shù)值小于標(biāo)記值閾值的像素點時,其標(biāo)記值設(shè)為0,第一次讀取到的數(shù)值不小于標(biāo)記值閾值的像素點時,其標(biāo)記值設(shè)為1,后面讀取到數(shù)值不小于標(biāo)記值閾值的像素點時,判斷已標(biāo)記的非O標(biāo)記值像素點是否與當(dāng)前像素點八連通,如果是,則當(dāng)前像素點的標(biāo)記值為前面八連通非O標(biāo)記值中的最小值,否則當(dāng)前像素點的標(biāo)記值為前面非O標(biāo)記值中的最大值加1,得到標(biāo)記圖像;
[0058]B3、遍歷標(biāo)記圖像進行八連通迭代,迭代時O標(biāo)記值不作改變,對于非O標(biāo)記值,如果其八連通位置的其他非O標(biāo)記值中的最小值小于非O標(biāo)記值,則用最小值替換非O標(biāo)記值,對同一非O標(biāo)記值的個數(shù)進行累加并存儲累加值,如果累加值不小于小區(qū)域閾值,則只存儲小區(qū)域閾值;
[0059]B4、重復(fù)執(zhí)行步驟B3,當(dāng)標(biāo)記值不再變化時,停止迭代過程。
[0060]B5、同一非O標(biāo)記值的個數(shù)小于設(shè)定的小區(qū)域閾值,則其標(biāo)記值全部改為O。
[0061]現(xiàn)有技術(shù)對二值掩碼圖像的每個“I”值掩碼賦予一個遞增的自然數(shù)進行標(biāo)記,所以對于N行*N列的二值掩碼圖像,遞增的標(biāo)記值最多可能有N*N種(在每個掩碼都是“ I ”的情形下),最大的標(biāo)記值是N*N,假設(shè)使用Sbit來表示N*N,就需要N*N*Sbit的空間來存儲數(shù)據(jù)統(tǒng)計緩存,如圖5所示,首先這樣更改,對于連續(xù)的非零數(shù),標(biāo)記值不遞增,這樣可以減少一半的標(biāo)記值的種類(最糟糕的情況是二值掩碼圖像的所有數(shù)據(jù)全部都是OlOl這樣的情況),標(biāo)記值的最大值也可以減少一半,因此只需要(S-1) bit來表示,這樣數(shù)據(jù)統(tǒng)計緩存的規(guī)模變成(N*N/2)*(S-1)bit 了,減少了 I倍多。
[0062]對本列進行標(biāo)記的時候,把前一列處于八連通位置的3個標(biāo)記值同時讀出,如果本身掩碼數(shù)據(jù)的值是0,則標(biāo)記值為O ;如果本身掩碼數(shù)據(jù)的值不是0,則取前I列八連通位置的3個標(biāo)記值與本列的前一個標(biāo)記值中的最小值,如果這些標(biāo)記值均為0,則本標(biāo)記值需要遞增。這樣處理之后,遞增的數(shù)值的種類縮小了 4倍。如圖6所示,大空心點是待得到的標(biāo)記值,黑色點是需要讀出來的標(biāo)記值,小空心點是無關(guān)數(shù)據(jù)。當(dāng)對大空心點進行處理的時候,如果大空心點的值是0,則不處理;如果大空心點的值非0,則按照標(biāo)記順序,依次對幾個黑色點進行判斷,只要任一個黑色點非0,就將此值賦給大空心點,并結(jié)束此次處理,進行下一個像素點的處理;如果黑色點都為0,則大空心點的值應(yīng)該繼續(xù)遞增。如圖7所示,按照上述處理方法,第一次標(biāo)記后,遞增的標(biāo)記值數(shù)值種類減少了至少4倍。
[0063]再進一步,標(biāo)記值的統(tǒng)計個數(shù)最大值需要用(S-1) bit來表示,因為小于閾值M的小區(qū)域標(biāo)記值都會被去掉,所以,實際標(biāo)記值的統(tǒng)計個數(shù)最大值只需要用閾值M (假設(shè)使用Tbit表示M這個數(shù))來表達就可以了,當(dāng)標(biāo)記值的個數(shù)大于M的時候,其統(tǒng)計個數(shù)就不再遞增。如圖8所示,本來標(biāo)記值最大值需要6bit來表示,假設(shè)M=5,則標(biāo)記值最大值只需要3bit就夠了。經(jīng)過以上的處理,數(shù)據(jù)統(tǒng)計緩存需要的空間變成了(N*N/4)*Tbit。實際應(yīng)用中,真實圖像的標(biāo)記值種類會比極限情況更少,數(shù)據(jù)統(tǒng)計緩存會比這個值更小。仍然以前面的6*6的圖像為例,圖像最多可存在9個不關(guān)聯(lián)的連通區(qū)域,所以數(shù)值的種類用9個就夠了 ;M=5,所以T=3bit可以存儲最大為5的數(shù)。如圖9所示,經(jīng)過本發(fā)明的處理之后,數(shù)據(jù)統(tǒng)計緩存的規(guī)模從6*6*6bit變成了 9*3bit,規(guī)??s減了 8倍。
[0064]如圖10、圖11、圖12和圖13所示,本發(fā)明八連通圖像處理裝置,包括位于FPGA中并依次連接的圖像標(biāo)記模塊、八連通迭代模塊和清除小區(qū)域模塊,圖像標(biāo)記模塊用于對二值掩碼圖像的像素點逐行或者逐列進行標(biāo)記,標(biāo)記時,“O”值像素點,其標(biāo)記值設(shè)為0,第一個“I”值像素點,其標(biāo)記值設(shè)為1,如果同行或者同列的已標(biāo)注的“I”值像素點與當(dāng)前“I”值像素點八連通,則當(dāng)前“ I ”值像素點的標(biāo)記值為已標(biāo)注的八連通“ I ”值像素點的標(biāo)記值,否則當(dāng)前“ I ”值像素點的標(biāo)記值為已標(biāo)注的前一 “ I ”值像素點的標(biāo)記值加I,得到標(biāo)記圖像,并對所述像素點的標(biāo)記值進行統(tǒng)計并寫入FPGA的緩存中;八連通迭代模塊用于對標(biāo)記圖像的每個標(biāo)記值進行八連通處理,如果標(biāo)記值為0,則不改變所述標(biāo)記值,如果標(biāo)記值不為0,判斷已重新標(biāo)記的像素點是否與當(dāng)前像素點八連通,如果是,則當(dāng)前像素點的標(biāo)記值為八連通的像素點的非O標(biāo)記值中的最小值,否則當(dāng)前像素點的標(biāo)記值為非O標(biāo)記值中的最大值加1,對同一非O標(biāo)記值的個數(shù)進行累加并將累加值存儲到FPGA的緩存中,當(dāng)標(biāo)記值不再變化時,停止迭代過程;清除小區(qū)域模塊用于將累加值小于小區(qū)域閾值的同一非O標(biāo)記值全部改為O。根據(jù)本發(fā)明的實施例,圖像標(biāo)記模塊包括標(biāo)記判斷模塊、二值掩碼圖像緩存模塊和標(biāo)記圖像緩存模塊,二值掩碼圖像緩存模塊、標(biāo)記圖像緩存模塊與標(biāo)記判斷模塊相連。八連通迭代模塊包括八連通迭代重新標(biāo)記模塊和標(biāo)記圖像緩存模塊,八連通迭代重新標(biāo)記模塊與標(biāo)記圖像緩存模塊相連。清除小區(qū)域模塊包括小區(qū)域判斷重新標(biāo)記模塊、標(biāo)記圖像緩存模塊,小區(qū)域判斷重新標(biāo)記模塊與標(biāo)記圖像緩存模塊相連。[0065]本發(fā)明八連通圖像處理裝置的另一種實施方式包括位于FPGA中并依次連接的圖像標(biāo)記模塊、八連通迭代模塊和清除小區(qū)域模塊,圖像標(biāo)記模塊用于設(shè)定標(biāo)記值閾值,根據(jù)標(biāo)記值閾值逐行或者逐列對圖像的像素點進行標(biāo)記,標(biāo)記時,數(shù)值小于標(biāo)記值閾值的像素點,其標(biāo)記值全部設(shè)為0,數(shù)值不小于標(biāo)記值閾值的第一個像素點,其標(biāo)記值設(shè)為1,如果同行或者同列的已標(biāo)注并且不小于標(biāo)記值閾值的像素點與當(dāng)前像素點八連通,則當(dāng)前像素點的標(biāo)記值為已標(biāo)注的八連通像素點的標(biāo)記值,否則當(dāng)前像素點的標(biāo)記值為已標(biāo)注的前一像素點的標(biāo)記值加1,得到標(biāo)記圖像,對像素點的標(biāo)記值進行統(tǒng)計并寫入FPGA的緩存中;八連通迭代模塊用于對標(biāo)記圖像的每個標(biāo)記值進行八連通處理,如果標(biāo)記值為0,則不改變標(biāo)記值,如果標(biāo)記值不為0,判斷已重新標(biāo)記的像素點是否與當(dāng)前像素點八連通,如果是,則當(dāng)前像素點的標(biāo)記值為八連通的像素點的已標(biāo)注的非O標(biāo)記值中的最小值,否則當(dāng)前像素點的標(biāo)記值為已標(biāo)注的非O標(biāo)記值中的最大值加I,對同一非O標(biāo)記值的個數(shù)進行累加并將累加值存儲到FPGA的緩存中,當(dāng)標(biāo)記值不再變化時,停止迭代過程;清除小區(qū)域模塊用于將累加值小于小區(qū)域閾值的同一非O標(biāo)記值全部改為O。
[0066]先進行圖像標(biāo)記處理,把二值掩碼圖像從DDR里讀出,其規(guī)模是512*512*lbit。將二值掩碼圖像按列讀出,進行判斷和標(biāo)記,同時得到標(biāo)記圖像和數(shù)據(jù)統(tǒng)計緩存。根據(jù)當(dāng)前列的掩碼圖像和前一列的標(biāo)記值圖像進行標(biāo)記,把前一列的3個標(biāo)記值同時讀出,如果本身掩碼數(shù)據(jù)是0,則標(biāo)記值為O ;如果本身掩碼數(shù)據(jù)不是0,則比較前I列的3個標(biāo)記值與本列的前一個標(biāo)記值,將他們的最小值作為當(dāng)前標(biāo)記值。這樣進行處理之后,得到本列標(biāo)記圖像數(shù)據(jù),存儲到列緩存里,列緩存有2個用于乒乓操作,I個用于存儲本列的標(biāo)記值,I個用于存儲上一列的標(biāo)記值。其規(guī)模均為512*17bit,在FPGA中用I個M9K實現(xiàn)。標(biāo)記的同時,將標(biāo)記值的個數(shù)統(tǒng)計寫入到數(shù)據(jù)統(tǒng)計緩存里,M等于255,所以統(tǒng)計個數(shù)用Sbit就夠用了。緩存規(guī)模為32768*8bit,在FPGA中用32個M9K實現(xiàn)。然后進行八連通迭代處理,建立3列標(biāo)記圖像緩存,對標(biāo)記圖像進行8連通處理,如圖1的8鄰域所示,如果P的標(biāo)記值為0,則其標(biāo)記值不變;如果P的標(biāo)記值不為0,則將9個數(shù)中最小的非O標(biāo)記值,重新標(biāo)記到P的標(biāo)記值上。并且更新數(shù)據(jù)統(tǒng)計緩存中的標(biāo)記值統(tǒng)計,需要分別對更改后和更改前的標(biāo)記值的統(tǒng)計個數(shù)加減I。如此遍歷標(biāo)記圖像所有的像素。最后進行消除小區(qū)域,將標(biāo)記圖像讀出,并根據(jù)數(shù)據(jù)緩存內(nèi)的統(tǒng)計值和閾值M進行判斷是否將該標(biāo)記值重新標(biāo)記,小于閾值M的標(biāo)記值將重新標(biāo)記為0,大于等于閾值M的,標(biāo)記值不變。遍歷整個標(biāo)記圖像之后,完成全部八連通清除小區(qū)域處理,將標(biāo)記圖像輸出給后續(xù)圖像處理環(huán)節(jié)。
[0067]本領(lǐng)域技術(shù)人員不脫離本發(fā)明的實質(zhì)和精神,可以有多種變形方案實現(xiàn)本發(fā)明,以上所述僅為本發(fā)明較佳可行的實施例而已,并非因此局限本發(fā)明的權(quán)利范圍,凡運用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)變化,均包含于本發(fā)明的權(quán)利范圍之內(nèi)。
【權(quán)利要求】
1.一種八連通圖像處理方法,其特征在于,包括步驟: Al、讀取二值掩碼圖像; A2、逐行或者逐列對所述二值掩碼圖像的像素點進行標(biāo)記,標(biāo)記時讀取到“O”值掩碼像素點時,其標(biāo)記值設(shè)為O,第一次讀取到的“I”值掩碼像素點的標(biāo)記值設(shè)為1,后面讀取到“I”值掩碼像素點時,判斷已標(biāo)記的“I”值掩碼像素點是否與當(dāng)前“I”值掩碼像素點八連通,如果是,則當(dāng)前“I”值掩碼像素點的標(biāo)記值為前面八連通標(biāo)記值中的最小值,否則當(dāng)前“I”值掩碼像素點的標(biāo)記值為前面標(biāo)記值中的最大值加1,得到標(biāo)記圖像; A3、遍歷所述標(biāo)記圖像進行八連通迭代,迭代時O標(biāo)記值不作改變,對于非O標(biāo)記值,如果其八連通位置的其他非O標(biāo)記值中的最小值小于所述非O標(biāo)記值,則用所述最小值替換所述非O標(biāo)記值; A4、重復(fù)執(zhí)行步驟A3,當(dāng)標(biāo)記值不再變化時,停止迭代過程。
2.根據(jù)權(quán)利要求1所述的八連通圖像處理方法,其特征在于,步驟A3還包括步驟:對同一非O標(biāo)記值的個數(shù)進行累加并存儲累加值,如果所述累加值不小于小區(qū)域閾值,則只存儲所述小區(qū)域閾值。
3.根據(jù)權(quán)利要求2所述的八連通圖像處理方法,其特征在于,還包括步驟: A5、同一非O標(biāo)記值的個數(shù)小于設(shè)定的小區(qū)域閾值,則其標(biāo)記值全部改為O。
4.根據(jù)權(quán)利要求3所述的八連通圖像處理方法,其特征在于:所述小區(qū)域閾值設(shè)為5到255之間的自然數(shù)。
5.根據(jù)權(quán)利要求4所述的八連通圖像處理方法,其特征在于:所述累加值存儲于FPGA中。
6.一種八連通圖像處理方法,其特征在于,包括步驟: B1、讀取圖像數(shù)據(jù),設(shè)定標(biāo)記值閾值; B2、逐行或者逐列對所述圖像的像素點進行標(biāo)記,標(biāo)記時讀取到數(shù)值小于所述標(biāo)記值閾值的像素點時,其標(biāo)記值設(shè)為O,第一次讀取到的數(shù)值不小于所述標(biāo)記值閾值的像素點時,其標(biāo)記值設(shè)為1,后面讀取到數(shù)值不小于所述標(biāo)記值閾值的像素點時,判斷已標(biāo)記的非O標(biāo)記值像素點是否與當(dāng)前像素點八連通,如果是,則當(dāng)前像素點的標(biāo)記值為前面八連通非O標(biāo)記值中的最小值,否則當(dāng)前像素點的標(biāo)記值為前面非O標(biāo)記值中的最大值加1,得到標(biāo)記圖像; B3、遍歷所述標(biāo)記圖像進行八連通迭代,迭代時O標(biāo)記值不作改變,對于非O標(biāo)記值,如果其八連通位置的其他非O標(biāo)記值中的最小值小于所述非O標(biāo)記值,則用所述最小值替換所述非O標(biāo)記值; B4、重復(fù)執(zhí)行步驟B3,當(dāng)標(biāo)記值不再變化時,停止迭代過程。
7.根據(jù)權(quán)利要求6所述的八連通圖像處理方法,其特征在于,步驟B3還包括步驟:對同一非O標(biāo)記值的個數(shù)進行累加并存儲累加值,如果所述累加值不小于小區(qū)域閾值,則只存儲所述小區(qū)域閾值。
8.根據(jù)權(quán)利要求7所述的八連通圖像處理方法,其特征在于,還包括步驟: B5、同一非O標(biāo)記值的個數(shù)小于設(shè)定的小區(qū)域閾值,則其標(biāo)記值全部改為O。
9.根據(jù)權(quán)利要求8所述的八連通圖像處理方法,其特征在于:所述小區(qū)域閾值設(shè)為5到255之間的自然數(shù)。
10.根據(jù)權(quán)利要求9所述的八連通圖像處理方法,其特征在于:所述累加值存儲于FPGA中。
11.一種八連通圖像處理裝置,其特征在于:包括位于FPGA中并依次連接的圖像標(biāo)記模塊、八連通迭代模塊和清除小區(qū)域模塊,所述圖像標(biāo)記模塊用于對二值掩碼圖像的像素點逐行或者逐列進行標(biāo)記,標(biāo)記時,“O”值像素點,其標(biāo)記值設(shè)為0,第一個“1”值像素點,其標(biāo)記值設(shè)為I,如果已標(biāo)記的“ 1 ”值像素點與當(dāng)前“ 1 ”值像素點八連通,則當(dāng)前像素點的標(biāo)記值為前面八連通非O標(biāo)記值中的最小值,否則當(dāng)前“1”值掩碼像素點的標(biāo)記值為前面標(biāo)記值中的最大值加1,得到標(biāo)記圖像;所述八連通迭代模塊用于對所述標(biāo)記圖像進行八連通迭代處理,迭代時O標(biāo)記值不作改變,對于非O標(biāo)記值,如果其八連通位置的其他非O標(biāo)記值中的最小值小于所述非O標(biāo)記值,則用所述最小值替換所述非O標(biāo)記值,對同一非O標(biāo)記值的個數(shù)進行累加并將累加值存儲到FPGA的緩存中,當(dāng)標(biāo)記值不再變化時,停止迭代過程;所述清除小區(qū)域模塊用于將累加值小于小區(qū)域閾值的同一非O標(biāo)記值全部改為O。
12.根據(jù)權(quán)利要求11所述的八連通圖像處理裝置,其特征在于:所述圖像標(biāo)記模塊包括標(biāo)記判斷模塊、二值掩碼圖像緩存模塊和標(biāo)記圖像緩存模塊,所述二值掩碼圖像緩存模塊、所述標(biāo)記圖像緩存模塊與所述標(biāo)記判斷模塊相連。
13.根據(jù)權(quán)利要求11所述的八連通圖像處理裝置,其特征在于:所述八連通迭代模塊包括八連通迭代重新標(biāo)記模塊和標(biāo)記圖像緩存模塊,所述八連通迭代重新標(biāo)記模塊與所述標(biāo)記圖像緩存模塊相連。
14.根據(jù)權(quán)利要求11所述的八連通圖像處理裝置,其特征在于:所述清除小區(qū)域模塊包括小區(qū)域判斷重新標(biāo)記模塊、標(biāo)記圖像緩存模塊,所述小區(qū)域判斷重新標(biāo)記模塊與所述標(biāo)記圖像緩存模塊相連。
15.根據(jù)權(quán)利要求11所述的八連通圖像處理裝置,其特征在于:如果所述累加值不小于所述小區(qū)域閾值,則只存儲所述小區(qū)域閾值。
16.一種八連通圖像處理裝置,其特征在于:包括位于FPGA中并依次連接的圖像標(biāo)記模塊、八連通迭代模塊和清除小區(qū)域模塊,所述圖像標(biāo)記模塊用于設(shè)定標(biāo)記值閾值,根據(jù)所述標(biāo)記值閾值逐行或者逐列對圖像的像素點進行標(biāo)記,標(biāo)記時,數(shù)值小于所述標(biāo)記值閾值的像素點,其標(biāo)記值全部設(shè)為0,數(shù)值不小于所述標(biāo)記值閾值的第一個像素點,其標(biāo)記值設(shè)為I,如果已標(biāo)記并且不小于所述標(biāo)記值閾值的像素點與當(dāng)前像素點八連通,則當(dāng)前像素點的標(biāo)記值為前面的八連通標(biāo)記值中的最小值,否則當(dāng)前像素點的標(biāo)記值為前面非O標(biāo)記值中的最大值加1,得到標(biāo)記圖像;所述八連通迭代模塊用于對所述標(biāo)記圖像進行八連通迭代處理,迭代時O標(biāo)記值不作改變,對于非O標(biāo)記值,如果其八連通位置的其他非O標(biāo)記值中的最小值小于所述非O標(biāo)記值,則用所述最小值替換所述非O標(biāo)記值,對同一非O標(biāo)記值的個數(shù)進行累加并將累加值存儲到FPGA的緩存中,當(dāng)標(biāo)記值不再變化時,停止迭代過程;所述清除小區(qū)域模塊用于將累加值小于小區(qū)域閾值的同一非O標(biāo)記值全部改為O。
【文檔編號】G06T7/00GK103810713SQ201410089006
【公開日】2014年5月21日 申請日期:2014年3月12日 優(yōu)先權(quán)日:2014年3月12日
【發(fā)明者】張暉 申請人:深圳市普菲特安迪科技有限公司