2007年4月22日 星期日

Week8 - Machado' s Method

Example 1:原圖>> 調色盤未排序>> 調色盤已排序

Example 1:未排序調色盤>> 已排序調色盤


Example 2:原圖>> 調色盤未排序>> 調色盤已排序


Example 3:原圖>> 調色盤未排序>> 調色盤已排序


Link / 程式



<註>
 1.依然是還沒想快速刪除節點的辦法,所以圖片不能無限重開。
 2.索引是用鏈串列儲存的,目前還未想有效率地顯示索引的方法。
 3.承2,為了証明沒有改調色盤,所以這次附上整隻程式。
 4.放了3個Example純粹是隨便試驗,非特地選哪三種圖。
 5.沒有限制嵌入訊息的數量。
 6.模擬嵌入訊息的方式依然是隨機加一。

<感想>
 圖看起來改善不少。
 不知道是我寫的程式的關係還是......
 顏色分界比較明顯的圖會有整體變相近的趨勢||b(參見Example 3)。

2007年4月20日 星期五

資訊隱藏-實作一

續之前的 BitPlane 程式之後,我試著將圖片資訊隱藏在 LSB 中
程式大至上和之前相同,我以下圖做說明 :

左上角為掩護圖,左下角為要隱藏圖,右上角為隱藏前/後的掩護圖,右下角為 BitPlane

解說 :
第一張圖為未隱藏資訊的情況,第二張圖即為隱藏後的情況


流程及實驗 :
必須要說明的是,我並沒有將"要隱藏圖"的資訊全部隱藏在掩護圖中
而是以掩護圖的 1/4 大小來隱藏"要隱藏的資訊"
存放的規則是先存最低 bit ,存滿就改存次低 bit
所以最多只能傷害原圖的 1/4
主要的目的不外乎就是為了測試 low bit 是不是真的適合藏資訊


我一樣以上次那四張圖來做一些組合
實驗如下 :

很明顯的,隱藏後的掩蓋圖以肉眼看幾乎是沒有異常
再以 BitPlane 而言,卻可看出明顯的問題

以我所選擇的隱藏技術是有順序的從上而下,從左而右
沒有經過任何修飾或壓縮
(也可以說是什麼技術也沒有…)

觀察 :
若隱藏圖有大量的黑或白似乎並不理想(掩蓋圖不理)
就之前所想的 "已為雜訊的圖,隱藏效果應該不錯" 就結果而言的確是沒錯,但影響不大
主要缺陷果然是在隱藏技術 (良好的演算法)上
「也許透過壓縮或加密」、「資訊以有順序但不相鄰的隱藏」 可以降低發覺的風險

2007年4月19日 星期四

改變index的方法

上週老師要我們寫模擬將資訊隱藏至index中的程式,本來我以為只要將index的直亂數加1或加0,原來這樣是錯誤的方法。應該是先將index向左一移位元,在向右一位元,如此可以將最後依位元清為0,若要藏1,便將index加1,若要藏0,則加0。假設index值為27,二進位為00011011,隱藏的位元為0,隱藏後的值應該為00011010=26,如此才是一個正確的隱藏方法。

PSNR

此連結詳細的介紹了何謂PSNR及其公式(Peak Signal to Noise Ratio)

PSNR

week7 用bitmap模擬gif的index change 實驗結果

本週寫的程式就是去針對ㄧ張經由gif轉成bitmap的圖檔
來做資訊隱藏的模擬
其寫出來的結果如下圖

在畫出來此圖檔的調色盤以後
針對其每個index-1~+1的random變動
再繪出變動後的圖
其結果如下

可以很明顯的發現此藏法對影像本身的影像很大
容易產生破圖
當然這是因為我所建構的調色盤並沒有經過排序所造成的誤差
所以若把調色盤的顏色經過排序過後再來隱藏
應該就可降低如此巨大的破圖引響

Week7


 Link



以上程式是在未分群與索引值隨機加一的情形下執行。
<註: 目前我所寫的程式有幾個錯誤待修正,已知的是因為鏈結串列還未想快速刪除的辦法,所以圖片應該是不能重開太多次(汗。>

Week6

這次老師讓我們分析GIF檔的Index.
但是因為直接讀取GIF檔的Index 我的程式能力還是不足.
所以老師也提供一個對於我現在程式能寫的出來方法 .
就是先將一個圖片先存成GIF檔.再將 GIF檔存成BMP檔 .
這樣這張圖的顏色就是以256色顯示.
再將此BMP圖的顏色分成 256色群.
再將此圖所有的 Index最後一個用亂數去藏東西 .
比較看看跟原圖有什麼不同.

下面圖片是我所寫的程式:



結果很明顯的第二張用亂數藏東西的圖 .比起第一張圖失真更多.
也就是所謂 GIF檔藏越多東西失真越多.