本發(fā)明涉及水印去除的研究領域,特別涉及一種基于圖像修復的自動水印去除方法。
背景技術:
水印去除作為圖像數據清洗不可或缺的重要組成部分,已逐漸發(fā)展成為圖像數據清洗的主要手段并廣泛地應用圖像識別、圖像匹配等大數據處理領域。在過去十年里,水印去除技術雖然已經取得很大進展,但在一些實際的應用中,仍需要大量人工操作,未能達到自動化清洗數據的目的。目前水印去除方法大體分為三類:應用如photoshop等商業(yè)軟件人工去除水印。人工標識水印區(qū)域,然后應用圖像修復算法去除水印。但該方法在只能完成半自動水印去除工作,而且因為需要人工標識每張圖的水印區(qū)域,不利于批量化處理。綜上所述,現(xiàn)有圖像水印去除方法的缺點主要體現(xiàn)為以下兩點:1、需要借助其他商業(yè)軟件完成處理;2、需要人工標識水印區(qū)域,不利于批量化處理。
技術實現(xiàn)要素:
本發(fā)明的主要目的在于克服現(xiàn)有技術的缺點與不足,提供一種基于圖像修復的自動水印去除方法,該方法有效地實現(xiàn)了自動識別水印區(qū)域并完成自動去除水印的工作,從而提高了水印去除的效率。
為了到達上述目的,本發(fā)明采用以下技術方案:
本發(fā)明提供了一種基于圖像修復的自動水印去除方法,包括下述步驟:
(1)批量導入具有相同分辨率且具有相同水印區(qū)域的圖片;
(2)將導入的圖片由rgb模型轉換為灰度模型;
(3)對轉化為灰度模型后的一系列圖片進行疊加得到一張疊加灰度圖片;所述疊加灰度圖片:是把轉換為灰度模型的一系列圖片看作二維矩陣,做矩陣的加運算,把累加后得到的二維矩陣看作灰度圖像;
(4)對疊加灰度圖片應用閾值分割方法獲得水印區(qū)域;
(5)對水印區(qū)域膨脹一個像素點獲得更大輪廓的區(qū)域作為最終水印區(qū)域,保證最終水印區(qū)域完全覆蓋真實圖像中對應的水印區(qū)域;
(6)應用圖像修復算法對最終水印區(qū)域進行修復并輸出修復后的圖像。
作為優(yōu)選的技術方案,步驟(3)中,通過累加具有相同分辨率和水印區(qū)域的灰度圖片得到一張能夠清晰分割水印區(qū)域的灰度圖片,累加圖片的計算公式為:
式中g(x,y)是累加灰度圖像,gi(x,y)是導入的一系列灰度圖像,i為灰度圖像系列的下標。
作為優(yōu)選的技術方案,步驟(4)具體為:
(3-1)對疊加灰度圖片應用閾值分割方法得到一組閾值;
(3-2)把灰度值在閾值范圍內的像素點設為1,其他像素點設為0,得到二值圖像;
(3-3)對于二值圖像,若存在值為1的像素點在圖片邊緣,則對二值圖像做取反操作,把原來值為1的像素點的值改寫為0,把原來值為0的像素點的值改寫為1,所述圖像邊緣是指第一行或列、最后一行或列;
(3-4)存儲二值圖像以作下一步處理,其中二值圖像中值為1的像素點標識了水印區(qū)域。
作為優(yōu)選的技術方案,所述步驟(3-1)中,推薦但不限于otsu方法對閾值進行分割,除了otsu方法,可采用的閾值分割方法還包括直方圖雙峰法、分水嶺算法、k-means聚類方法,其中otsu方法具體為:
(3-1-1)設定一個初始閾值t,其中t的計算公式如下所示:
t=wp_1+(1-w)p_2
式中,p_1和p_2為圖像中任意像素值;w為權重值;
(3-1-2)利用t分割圖像,產生兩組相像素:亮度值大于等于t的所有像素組成g1,亮度值小于t的所有像素組成g2;
(3-1-3)計算g1和g2范圍內的像素的平均亮度值μ_1和μ_2;
(3-1-4)計算新的t,如下式所示:
t=wμ_1+(1-w)μ_2;
(3-1-5)重復步驟(3-1-2)至(3-1-4),直到t的變化小于一個預定值t0為止;
其中直方圖雙峰法具體為:
(3-1-6)計算圖像的灰度圖像;
(3-1-7)選取直方圖中兩個峰值點對應的灰度級t1和t2;
(3-1-8)選取t1和t2之間的谷值點對應的灰度級t0作為分割的閾值;
其中分水嶺算法具體為:
(3-1-9)檢測圖像中所有的盆地,并依次標記;
(3-1-10)將盆地周圍鄰域的像素按照灰度值大小入隊列;
(3-1-11)按照灰度值順序將像素出隊,進行判斷:
判斷1:如果像素周圍只存在一個盆地標記,將此像素劃分到此盆地
判斷2:如果像素周圍存在兩個以及以上盆地,次像素為分水嶺;
如果此像素是盆地像素,將該像素鄰域像素入隊;
(3-1-12)重復(3-1-11),直到隊列為空;
其中k-means聚類方法為:
(3-1-13)把每個像素點的灰度值看作一個點,隨機選取k個聚類質心點
(3-1-14)對于每一個樣例i,計算其應該屬于的類
(3-1-15)對于每一個類j,重新計算該類的質心
(3-1-16)重復(3-1-14)到(3-1-15)直到收斂。
作為優(yōu)選的技術方案,步驟(5)具體為:
(5-1)建立一個布爾矩陣,其大小與步驟(4)中得到的二值圖像相同,且對所有像素點賦值為0;
(5-2)逐點掃描步驟(4)中得到的二值圖像;
(5-3)若當前掃描到的像素點的值為1,則布爾矩陣中,該點以及與其相鄰的點對應的坐標,均賦值為1;
(5-4)若當前掃描到的像素點的值為0,則不做任何操作;
(5-5)輸出布爾矩陣。
作為優(yōu)選的技術方案,步驟(6)具體為:
(6-1)使用步驟(5)中導出的布爾矩陣標識待修復區(qū)域;
(6-2)根據實際情況應用恰當的圖像修復算法對待修復區(qū)域進行修復;
(6-3)導出修復后的圖像。
作為優(yōu)選的技術方案,步驟(6-1)具體為:(6-1-1)布爾矩陣中每個值為1的元素所在的行和列,分別對應待處理圖像中待修復區(qū)域的一個像素點的行和列;
(6-1-2)為了標識待修復區(qū)域,程序遍歷布爾矩陣中的每個元素,若遇到值為0的元素,則不做任何操作;若遇到值為1的元素,則待處理圖像中對應位置的像素點的rgb值替換為[256,256,256];
(6-1-3)為了可視化待修復區(qū)域,程序遍歷布爾矩陣中的每個元素,若遇到值為0的元素,則不做任何操作;若遇到值為1的元素,則待處理圖像中對應位置的像素點的rgb值替換為[0,255,0]。8、根據權利要求5所述的基于圖像修復的自動水印去除方法,其特征在于,步驟(6-2)中,根據實際情況應用恰當的圖像修復算法對待修復區(qū)域進行修復,圖像修復算法推薦但不限于基于塊傳播的圖像修復算法,步驟(6-2)具體為:(6-2-1)對于待修復區(qū)域的每個邊界點,計算其的修復權重ρ(p),其中ρ(p)的計算公式如下所示:
ψp是以p點為中心的一個小圖像塊,n(p)是以p點為中心的一個小領域且n(p)包含ψp,z(p)為標準化項,使得
(6-2-2)選取修復權重ρ(p)值最大的像素點對應的小圖像塊ψ;
(6-2-3)全圖搜索與待修復小圖像塊ψ中已知部分最相似的n個相同大小的小圖像塊,用著n個小圖像塊的線性組合替代待修復小圖像塊ψ中的相應位置的待修復像素點的像素值;
(6-2-4)更新待修復區(qū)域及其邊界點,重復(6-2-1)到(6-2-3)的步驟直到所有待修復區(qū)域修復完成。
本發(fā)明與現(xiàn)有技術相比,具有如下優(yōu)點和有益效果:
1、本發(fā)明采用閾值分割的技術手段,從而達到了自動標識水印區(qū)域的技術效果。
2、本發(fā)明采用全自動化識別水印區(qū)域和全自動化水印修復的技術手段,從而達到了批量去除水印的技術效果。
附圖說明
圖1是本發(fā)明基于圖像修復的自動水印去除方法的總流程圖;
具體實施方式
下面結合實施例及附圖對本發(fā)明作進一步詳細的描述,但本發(fā)明的實施方式不限于此。
實施例1
如圖1所示,本實施例基于圖像修復的自動水印去除方法,具體包括下述步驟:
(1)批量導入具有相同分辨率且具有相同水印區(qū)域的圖片;
(2)將導入的圖像由rgb模型轉換為灰度模型;
(3)對轉化為灰度模型后的一系列圖片進行疊加得到一張疊加灰度圖片;即把轉換為灰度模型的一系列圖片看作二維矩陣,做矩陣的加運算,把累加后得到的二維矩陣看作灰度圖像,我們稱為疊加灰度圖片;
①灰度累加圖片的計算公式:
式中g(x,y)是累加灰度圖像,gi(x,y)是導入的一系列灰度圖像,i為灰度圖像系列的下標;
(4)對疊加灰度圖片應用閾值分割方法獲得水印區(qū)域,具體做法如下:
①對圖像應用閾值分割方法得到二值圖像,閾值分割方法推薦但不限于otsu方法;
②存儲二值圖像以作下一步處理;
其中,ostu處理運算量較大,這里提出一種簡化算法:
①首先設定一個初始閾值t。其中t的計算公式如下所示:
t=wp_1+(1-w)p_2
式中,p1和p2為圖像中任意像素值(一般p1取最大亮度值,p2取最小亮度值);w為權重值(一般取1/2)。
②利用t分割圖像。這會產生兩組相像素:亮度值大于等于t的所有像素組成g1,亮度值小于t的所有像素組成g2。
③計算g1和g2范圍內的像素的平均亮度值μ_1和μ_2。
④計算新的t,如下式所示:
t=wμ_1+(1-w)μ_2
⑤重復步驟②到步驟④,直到t的變化小于一個預定值t0為止。
(5)對水印區(qū)域膨脹一個像素點獲得更大輪廓的區(qū)域作為最終水印區(qū)域,保證最終水印區(qū)域完全覆蓋真實圖像中對應的水印區(qū)域,具體做法如下:
①建立一個布爾矩陣,其大小與步驟(4)中得到的二值圖像相同,且對所有像素點賦值為0;
②逐點掃描步驟(4)中得到的二值圖像;
③若當前掃描到的像素點的值為1,則布爾矩陣中,該點以及與其相鄰(8連通)的點對應的坐標,均賦值為1;
④若當前掃描到的像素點的值為0,則不做任何操作;
⑤輸出布爾矩陣。
(6)應用圖像修復算法對最終水印區(qū)域進行修復并輸出修復后的圖像。
步驟(6)具體為:
(6-1)使用步驟(5)中導出的布爾矩陣標識待修復區(qū)域;
(6-1-1)布爾矩陣中每個值為1的元素所在的行和列,分別對應待處理圖像中待修復區(qū)域的一個像素點的行和列。
(6-1-2)為了標識待修復區(qū)域,程序遍歷布爾矩陣中的每個元素,若遇到值為0的元素,則不做任何操作;若遇到值為1的元素,則待處理圖像中對應位置的像素點的rgb值替換為[256,256,256]。(標識后的圖像不可顯示)
(6-1-3)為了可視化待修復區(qū)域,程序遍歷布爾矩陣中的每個元素,若遇到值為0的元素,則不做任何操作;若遇到值為1的元素,則待處理圖像中對應位置的像素點的rgb值替換為[0,255,0]。(可視化后的圖像,待修復區(qū)域標識為純綠色)
(6-2)根據實際情況應用恰當的圖像修復算法對待修復區(qū)域進行修復;
步驟(6-2)具體為:
(6-2-1)對于待修復區(qū)域的每個邊界點,計算其的修復權重ρ(p),其中ρ(p)的計算公式如下所示:
ψp是以p點為中心的一個小圖像塊,n(p)是以p點為中心的一個小領域且n(p)包含ψp,z(p)為標準化項,使得
(6-2-2)選取修復權重ρ(p)值最大的像素點對應的小圖像塊ψ
(6-2-3)全圖搜索與待修復小圖像塊ψ中已知部分最相似的n(一般n取25)個相同大小的小圖像塊,用著n個小圖像塊的線性組合替代待修復小圖像塊ψ中的相應位置的待修復像素點的像素值。
(6-2-4)更新待修復區(qū)域及其邊界點,重復(6-2-1)到(6-2-3)的步驟直到所有待修復區(qū)域修復完成。
(6-3)導出修復后的圖像。
實施例2
本實施例與實施例1和實施例2大致相同,不同之處僅在于步驟(3-1)中對閾值進行分割的方法,除了otsu方法,可采用的閾值分割方法還包括直方圖雙峰法、分水嶺算法、k-means聚類方法等;
其中直方圖雙峰法具體為:
(3-1-6)計算圖像的灰度圖像;
(3-1-7)選取直方圖中兩個峰值點對應的灰度級t1和t2;
(3-1-8)選取t1和t2之間的谷值點對應的灰度級t0作為分割的閾值。
其中分水嶺算法具體為:
(3-1-9)檢測圖像中所有的盆地,并依次標記;
(3-1-10)將盆地周圍鄰域的像素按照灰度值大小入隊列;
(3-1-11)按照灰度值順序將像素出隊,進行判斷:
判斷1:如果像素周圍只存在一個盆地標記,將此像素劃分到此盆地
判斷2:如果像素周圍存在兩個以及以上盆地,次像素為分水嶺。
如果此像素是盆地像素,將該像素鄰域像素入隊;
(3-1-12)重復(3-1-11),直到隊列為空。
其中k-means聚類方法為:
(3-1-13)把每個像素點的灰度值看作一個點,隨機選取k個聚類質心點
(3-1-14)對于每一個樣例i,計算其應該屬于的類
(3-1-15)對于每一個類j,重新計算該類的質心
(3-1-16)重復(3-1-14)到(3-1-15)直到收斂。
上述實施例為本發(fā)明較佳的實施方式,但本發(fā)明的實施方式并不受上述實施例的限制,其他的任何未背離本發(fā)明的精神實質與原理下所作的改變、修飾、替代、組合、簡化,均應為等效的置換方式,都包含在本發(fā)明的保護范圍之內。