2007年8月26日 星期日

介紹一本書(應該可以放吧?)


這幾天去台北的天瓏書局,剛好挖掘到這本書;這本書是2007年8月才出的。
這本書的內容剛好是我們目前正在學習的東西,所以就買起來看了。
ISBN:978-986-201-021-1 (可以到天瓏書局的網頁看看)
[目錄]
第一章 文學與藝術的世界
第二章 現代偽裝學的發展
第三章 偽裝學工具應用
第四章 視覺安全的原理與基礎
第五章 視覺安全應用
第六章 數位浮水印概論
第七章 浮水印的評估工具及影像攻擊
第八章 網路的版權保護與浮水印應用
第九章 視覺安全與浮水印系統
第十章 多媒體之數位鑑識機制
第十一章 偽裝學之數位鑑識應用
第十二章 多媒體數位證據能力
本來很想要把他放到我的ANobii裡面
不過因為書本資料太新了網站上面沒有~
因為這本書跟我們之前還有現在學的東西都有關係
也很難得可以找到討論資訊隱藏的中文書籍
實在是很想把他推薦給大家,所以就放上來了

2007年8月19日 星期日

Meeting 8

※時間:07.08.16
※地點:教師研究室&討論室

※研究方向與重點
1.星期二時,討論的公式
2.討論八月底Paper報告內容,人員與範圍

小強:Introduction
佳玉:DCT→Page.38第一個句號
小冬:Figure8→Steganographydetection on the Internet之前
   (不含Steganographydetection on the Internet)
世昭:Steganographydetection on the Internet到結束

目前沒有考慮介紹,引用了哪些文章(最後一頁的那些)
還沒像老師詢問過,報告的順序是否就依據Paper內容順序(?)
(也就是前兩位於8/28時報告,後兩位於8/30報告)

我在當日稍稍跟世昭解釋了一下那個公式的概念
以及突然忘記要怎麼解釋 八倍平均值(汗)
(不過現在好像又想起來了...←看來應該是在人前解釋會緊張)

暫時先寫到這裡,目前尚在考慮
要不要手算那個公式...然後Upload

2007年8月17日 星期五

Meeting - Jiayu 02

次序:07
時間:2007.08.14
地點:教師休息室
備註:以下是以我理解的方式做觀念解釋
   更完善的拆解方式請參見:
   老師的程式或小冬的Meeting紀錄7

內容:加快DCT程式的運行(作法:讓重複的運算只算一次)。

   ①公式
    

   ②每個8x8 Block的程式碼骨架
    for(int u=0; u<8; u++)
     for(int v=0; v<8; v++)
     {
       //----算1/4・C(u)・C(v)

       for(x=0; m<8; m++)
        for(y=0; n<8; n++)
        {
          //----算f(x,y)*cos◯cos◯
        }
     }

   ③由於之後的每個8x8 Block處理時,uˋvˋxˋy又從0再跑至8
    一次。為避免每個8x8 Blcok同樣的uˋvˋxˋy組合又再運算
    一次進而花時間,於是先將uˋvˋxˋy所有可能的組合與運算
    出的值先一次算出來儲存於陣列裡,待之後有重複時再查詢該
    陣列即可節省再運算的時間。

    ⒜公式中的f(x,y)代表每個點的Y(或Cb或Cr),先忽略。
    ⒝第一個雙層for迴圈,當知道uˋv值時即可算出公式中
     的"1/4・C(u)・C(v)"。
    ⒞第二個雙層for迴圈,再知道xˋy值時即可再算出公式中
     的
      
    ⒟算出所有的uˋvˋxˋy組合的值後,執行DCT時只需將
     f(x,y)乘上陣列裡儲存的以上已算出的值即可。


心得:
   進而思考到
   一個值需要四捨五入時就呼叫四捨五入函數(很多次)
   與將該值第一次呼叫四捨五入函數得到的值儲存...
   之後要用到的時候再查詢陣列
   就空間與時間兩方面考量
   不知道哪個方法會比較好(?)
   有待思考

2007年8月14日 星期二

Meeting 7

※時間:07.08.14
※地點:教師研討室

※老師宣布事宜
1.於8/28,8/30分兩批報告Hide & Seek(人員範圍尚未決定)
2.因應黃老師出國,九月休假

※本日討論重點
DCT Transform 引用自

Reason→為精簡程式執行DCT時的時間
將公式精簡成F(u,v)=ΣΣf(x,y)‧K(u,v,x,y)
《參考》老師的程式 CreateDCTtransform();
《做法》手動將value代入公式內,算出可以精簡的value "K(u,v,x,y)"
    學姊的講解與建議:將Call (Math.h) Function計算時間省下來

《Hint 1》將1/4C(u)C(v)→1/2C(u)‧1/2C(v)
《Hint 2》將cos[ (2i+1)uπ/16]‧cos[ (2j+1)vπ/16 ]
     轉成cos[ (2i+1)/16‧uπ ]‧cos[ (2j+1)/16‧vπ ]

《Hint 3》綜合1.2→1/2C(u)‧1/2C(v)‧cos[ (2i+1)/16‧uπ ]‧cos[ (2j+1)/16‧vπ ]

※暫時先寫到這裡

2007年8月9日 星期四

Meeting 6

※時間:96.08.09
※地點:教授休息室

問題與探討
1.補足8*8的細節討論
 a.依照上上週方式,在DCT前就補齊
 =>是JPEG規格的做法

 b.不補但是範圍有加大
 =>在系統會把沒有Assign自動補0,進而造成高頻變多
 =>較以壓縮

 c.在其他步驟補上(未知)
 =>因為在DCT前就補齊是JPEG規格故....(?)

2.承1.b.高頻與低頻訊號的討論
 =>二維空間的頻率訊號可分解承64種訊號波形
  之前曾經說過,DCT是分析高頻訊號與低頻訊號
  由於訊號的波形可以藉由N種波形組合而成....
  QDCT的陣列,就像在紀錄特定波形的強度=>64種波形

例子:
圖一 = 圖二+圖三
訊號的波形可能像圖一,圖二.....圖三....圖四(振幅大小不一,林林總總64種型態)
假設圖五就是圖片的訊號,他可能有上述64種波形組合而成
而DCT(或是QDCT)裡面的數字,就是在紀錄64種不同訊號的強度
而高頻的訊號大多為0

↑假設這是圖一
↑假設這是圖二
↑假設這是圖三
↑假設這是圖四
↑假設這是圖五




3.JSteg藏資料的問題
 分析出可以藏資料的資料後,可以直接藏進去(老師的方法)  
 亦可用我說的商編碼順序藏,只是較為麻煩(我的疑惑)

※可以接著做的:
1.做完QDCT後,可開始寫JSteg的程式(請將可藏資料的資料全藏滿
2.JSteg做完後,將資料分析成Histogram表示
3.Histogram做完後,可嘗試藏入大小不一的資料量,並分析
 =>資料量:可藏資料的80%,70%,60%.....etc

※Meeting 6進度,暫時先寫到這裡,日後進行修改(?)

Working - Jiayu 04

時間:xx:00~xx:00(2007/07/27-08/09)
地點:Home
進度:Frequency Histogram。

作業:
   ① 顯示介面。


   ② Quantization。
     code
   ③ Frequency Histogram of Original Image。
     code
   ④ Frequency Histogram of Modified Image。
     code 

執行:run

心得:
   這次第一步是先補量化
   之前Meeting老師說過圖片邊緣無法構成一個Block的點
   其DCT係數可以依方位填入別人的DCT係數(參Meeting記錄)
   而量化也是一個8x8 Block一起做
   不知道它邊緣的點又是如何處理?
   老師的JPEG Steganalysis程式是在取RGB時
   就替邊緣的點多補了一些點以構成一個Block
   讓之後的DCTˋQuantization得以順利運算
   但我又想說
   由於Quantization是一對一除以Quantization Table裡
   相對位置的值
   那麼是不是可以不補滿8x8 Block
   邊緣的點有的話就除
   沒有的點就不除
   而DCT係數就依方位填入別人的DCT係數
   以上純粹是我的異想天開
   正解是
   在DCT之前必須補滿8x8 Block

   之前糾纏我很久的Bug:Access Violation
   以及它引起的一連串問題
   這快一個月的時間都在找它們家的解決方案 = =+
   這幾天我搜尋的方向是"關閉視窗"這方面的
   試了Form3->Close();不行
   試了delete Form3;不行
   試了Form3->Free();不行
   動態建立Form3時由我最初寫的...
   Form3 = new TForm3(Application);
   改成new TForm3(this);不行
   改成new TForm3(NULL);不行
   以上是網上大多數的解決方案
   但仍持續存在Access Violation錯誤
   直到今天我讀到那一篇關於Access Violation的文
   一語驚醒夢中人
   「局部和全局指针同名,全局或局部指针一个new过,
    但另一个被访问了。」
   於是將我所有動態建立視窗的宣告刪除
   由原本的:TForm? *Form?
        Form? = new TForm?(Application);
        Form?->Show();
   更改為:Form? = new TForm?(Application);
       Form?->Show();
   Access Violation錯誤解除
   視窗順利關閉
   之前的一些Access Violation錯誤也一同解決
   從我開始使用Form的時候就依照書而這樣寫
   少說有半年之久
   盡信書不如無書啊

備註:①目前程式不提供超過一次的開圖

2007年8月5日 星期日

關於JSteg的研究

※前情提要
 針對JSteg嵌入有所疑惑的部分=>是否會牽扯到商編碼
 由於老師講解程式時商編碼跟JSteg都有提到,於是我腦中的記憶開始模糊

※以老師的程式碼為根據
// 模擬 Jsteg 嵌入資料...
RN = random(2);
if (( iRQDCTcoeY[i][j] != 1 ) && ( iRQDCTcoeY[i][j] != 0 ))
{
  LSB = iRQDCTcoeY[i][j] & 1; // & : bitwise AND operator
  if ( RN != LSB )
  {
    if ( RN == 1 )
      iRQDCTcoeY[i][j] = iRQDCTcoeY[i][j] 1;
    else
    {
      iRQDCTcoeY[i][j] = iRQDCTcoeY[i][j] >> 1;
      iRQDCTcoeY[i][j] = iRQDCTcoeY[i][j] <<1;
    }
  }


根據上述的程式碼 (與關鍵字搜索)
JSteg嵌入的動作
似乎是「QDCT矩陣內的值非0或1的值皆可執行 LSB判讀與嵌入資料的動作」

我原本以為需要先將二維陣列換成一維陣列(使用商編碼)
但是詳加閱讀程式後的結過,似乎並非我所想像

※註一
原本因為會有[短時間內無法觸碰電腦的私人理由]
請佳玉代替我向老師詢問
但在獲得情報前又思索了一次JSteg的事情
進而產生了這篇文章(因為有不同想法--這是我第二種想法)

※這篇Blog將在所有問題都釐清後視情況刪除

2007年8月1日 星期三

第五次Meeting

第五次Meeting




 心得:
    第一次在上面留言耶,目前還在研究老師的程
式要怎麼用,所以還沒推進進度,目前程式完成
到量化完畢、畫出分布圖,分布圖昨天為止還在
修正,另外.....執行另一個畫Y、Cb、Cr化發生記
憶不足的問題,正在排除,這幾天內正在執行。