TWI738447B - 二維條碼的資訊隱藏方法、電子裝置與電腦程式產品 - Google Patents
二維條碼的資訊隱藏方法、電子裝置與電腦程式產品 Download PDFInfo
- Publication number
- TWI738447B TWI738447B TW109126106A TW109126106A TWI738447B TW I738447 B TWI738447 B TW I738447B TW 109126106 A TW109126106 A TW 109126106A TW 109126106 A TW109126106 A TW 109126106A TW I738447 B TWI738447 B TW I738447B
- Authority
- TW
- Taiwan
- Prior art keywords
- module
- pair
- modules
- area
- color
- Prior art date
Links
Images
Landscapes
- Image Processing (AREA)
- Editing Of Facsimile Originals (AREA)
Abstract
本發明提出一種二維條碼的資訊隱藏方法,包括:從二維條碼取得多個模組,定義前模組對與目前模組對;若目前模組對為雙色且前模組對為單色,移動目前模組對中兩個模組之間的邊界以嵌入訊息的位元至二維條碼;以及在水平地且垂直地嵌入訊息至二維條碼以後,偵測並重建模組塊中的空洞區與重疊區。本發明也提出邊界配對以避免鋸齒狀的現象。
Description
本揭露是關於二維條碼的資訊隱藏方法。
資訊隱藏(data hiding)應用的歷史悠久,最主要的目的是將機密資訊傳送給接收者時,不想被有心人或不相關的人所發現並知道其機密資訊。最主要的用途在於軍事及情報傳送等等。而為了不讓機密資訊被知曉,則需要一個遮蔽機密資訊的物件(Cover object),將欲隱藏的機密資訊嵌入遮蔽的物件後,產生一個偽裝後的物件(Stego-object),此稱為偽裝學(Steganography)。
另一方面,近年來,條碼(Barcodes)的運用越來越廣泛,條碼主要分為一維條碼(Linear barcodes)與二維條碼(2D barcodes)。利用條碼可記錄貨品的資訊,管理貨品的進出紀錄。一維條碼所能紀錄的資訊很少,僅能紀錄一二十個文字或數字,也無容錯能力,若條碼毀損,條碼所記錄的資訊就無法被機器正確讀取。二維條碼可表示的資訊比一維條碼多,二維條碼具有容錯能力,當條碼
被毀損時,可經由校正錯誤的能力來還原資料。
如何在二維條碼上隱藏資訊,為此領域技術人員所關心的議題。
二維條碼中具有黑色或白色的方塊,在此每個方塊稱為一個模組(module),相鄰的兩個模組稱為一個模組對(module pair),而2x2排列的四個模組合稱為一個模組塊(module block)。
本發明的實施例提出一種二維條碼的資訊隱藏方法,適用於電子裝置,此資訊隱藏方法包括:從二維條碼取得多個模組;根據這些模組定義前模組對與目前模組對;若目前模組對為雙色且前模組對為單色,移動目前模組對中兩個模組之間的邊界以嵌入訊息的位元至二維條碼;以及在水平地且垂直地嵌入訊息至二維條碼以後,偵測模組塊中的空洞區與重疊區並且重建空洞區與重疊區。
在一些實施例中,上述的資訊隱藏方法還包括:如果目前模組對為單色,則維持目前模組對不變;以及如果目前模組對為雙色且前模組對為雙色,對目前模組對執行配對調整,使得目前模組對中兩個模組之間的邊界配對至前模組對中兩個模組之間的邊界。
在一些實施例中,上述偵測模組塊中的空洞區與重疊區並且重建空洞區與重疊區的步驟包括:取得模組塊中的左上模組、右上模組、左下模組與右下模組;如果左上
模組的右下角位於右下模組的左上角的右下方,則判斷模組塊具有重疊區,且重疊區存在於左上模組的右下角與右下模組的左上角之間;以及根據左上模組的顏色來重建重疊區。
在一些實施例中,上述偵測模組塊中的空洞區與重疊區並且重建空洞區與重疊區的步驟包括:如果左上模組的右下角位於右下模組的左上角的左下方且左下模組的顏色為白色,則判斷模組塊具有空洞區,且空洞區存在於左上模組的右下角與右下模組的左上角之間;以及根據左上模組的顏色來重建空洞區。
在一些實施例中,上述偵測模組塊中的空洞區與重疊區並且重建空洞區與重疊區的步驟包括:如果右上模組的左下角位於左下模組的右上角的右下方且右上模組的顏色是白色,則判斷模組塊具有空洞區,且空洞區存在於右上模組的左下角與左下模組的右上角之間;以及根據左上模組的顏色來重建空洞區。
在一些實施例中,從二維條碼取得模組的步驟包括:以光柵掃描的方式水平地且垂直地掃描二維條碼,計算每個運行的長度;將這些長度中出現最多次的長度設定為模組長度;根據模組長度計算一預設範圍,根據預設範圍中出現第二多次的長度計算位移量;根據模組長度從二維條碼取得模組;以及根據模組長度與位移量決定每一個模組的未改變區域,並根據未改變區域決定每一個模組的顏色。
以另一個角度來說,本發明的實施例提出一種電子裝置,包括記憶體與處理器。記憶體儲存有多個指令,處理器用以執行指令以完成上述的資訊隱藏方法。
以另一個角度來說,本發明的實施例提出一種電腦程式產品,由電腦裝置載入並執行以完成上述的資訊隱藏方法。
在上述的資訊隱藏方法中,透過改變兩個模組之間的邊界可以嵌入位元,透過執行配對調整可以避免鋸齒狀的現象,並且本揭露也提出了消除重疊區與空洞區的演算法。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
100:電子裝置
110:處理器
120:記憶體
210:模組對
201:黑色的模組
202:白色的模組
300,310,320:串列
301~308:模組對
400:模組塊
410,420,430,440:模組對
450:二維條碼
610_v:垂直前模組對
611_v:垂直目前模組對
620_h:水平前模組對
621_h:水平目前模組對
a1,a2,a3,a4,b1,b2,b3,b4:態樣
Mi,j,Mi,j+1,Mi+1,j,Mi+1,j+1:模組
Si,j,Si,j+1,Si+1,j,Si+1,j+1:左上角
Ei,j,Ei,j+1,Ei+1,j,Ei+1,j+1:右下角
Ri+1,j:右上角
Ki,j+1:左下角
810,820:重疊區
830,840:空洞區
910,930:二維條碼
920,940:圖表
1010:未改變區域
1020,1030,1040:區域
1101~1108:步驟
[圖1]是根據一實施例繪示電子裝置的示意圖。
[圖2]是根據一實施例繪示將位元嵌入模組對的示意圖。
[圖3]是根據一實施例繪示鋸齒狀現象與配對調整的示意圖。
[圖4A]與[圖4B]是根據一實施例分別繪示水平與垂直嵌入位元的示意圖。
[圖4C]是根據一實施例繪示以雙方向嵌入位元的模組塊執行順序的示意圖。
[圖5]是根據一實施例繪示嵌入位元的規格表格。
[圖6]是根據一實施例繪示重疊區與空洞區各種態樣的示意圖。
[圖7]是根據一實施例繪示模組塊中模組座標的示意圖。
[圖8]是根據一實施例繪示以座標偵測重疊區與空洞區的示意圖。
[圖9]是根據一實施例統計二維條碼中運行長度的示意圖。
[圖10]是根據一實施例繪示模組塊中所有可能位移的示意圖。
[圖11]是根據一實施例繪示二維條碼的資訊隱藏方法。
關於本文中所使用之「第一」、「第二」等,並非特別指次序或順位的意思,其僅為了區別以相同技術用語描述的元件或操作。
圖1是根據一實施例繪示電子裝置的示意圖。請參照圖1,電子裝置100可以是智慧型手機、平板電腦、個人電腦、筆記型電腦、伺服器、工業電腦或具有計算能力的各種電子裝置等,本發明並不在此限。電子裝置100包括了處理器110與記憶體120,處理器110通訊連接至記憶體120,處理器110可為中央處理器、微處理器、微控制器、數位信號處理器、影像處理晶片、特殊應用積體電路等,記憶體120可為隨機存取記憶體、唯讀記憶體、快閃記憶體、軟碟、硬碟、光碟、隨身碟、磁帶或是可透
過網際網路存取之資料庫,其中儲存有多個指令,處理器110會執行這些指令來完成二維條碼的資訊隱藏方法,以下將說明此方法。
二維條碼的種類可包括矩陣型(Matrix type)跟堆疊型(Stack type),矩陣型例如為快速反應(Quick Response,QR)碼以及資料矩陣(Data Matrix),堆疊型例如為PDF-417,在此揭露的資訊隱藏方法可以適用於上述任何一個種類的二維條碼。
二維條碼中具有黑色或白色的方塊,在此每個方塊稱為一個模組(module),相鄰的兩個模組稱為一個模組對(module pair)。此資訊隱藏方法的一個主要概念在於如果兩個相鄰的模組具有不同的顏色,則可以調整這兩個模組的內容以嵌入位元“1”;如果要嵌入位元“0”或這兩個模組具有相同的顏色,則維持模組不變。舉例來說,圖2是根據一實施例繪示將位元嵌入模組對的示意圖。請參照圖2,模組對210包括了黑色的模組201與白色的模組202,在此每個模組的寬度與高度都是4個像素,但本揭露並不在此限。當要嵌入位元“1”時,可以將黑色的模組201與白色的模組202之間的邊界往右移動k個像素,其中k為正整數,在此例子中k=1;當要嵌入位元“0”時,則維持黑色的模組201與白色的模組202不變。在其他實施例中也可以在嵌入位元“0”時移動黑色的模組201與白色的模組202之間的邊界,在嵌入位元“1”時維持黑色的模組201與白色的模組202不變,本揭露並不在此限。
如果一個模組對中兩個模組的顏色不相同,則稱此模組對為雙色;如果模組對中兩個模組的顏色相同,則稱此模組對為單色。對於單色的模組對則不嵌入位元,也就是維持其中的模組不變。
圖3是根據一實施例繪示鋸齒狀現象與配對調整的示意圖。在圖3繪示了三個串列300、310、320,每個串列都包含了模組對301~308。串列300顯示的是尚未嵌入位元的態樣。依照上述的方法可以在模組對301嵌入位元“1”,在模組對302嵌入位元“0”,在模組對304則不嵌入位元,以此類推。模組對304、307則是因為單色所以不嵌入位元。串列310是依照上述例子嵌入位元後的態樣,從圖3中可以看出串列310會產生鋸齒狀的現象,這容易被駭客(hacker)所發現。
為解決上述問題,在此實施例中如果目前模組對為雙色且前模組對為雙色,則對目前模組對執行一配對調整,使得目前模組對中兩個模組之間的邊界配對(對齊)至前模組對中兩個模組之間的邊界。在此是由上往下嵌入位元,因此當模組對302為目前模組對時,模組對301為前模組對,以此類推。當模組對302、303、306為目前模組對時,對應的前模組對都是雙色,因此符合上述的條件,可執行配對調整。串列320繪示了執行配對調整後的模組對,可以發現上述鋸齒狀的現象被移除了。值得注意的是,執行配對調整的模組對不能嵌入位元,因此串列320中可以嵌入的位元數(共3個)會少於串列310可以嵌入的位元數
(共6個)。
在圖3的實施例中是水平地嵌入位元,但除了水平方向以外,在垂直方向也可以嵌入位元。在此將2x2個模組合稱為一個模組塊,如圖4A所示。模組塊400包括了四個模組。當水平地嵌入位元時,左上模組與右上模組形成模組對410,左下模組與右下模組形成水平的模組對420,當模組對420為目前模組對(亦稱為水平目前模組對)時,模組對410便是對應的前模組對(亦稱為水平前模組對)。當在模組對中420嵌入位元“1”時,可以將模組對420中兩個模組之間的邊界往右移動k個像素。如果模組對420位於二維條碼的第一列(row),則模組對410不存在,在此情況下模組對420依然可以嵌入位元。
另一方面,請參照圖4B,當垂直地嵌入位元時,左上模組與左下模組形成模組對430,右上模組與右下模組形成模組對440,當模組對440為目前模組對(亦稱為垂直目前模組對)時,模組對430便是對應的前模組對(亦稱為垂直前模組對)。如果在模組對中440嵌入位元“1”,可以將模組對440中兩個模組之間的邊界往下移動k個像素。如果模組對440位於二維條碼的第一行(column),則模組對430不存在,在此情況下模組對440依然可以嵌入位元。在上述實施例中如果要嵌入位元“1”時是將兩個模組之間的邊界往右/下移動,但在其他實施例中也可以將兩個模組之間的邊界往左/上移動,本發明並不在此限。
圖4C是根據一實施例繪示以雙方向嵌入位元的
模組塊執行順序的示意圖。請參照圖4C,在此二維條碼450中包括了多個模組,在圖4C中標示為A、B、C等。在一些實施例中可以先執行水平嵌入,然後再執行垂直嵌入,並且以光柵掃描(raster-scan)的順序取得模組塊,因此第一個處理的模組塊是從二維條碼450的最左上角開始,其中包括了標示為“A”、“B”的模組,由於是第一列因此模組塊中上方兩個模組不存在(繪示為虛線)。第一個模組塊處理完以後,第二個模組塊包括了標示為“B”、“C”的模組,值得注意的是模組“B”與第一個模組塊重複,換言之在此實施例中是以模組塊重疊的方式來依序取得欲處理的模組塊,第三個欲處理的模組塊則包括了標示為“C”、”D”的模組,以此類推。在執行水平方向的嵌入以後,垂直嵌入的第一個模組塊包括了標示為“A”、“G”的模組,第二個欲處理的模組塊包括了標示為“G”、“M”的模組,以此類推。然而,圖4C中的順序僅是範例,在其他實施例中也可以採用模組塊不重疊的方式來取得欲處理的模組塊,或者也可以先執行垂直的嵌入再執行水平的嵌入,本發明並不限制模組塊的處理順序。
綜上所述,嵌入位元的規則可以表示為圖5的表格。當目前模組對為單色時,則不論前模組對的態樣為何都維持目前模組對不變。當前模組對為單色或不存在,且目前模組對為雙色時則可以嵌入位元。當前模組對與目前模組對都是雙色時則對目前模組對實施配對調整。
值得注意的是,上述水平與垂直的嵌入方式可以實
施在同一個模組塊中,然而這樣有可能會產生空洞區與重疊區。在此考慮的所有的可能性以後發現了共有8種組合會發生空洞區與重疊區。具體來說,請參照圖6,在此用“垂直前模組對”、“垂直目前模組對”、“水平前模組對”與“水平目前模組對”來描述模組塊中的四個模組對,相關定義請參照圖4A與圖4B的說明。
在態樣a1與態樣a2中垂直前模組對610_v與水平前模組對620_h都嵌入了位元“1”,從圖中可以看出白色(黑色)模組具有一缺角(稱重疊區)。在態樣a3與態樣a4中垂直目前模組對611_v與水平目前模組對621_h都嵌入了位元“1”。在態樣b1與態樣b2中垂直前模組對610_v與水平目前模組對621_h都嵌入了位元“1”,在圖中可以看出態樣b1具有白色的空洞區。在態樣b3與態樣b4中垂直目前模組對611_v與水平前模組對620_h都嵌入了位元“1”,在圖中可以看出態樣b3具有白色的空洞區。值得注意的是,雖然態樣b1與態樣b2的發生原因相同,但此實施例中背景是白色的,因此態樣b2並沒有空洞區。類似地,態樣b4也不會像態樣b3那樣產生空洞區。除此之外,態樣a3與態樣a4並沒有凸出或凹進去的部分,並不需要特別處理。因此,需要處理的是態樣a1、a2、b1與b3,在此稱態樣a1與a2具有重疊區,而態樣b1與態樣b3具有空洞區。以下將說明如何偵測重疊區與空洞區,並且如何重建重疊區與空洞區。
在此是以模組塊中四個模組的座標來偵測重疊區
與空洞區。圖7是根據一實施例繪示模組塊中模組座標的示意圖。請參照圖7,模組塊700包括了左上模組Mi,j、右上模組Mi,j+1、左下模組Mi+1,j與右下模組Mi+1,j+1,其中i代表垂直方向的座標,j代表水平方向的座標。每個模組都有四個角,在此僅標示其中部分的角。具體來說,左上模組Mi,j包括了左上角Si,j與右下角Ei,j;右上模組Mi,j+1包括了左上角Si,j+1、左下角Li,j+1與右下角Ei,j+1;左下模組Mi+1,j包括了左上角Si+1,j、右上角Ri+1,j與右下角Ei+1,j;右下模組Mi+1,j+1包括了左上角Si+1,j+1與右下角Ei+1,j+1。
圖8是根據一實施例繪示以座標偵測重疊區與空洞區的示意圖。請參照圖8,當發生態樣a1與態樣a2時,由於垂直前模組對610_v與水平前模組對620_h都嵌入了位元“1”,因此左上模組Mi,j的右下角Ei,j會向右下方移動。如果左上模組Mi,j的右下角Ei,j位於右下模組Mi+1,j+1的左上角Si+1,j+1的右下方,則判斷此模組塊具有重疊區810,且重疊區810存在於左上模組Mi,j的右下角Ei,j與右下模組Mi+1,j+1的左上角Si+1,j+1之間。接下來,可以根據左上模組Mi,j的顏色來重建重疊區810,也就是把重疊區810中每個像素的顏色都替換為左上模組Mi,j的顏色。
當發生態樣a3與態樣a4時,由於垂直目前模組對611_v與水平目前模組對621_h都嵌入了位元“1”,因此右上模組Mi,j+1的左下角Li,j+i會往下移動,且左下
模組Mi+1,j的右上角Ri+1,j會往右方移動,如此一來形成重疊區820。但如上所述的,對於態樣a3與態樣a4並不需要特別處理。
當發生態樣b1與態樣b2時,由於垂直前模組對610_v與水平目前模組對621_h都嵌入了位元“1”,因此左上模組Mi,j的右下角Ei,j會向下方移動,而右下模組Mi+1,j+1的左上角Si+1,j+1則往右移動。如果左上模組Mi,j的右下角Ei,j位於右下模組Mi+1,j+1的左上角Si+1,j+1的左下方且左下模組Mi+1,j+1的顏色為白色,則是態樣b1,可判斷此模組塊具有空洞區830,且830空洞區存在於左上模組Mi,j的右下角Ei,j與右下模組Mi+1,j+1的左上角Si+1,j+1之間。當判斷是態樣b1以後,可根據左上模組Mi,j的顏色來重建重疊區830,也就是把重疊區830中每個像素的顏色都替換為左上模組Mi,j的顏色。值得注意的是,如果左下模組Mi+1,j+1的顏色是黑色,則是態樣b2,不需要特別處理。
當發生態樣b3與態樣b4時,由於垂直目前模組對611_v與水平前模組對620_h都嵌入了位元“1”,因此右上模組Mi,j+1的左下角Li,j+1會往右下方移動。如果右上模組Mi,j+1的左下角Li,j+1位於左下模組Mi+1,j的右上角Ri+1,j的右下方且右上模組Mi,j+1的顏色是白色,則是態樣b3,可判斷此模組塊具有840空洞區,且840空洞區存在於右上模組Mi,j+1的左下角Li,j+1與左下模組Mi+1,j的右上角Ri+1,j之間。當判斷是態樣b3以後,
可根據左上模組Mi,j的顏色來重建重疊區840,也就是把重疊區840中每個像素的顏色都替換為左上模組Mi,j的顏色。值得注意的是,如果右上模組Mi,j+1的顏色是黑色,則是態樣b4,不需要特別處理。
以上已經詳細說明如何嵌入訊息的位元,在此說明如何擷取訊息中的位元,首先對於一個編碼過後的二維條碼要先取得其中的各個模組。圖9是根據一實施例統計二維條碼中運行(run)長度的示意圖。圖9繪示了尚未嵌入位元之前的二維條碼910,在此可以光柵掃描的方式水平地且垂直地掃描此二維條碼910,計算每一次運行的長度,這些長度可以繪製成圖表920,其中橫軸代表運行的長度,縱軸代表該長度發生的次數。二維條碼910中每個模組的長度表示為正整數w(可以是寬度或高度),在此例子中w=5個像素,因此在圖表920中可以看出當運行長度為5的倍數時都會出現一個峰值,出現次數最高的長度會等於模組長度。另一方面,圖9也繪示了依照上述方法嵌入位元以後的二維條碼930,同樣地以光柵掃描的方式水平地且垂直地掃描此二維條碼930以後,計算每一次運行的長度可以繪製出圖表940。由於在此實施例中每個模組的邊界可能會被位移k個像素,k稱為位移量,在此例子中k=2,因此圖表940中的峰值不只出現在5的倍數,此峰值也可能出現在n×w±k的長度,例如3,5,7,8,10,12...,其中n為正整數。然而,出現次數最多次的長度依然是5,因此同樣可以把出現最多次的長度設定為模組長度w。根據此
模組長度可以設定一個預設範圍[w-[(w-1)/2],w+[(w-1)/2]]=[3,7],找到在此預設範圍內出現第二多次的長度,在此實施例中為7,接下將出現最多次的長度減去出現第二多次的長度,然後取絕對值可以計算出位移量,即k=|5-7|=2。
在二維條碼930中,每w×w個像素都組成一個模組,然而由於模組的邊界可能會被位移,因此必須判斷此模組原本的顏色與是否被位移過。圖10是根據一實施例繪示模組塊中所有可能位移的示意圖。請參照圖10,每個模組的邊界可能會被位移k個像素,因此模組Mi,j的上邊界可能會往下移動k個像素,左邊界可能會往右移動k個像素,右邊界可能會往右移動k個像素(形成區域1020),下邊界也可能會往下移動k個像素(形成區域1030),甚至在重建重疊區或空洞區以後可能會擴張到區域1040。然而,不論是什麼情況,在未改變區域1010內的像素都不會被更改,換言之根據模組長度w與位移量k可以決定每個模組的未改變區域1010,此未改變區域1010的長度與寬度都是(w-k)個像素。在決定未改變區域1010的位置以後,根據未改變區域1010的顏色可以決定模組Mi,j的顏色。由於二維條碼上可能會有一些雜訊,因此在此實施例中可以根據未改變區域1010內所有像素的顏色進行投票,較多票數的顏色便是未改變區域1010的顏色,此顏色也是模組Mi,j的顏色。
在決定未改變區域1010的顏色以後,可以根據周
圍區域1020、1030的顏色來判斷模組Mi,j的邊界是否被位移過。區域1020、1030的顏色同樣也可以透過投票來決定。如果區域1020的顏色相同於未改變區域1010的顏色,則表示模組Mi,j與模組Mi,j+1之間的邊界被移動過,這可能是因為嵌入位元“1”或是進行過配對調整。類似地,如果區域1030的顏色相同於未改變區域1010的顏色,則表示模組Mi,j與模組Mi+1,j之間的邊界被移動過。
在擷取訊息時,首先根據上述方法取得二維條碼的多個模塊,接著根據圖4A與圖4B的說明定義出前模組對與目前模組對。如果目前模組對是單色,則跳過此模組對。如果前模組對不存在(即目前模組對是位於第一行或第一列)且目前模組對是雙色,根據目前模組對中兩個模組之間的邊界是否被位移過來解碼出位元“1”或是“0”。如果前模組對是雙色並且目前模組對也是雙色,則表示進行過配對調整,因此跳過目前模組對。如果前模組對是單色,且目前模組對是雙色,則根據目前模組對中兩個模組之間的邊界是否被位移過來解碼出位元“1”或是“0”。上述步驟可以套用在水平以及垂直的模組對。
圖11是根據一實施例繪示二維條碼的資訊隱藏方法,請參照圖11,在步驟1101,從二維條碼取得多個模組。在步驟1102,定義前模組對與目前模組對。在步驟1103,判斷目前模組對是否為單色。若步驟1103的結果為是,在步驟1104中維持目前模組對不變。若步驟1103
的結果為否(雙色),在步驟1105中再判斷前模組對是否為單色或不存在。如果步驟1105的結果為是,在步驟1106中移動目前模組對中兩個模組之間的邊界以嵌入訊息的位元至二維條碼。如果步驟1105的結果為否(雙色),在步驟1107中對目前模組對執行配對調整,使得目前模組對中兩個模組之間的邊界配對至前模組對中兩個模組之間的邊界。在水平地且垂直地嵌入訊息至二維條碼以後,在步驟1108,偵測模組塊中的空洞區與重疊區並且重建此空洞區與此重疊區。然而,圖11中各步驟已詳細說明如上,在此便不再贅述。值得注意的是,圖11中各步驟可以實作為多個程式碼或是電路,本發明並不在此限。此外,圖11的方法可以搭配以上實施例使用,也可以單獨使用。換言之,圖11的各步驟之間也可以加入其他的步驟。
以另外一個角度來說,本發明也提出了一電腦程式產品,此產品可由任意的程式語言及/或平台所撰寫,當此電腦程式產品被載入至電腦系統並執行時,可執行上述的資訊隱藏方法。
在上述的資訊隱藏方法中,透過改變兩個模組之間的邊界可以嵌入位元,透過執行配對調整可以避免鋸齒狀的現象,並且本揭露也提出了消除重疊區與空洞區的演算法。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故
本發明的保護範圍當視後附的申請專利範圍所界定者為準。
1101~1108:步驟
Claims (8)
- 一種二維條碼的資訊隱藏方法,適用於一電子裝置,該資訊隱藏方法包括: 從該二維條碼取得多個模組; 根據該些模組定義一前模組對與一目前模組對; 若該目前模組對為雙色且該前模組對為單色,移動該目前模組對中兩個模組之間的邊界以嵌入一訊息的一位元至該二維條碼;以及 在水平地且垂直地嵌入該訊息至該二維條碼以後,偵測一模組塊中的空洞區與重疊區並且重建該空洞區與該重疊區。
- 如請求項1所述之資訊隱藏方法,進一步包括: 如果該目前模組對為單色,則維持該目前模組對不變;以及 如果該目前模組對為雙色且該前模組對為雙色,對該目前模組對執行一配對調整,使得該目前模組對中該兩個模組之間的邊界配對至該前模組對中兩個模組之間的邊界。
- 如請求項1所述之資訊隱藏方法,其中偵測該模組塊中的該空洞區與該重疊區並且重建該空洞區與該重疊區的步驟包括: 取得該模組塊中的一左上模組、一右上模組、一左下模組與一右下模組; 如果該左上模組的右下角位於該右下模組的左上角的右下方,則判斷該模組塊具有該重疊區,且該重疊區存在於該左上模組的右下角與該右下模組的左上角之間;以及 根據該左上模組的顏色來重建該重疊區。
- 如請求項1所述之資訊隱藏方法,其中偵測該模組塊中的該空洞區與該重疊區並且重建該空洞區與該重疊區的步驟包括: 取得該模組塊中的一左上模組、一右上模組、一左下模組與一右下模組; 如果該左上模組的右下角位於該右下模組的左上角的左下方且該左下模組的顏色為白色,則判斷該模組塊具有該空洞區,且該空洞區存在於該左上模組的右下角與該右下模組的左上角之間;以及 根據該左上模組的顏色來重建該空洞區。
- 如請求項1所述之資訊隱藏方法,其中偵測該模組塊中的該空洞區與該重疊區並且重建該空洞區與該重疊區的步驟包括: 取得該模組塊中的一左上模組、一右上模組、一左下模組與一右下模組; 如果該右上模組的左下角位於該左下模組的右上角的右下方且該右上模組的顏色是白色,則判斷該模組塊具有該空洞區,且該空洞區存在於該右上模組的左下角與該左下模組的右上角之間;以及 根據該左上模組的顏色來重建該空洞區。
- 如請求項1所述之資訊隱藏方法,其中從該二維條碼取得該些模組的步驟包括: 以光柵掃描的方式水平地且垂直地掃描該二維條碼,計算每一多個運行的長度; 將該些長度中出現最多次的長度設定為一模組長度; 根據該模組長度計算一預設範圍,根據該預設範圍中出現第二多次的長度計算一位移量; 根據該模組長度從該二維條碼取得該些模組;以及 根據該模組長度與該位移量決定每一該些模組的未改變區域,並根據該未改變區域決定每一該些模組的顏色。
- 一種電子裝置,包括: 一記憶體,儲存有多個指令;以及 一處理器,用以執行該些指令以完成多個步驟: 從一二維條碼取得多個模組; 根據該些模組定義一前模組對與一目前模組對; 若該目前模組對為雙色且該前模組對為單色,移動該目前模組對中兩個模組之間的邊界以嵌入一訊息的一位元至該二維條碼;以及 在水平地且垂直地嵌入該訊息至該二維條碼以後,偵測一模組塊中的空洞區與重疊區並且重建該空洞區與該重疊區。
- 一種電腦程式產品,由一電子裝置載入並執行以完成多個步驟: 從一二維條碼取得多個模組; 根據該些模組定義一前模組對與一目前模組對; 若該目前模組對為雙色且該前模組對為單色,移動該目前模組對中兩個模組之間的邊界以嵌入一訊息的一位元至該二維條碼;以及 在水平地且垂直地嵌入該訊息至該二維條碼以後,偵測一模組塊中的空洞區與重疊區並且重建該空洞區與該重疊區。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109126106A TWI738447B (zh) | 2020-07-31 | 2020-07-31 | 二維條碼的資訊隱藏方法、電子裝置與電腦程式產品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109126106A TWI738447B (zh) | 2020-07-31 | 2020-07-31 | 二維條碼的資訊隱藏方法、電子裝置與電腦程式產品 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI738447B true TWI738447B (zh) | 2021-09-01 |
TW202207086A TW202207086A (zh) | 2022-02-16 |
Family
ID=78777911
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109126106A TWI738447B (zh) | 2020-07-31 | 2020-07-31 | 二維條碼的資訊隱藏方法、電子裝置與電腦程式產品 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI738447B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140306019A1 (en) * | 2012-08-08 | 2014-10-16 | Google Inc. | Techniques for generating customized two-dimensional barcodes |
CN106157244A (zh) * | 2016-06-08 | 2016-11-23 | 南京航空航天大学 | 一种基于稀疏表示的QR Code图像超分辨重建方法 |
TW201928781A (zh) * | 2017-12-26 | 2019-07-16 | 香港商阿里巴巴集團服務有限公司 | 殘缺二維碼及其產生、修復和識別方法、裝置及系統 |
-
2020
- 2020-07-31 TW TW109126106A patent/TWI738447B/zh active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140306019A1 (en) * | 2012-08-08 | 2014-10-16 | Google Inc. | Techniques for generating customized two-dimensional barcodes |
CN106157244A (zh) * | 2016-06-08 | 2016-11-23 | 南京航空航天大学 | 一种基于稀疏表示的QR Code图像超分辨重建方法 |
TW201928781A (zh) * | 2017-12-26 | 2019-07-16 | 香港商阿里巴巴集團服務有限公司 | 殘缺二維碼及其產生、修復和識別方法、裝置及系統 |
Non-Patent Citations (2)
Title |
---|
Da-Chun Wu and Yuan-Ming Wu, "Covert Communication via the QR Code Image by a Data Hiding Technique Based on Module Shape Adjustments," IEEE Open Journal of the Computer Society, vol. 1, pp.12-34, 02 April 2020(https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9054963) * |
Da-Chun Wu and Yuan-Ming Wu, "Covert Communication via the QR Code Image by a Data Hiding Technique Based on Module Shape Adjustments," IEEE Open Journal of the Computer Society, vol. 1, pp.12-34, 02 April 2020(https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9054963)。 |
Also Published As
Publication number | Publication date |
---|---|
TW202207086A (zh) | 2022-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3706385B2 (ja) | ドットパターンを用いた情報入出力方法 | |
JP6397977B2 (ja) | ドットパターン、ドットパターン形成媒体、ドットパターンの画像データを生成するプログラム、ドットパターン形成装置、光学装置、光学読み取り装置、情報入出力装置、ドットパターン読み取り装置 | |
TWI453680B (zh) | 可抑制雜訊及環境影響之臉部辨識方法 | |
JP4721469B2 (ja) | 基材上のセキュリティ文書の印刷及び認証 | |
WO2014077186A1 (ja) | 二次元コード、二次元コードの作成システムおよび解析プログラム | |
US20120048950A1 (en) | Two-Dimensional Code Generation Method, Two-Dimensional Code, Two-Dimensional Code Recognition Method, and Image Recognition Device | |
CN104346640A (zh) | 二维码及生成二维码的方法 | |
CN110766594A (zh) | 信息隐藏方法及装置、检测方法、装置及防伪溯源方法 | |
US20130100502A1 (en) | Apparatus and method for processing images | |
CN109740403B (zh) | 一种识读一维条码的方法和装置 | |
TWI738447B (zh) | 二維條碼的資訊隱藏方法、電子裝置與電腦程式產品 | |
CN115660933A (zh) | 一种水印信息的识别方法、装置及设备 | |
JP2017161969A (ja) | 文字認識装置、方法およびプログラム | |
CN100370481C (zh) | 一种脆弱型水印技术应用于数字图象保真的方法 | |
JP2013238943A (ja) | 二次元コード読取装置 | |
CN113158704B (zh) | 一种快速定位Dotcode码的方法及其*** | |
Cao et al. | EAG: Edge adaptive grid data hiding for binary image authentication | |
CN115033487A (zh) | 基于图像识别的自动化测试方法、装置、计算机设备及存储介质 | |
US6993077B2 (en) | Experimental design for motion estimation | |
KR100860110B1 (ko) | 도트 패턴을 이용한 정보 입출력 방법 | |
CN112380551B (zh) | 一种基于双图像的可逆数据隐藏方法与*** | |
WO2022211064A1 (ja) | 情報読取装置 | |
JP3564987B2 (ja) | 光学式文字読取装置 | |
CN101840501B (zh) | 一种条码图像的解码方法及装置 | |
KR102067321B1 (ko) | 저작권 보호 인덱스 코드, 이들의 부호화 방법 및 복호화 방법 |