2007年12月24日 星期一

專研最新進度-助教的信~

呃,請大家幫忙記得...因為組長常常在事發當天忘記 囧
(也就是會一直到前一天都還記得,但是當天就是會忘記= =")

Dear All

以下事項請注意:

1. 分組有問題的同學,請在這學期搞定,如本學期未確定分組,
下學期開始,請自行處理各項專題研究課程問題,
意思是你們再不配合,表示專研其他事項一概不予協助。
包括提供機器、審查老師、初審及總審之安排、資訊展及文件裝訂等事宜。
系上屆時會依據是否繳交文件和專研CD來扣留畢業證書。

2. 專研機器將於97年01月09日星期三12:10辦理交接,
煩請各組派員到場與學長姐進行交接清點並確認是否可正常運作及領取滑鼠一支。

3. 請將本學期之Meeting紀錄表造冊,書雯將於01月09日一同檢查,各組是否有正常meeting及運作!!

2007年12月20日 星期四

下學期選課

一 5.6.7 有課

二 2.3.4 (英文) 8(班會)

三 5.6.7(軟體工程)

四 2.3.4(互動) 5.6 (體育)

五 5.6.7 (有課) 晚上(有選課)

2007年12月16日 星期日

小強最新課表

一 5.6.7 有課

二 2.3.4 (英文) 8(班會)

三 5.6.7(進階離散)

四 2.3.4(互動) 5.6 (體育)

五 2.3.4(有課) 5.6.7 (有課)

2007年12月11日 星期二

關於下學期 小冬的預計課表

可以盡量排開的時間如下: (有想修的課,但不一定要修)
一 上午 下午
二    下午
三 上午
五    下午

不能把課排開時間如下: (渴望上課的心情較強)
二 上午(必修)
三       下午
四 上午(視訊) 下午(體育)
五 上午

2007年12月10日 星期一

BCB的歷史

中文維基
英文維基

不能算是BCB...嚴格說起來是borland

稍微Temp一下
如果要介紹工具的話...
文件有可能會用到

2007年12月3日 星期一

96學年度第一學期專研進度

這禮拜正在研究
Chi-Square
BCB call Matlab
這2個,按照指令及說明大致上都可以
因為是照著說明做,所以自己還沒有想法
暫時先照著說明做,這2天會在看看使用心得
到時候在留言說明心得

2007年12月1日 星期六

96學年度第一學期專研進度

※這是學校方面的進度,不是專題內容的進度

目前我們還沒完成的進度如下(這是從文件上copy來的):

12/03-12/07 
發給指導老師審查老師推薦表
12/17-12/21 回收審查老師推薦表
12/24-12/28 公佈各組審老師名單
01/07-01/11 清點機器&機器交接
01/14-01/18 

所以,我們會在這學期就知道審查老師以及
拿到屬於我們這組的NoteBook

關於我們這組的NoteBook,到時候交給誰保管尚須討論,此外
我也會把我的電腦中,所有跟專研有關的東西整理好然後放進去。

第一份文件

94專研題目簡介

我已經寫好了兩種版本,目前還沒想出第三版
版本一
版本二

2007年11月30日 星期五

BCB call Matlab

關於如何使用BCB call Matlab
已經有學姊給我檔案資料
也已經整理進本blog存放File的文章中

P.S.跟專研有關的資料都有整理在blog中
  有不足的地方可告知組長存放
  請大家有空多逛逛blog

  組長十分希望在不另外通知的狀況下
  大家就已經挖到該挖的東西
  也就是請多多主動瀏覽這個blog...

2007年11月25日 星期日

Chi-Square

關於上週五非常簡短的討論(如下):
暫時先進入實作階段[根據老師之前所言]
希望大家閒暇之虞研究Chi-Square
以及,暑假以來一直在執行的Jsteg(請盡量完成)

另外
我已經更新File了...(在這blog中)

Chi-Square分別是BCB與Matlab版本
由於使用的方式是BCB call Matlab
組長也尚在研究中,有問題請提出來一起研究...

※目前發現的問題
1.include "engine.h"不在rar資料夾中 導致第一步的compile無法通過
2.直接執行.exe檔時,他call matlab似乎有點小失敗
 應該是BCB設定上的問題,但我還不知道該如何解決(請別問我= =)

2007年11月9日 星期五

關於Paper

Detecting Steganographic Content on the Internet
老師已經把一些問題的解答在blog上做解釋

前往→

沒記錯的話,關於老師今天說的
1.Jsteg的程式方向
 a.計算容器大小,並且嘗試藏入不同大小的資料
 b.隨機藏入(也就是OutGuess的概念)
2.與卡方攻擊有關的部份
 a.嘗試用Matlab中的plot功能畫出卡方偵測到的數據
 b.Before a, 請研究如何使用卡方的程式( 能夠連同如何在BCB中引入Matlab為佳 )

※組長想說的話:
有機會來做個小組討論吧....
如果可以,希望在小組討論時間討論實做1,2實做時會遇到的問題
特別是2-a,2-b,如果研究不出該如何使用要提早拿出來討論O_O/

2007年11月1日 星期四

Discussion 01

※時間:2007/10/31, 17:00-18:10
※地點:S202教室
※主席:小冬
※紀錄:佳玉
※討論者:小冬,小強,世昭,佳玉
※討論主題:
  ① 2nd paper
    - "Detecting Steganographic Content on the Internet"
  ② 小組與個人注意事項
  ③ 小組未來努力方向


※詳細內容:
  2nd paper
   - "Detecting Steganographic Content on the Internet"   

  ■ 各自對這篇paper的閱讀方式:
   請參見意見
  ■ 提出各自的問題:
   小冬, 小強, 世昭(還在混...), 佳玉
  ■ 引起共鳴的問題:
   ① RC4
   ② JPHide與JPHide是否使用PRNG決定藏在LSB或SLSB
   ③ bzip2

  ■ 個人問題與想法的說明:
   ① 小強提問:
      JSteg與JSteg-Shell是否就是差在後者支援encryption、
      compression。另外還有提到JSteg-Shell是JSteg的使用
      者介面,想對這兩者的關係做確認。
     小冬回答:
      就像是之前我們試用過的S-Tool,裡面有包含一些隱藏等
      等的演算法。JSteg-Shell也像是這樣一個軟體,一個包含
      JSteg隱藏法的軟體。

   ② 小冬提出False Negative是有藏說沒藏還是沒藏說有藏或其
     他。


  小組與個人注意事項                  

  ■ 以後統一公布有事情去打擾老師時的集合時間與地點。沒有其他
   要事者一同前往。
  ■ 記得在部落格發文以了解各自近況與通知任何公共事項。


  小組未來努力方向                   

  ■ 落後或是未來進度:
   ① 希望期中考前能確實解決以下三篇論文。
    1.Hide and Seek An Introduction to Steganography
    2.Detecting Steganographic Content on the Internet
    3.F5 - A Steganographic Algorithm - High Capacity
     Despite Better Steganalysis
   ② 希望期中考前後能做一次完整報告。

  ■ 未來分工:
   ① 是不是大家能夠在不拖延進度的期限內至少共同合力完成應該
     寫的程式。
   ② 未來可能會分為文書組與程式組。部分學長姐是針對各自負責
     的部分也同時各自負責該部分的文書整理,這一點僅提出供
     參考。
     本次詢問了加入文書組的意願,仍需要一些時間決定。
 

2007年10月31日 星期三

Detecting Steganographic Content on the Internet

1.在 5.1 JSteg and Jsteg-Shell
我想問的是在論文中它說JSteg所選擇用來隱藏的Bit不是隨機的,而是藏在圖片的一開始,是不是就藏資料的時候都是從圖片的一開始開始藏直到所要藏的資料藏完?
有點搞不清楚JSteg 和 Jsteg-Shell 因為它在論文中說它是有關JSteg 在Windows的使用者介面,蛋它具有加密 還有壓縮,那是不是 JSteg and Jsteg-Shell 是兩個不同的方法?

在 5.2 JPHide
A pseudo random number generator determines if coefficients are skipped. 這句話說隨機的數字產生器決定被忽略的係數????這句話是啥意思啊未啥係數要被忽略???

Detecting Steganographic Content on the Internet

※不一定是問題,但希望提出的討論如下:

////////一開始是跟OutGuess無關的問題..b//////
51. JSteg and Jsteg-Shell
 a.JSteg在藏東西時沒有使用亂數選擇embed的位置(has no random bit selection?)
 b.其中提到了"The Hunting of the Snark"has been bzip2似乎不會被X-test偵測到而JSteg會?
 c.JSteg-Shell is a Windows user interface to JSteg意思是有不同於Jsteg的介面來發展?之後又提到了RC4(stream cipher),我的見解是Jsteg-Shell是套裝軟體,而RC4則是讓使用者設定的Key,傳訊者與收訊者擁有Key之類的。

5.2 JPHide
JPHide的隱藏方式似乎跟Jsteg很像,但是有一段話"JPHide can skip DCT coefficients , the probability is not as high as with Jsteg",雖然說這次讀Paper的重點似乎該放在OutGuess上,但這邊提到關於DCT係數有關的其他東西,就忍不住想拿出來討論。

5.3 OutGuess
當初是為了OutGuess才閱讀這篇Paper,然而Paper中提到Outguess的部份似乎並不多,而這邊提到了一句話"A user-supplied pass phrase initializes a stream cipher and a pseudo-random number generator(PRNG) ,both base on RC4",再度提到了RC4

再Figure7面有一段話,根據我的解讀是「因為OutGuess採用PRNG因此難以探測到特殊訊號」
意指,因為OutGuess的藏法會把訊息有點平均的隱藏在不一會出現的地方,所以不會有哪邊特別容易被探測到?

此外,關於「False Negatives」以前似乎有聽說過,但是後來又忘記了....這點希望能討論一下...

※其他的部份暫時沒什麼大問題,但也或許需要多看幾次才知道....問題在哪裡

2007年10月30日 星期二

卡方攻擊法

目前已經有別人用Matlab撰寫的「卡方」
也已經分享到webhd上了
不知道通關密碼的請向組長詢問

2007年10月29日 星期一

Working - Jiayu 05

時間:2007/10/24-10/29
進度:2nd paper
   Detecting Steganographic Content on the Internet

問題:
   1.
    ♦ 5.2 JPHide (JPHide程序確認)
     想知道以下我理解的JPHide隱藏程序的每一點是否正確:
     ① 將幾個DCT係數組成一個class,如此整張圖會有很多
       class。
     ② 一個固定的table定義各個class間的順序。
     ③ 依table裡定義的順序,較前面class先藏資料。
     p.s.0 數量多的會先使用(?)
     ④ 一個pseudo-random number generator決定該係數是
       否被跳過(是說各class裡的所有DCT係數並不是每一個
       都藏,還需要經過pseudo-random number generator
       挑選。)
     p.s.1 "跳過的機率取決於隱藏資訊的大小與已隱藏的bit
       數。"不知道為什麼?
     p.s.2 "also switch to a mode where the second-least
       significant bits are modified."想知道這句話是在說什
       麼樣的情境。

     Ans

   2.
    ♦ 6.1.2 JPHide Detection (DCT係數-1,0,1的處理)
     由於前面的JPHide隱藏程序沒有完全清楚,所以不知道
     JPHide對DCT係數0ˋ1ˋ-1的特殊處理是什麼,可能導致對
     這一節的不懂。

   3.
    第一篇paper與本篇文章中都有提到"false negative"ˋ"false
    positive"ˋ"true positive",不知道是什麼意義。(請參閱本篇
    6.2最後一大段)


備註:①以上是還沒查資料前提出的問題,太無理請無視。
   ②後面網路上偵測的部分尚未看清它做了什麼,暫無法提出問
    題。

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化發生記
憶不足的問題,正在排除,這幾天內正在執行。

2007年7月27日 星期五

Meeting - Jiayu 01

次序:05
時間:2007.07.26
地點:教師休息室

內容:
   ①程式介紹
    
    (選用自然圖片較佳)

   ②解答問題
    ⒜做DCT時,不足以形成一個8*8 Block的部分
     其DCT係數做以下安排複製的error較小。
     ... 在DCT之前不足8x8 Block的部分就要補足,而
      (RGB或YCbCr)補足的方法如下

     
    ⒝MCU在?步驟後做。(請原諒我只記得不在量化前)
    ⒞Quantization Table Setting如何調整。
     (請參閱老師的程式)
    ⒟SequentialˋPseudo random(JStegˋOutGuess0.1)
     是依量化後的DCT係數做不同方式的選取,
     與entropy coding無關。

   ③執行各自的程式

心得:
   這次Meeting
   在老師介紹程式的過程中
   第一個重大發現是......
   量化舉陣並非只有一個
   維基上的是Y的量化矩陣
   此外還有一個CbˋCr共用的量化矩陣
   我想我之前聽課時可能魂都飛了吧
   加上又先跳過了學姐程式量化的部分
   以致於如此基礎的常識昨天才知道
   該 反 省 Orz

   第二個重大發現是
   經由小冬同學的動作
   才知道BCB設計程式時
   滑鼠點到哪一行
   下方狀態列就可以看寫了多少行程式
   截至昨天為止
   我都很認真地等待Compiling的顯示
   而且不是每次都能看到
   不是每次都跑得很慢讓我看到...囧

   程式的介面我大多以Photoshop為目標
   看了老師的多功能程式後也深深憂慮到
   不用PageControl的下場是
   未來可能必須開幾十個甚至上百個Form
   所以這幾天想先縮減程式碼ˋ優化命名
   之後再繼續前進
    
   其餘老師程式先介紹過的部分
   就必須待日後實做過
   以更加深印象並發現問題

Meeting 5(07/26)

第五次Meeting
※時間:2007.07.26
※地點:教師休息室

這次Meeting
老師很仔細的跟我們介紹他之前寫的一支程式

裡面有
分析RGB,YCbCr,DCT,QDCT,重建YCbCr,重建RGB
將圖片壓縮為JPEG並調整壓縮比,JSteg....等功能

我跟佳玉稍微Show了一下這幾個禮拜來寫出來的程式
老師說,當做出DCT跟QDCT後,可以嘗試寫寫JSteg等功能

此外,我們向老師預借Information Hiding Class曾出現過的課本

※以下稍作整理提要
1.尚未完成DCT,QDCT的人繼續努力
2.已經寫出DCT與QDCT的人,嘗試寫JSteg (演算法)
 (更進階是使用卡方分析自己寫的程式數據)
3.向老師借課本來研讀Information Hiding歷史
4.研究老師發給我們的程式

2007年7月26日 星期四

Working - 小冬 02

時間:070725(此版本完成)
目標:將YCbCr DCT並Quantization

介面
Code1(Image Open)
Code2(Draw YCbCr)
Code3(DCT&Quanti)

執行

目前功能:
1.Open Picture
2.Draw R,G,B
3.Draw Y,Cb,Cr
4.DCT&Quzntization並未分開

未來調整或新增的功能:
1.改變長條圖的畫法
2.提供Histogram的X,Y軸值
3.試著顯示每個區塊的Y,Cb,Cr值
4.希望以自己的方式引進寫出與佳玉的程式雷同的功能
5.介面

簡易解說本程式概念:
1.雖然說Paper只畫-25~25
但是我的Draw YCbCr會隨著該圖片的DCT值更動長條圖範圍(會超過上面的範圍)

2.在Open Picture的同時
取出R,G,B(可以Draw統計圖)並且算出Y,Cb,Cr值...

3.DCT & Quantizationa
計算Y,Cb,Cr的DCT值,並且量化....雖然使用不同陣列儲存,但工作一同

4.DCT function(此方面參考學姊程式,小細節修改)
※Bug-學姊的程式...Height與Width的處理放反了
※此部分的intIm1QDCTY,Cb,Cr也有點小問題
後來我並未引用,改用別的方式把量化後的值換成整數

心得:
雖然很想要靠自己的能力寫出DCT最核心的部分
但是因為與Math.h不熟的緣故,最後採用學姊的程式來修改

在其他的部分,試著用自己的方式寫了
覺得可以新增的功能很多,也想做更多的嘗試
(不過還沒思索到Stego的部分....orz)

我試著玩過佳玉的程式,也麻煩她真人解說了一些
感覺她的程式很多功能....玩過後希望自己也能做到某些功能
除此之外,希望能挑戰她的功能增強版

總之,第一版本就暫時定案(算是最簡單版)
準備開始挑戰多功能!!

2007年7月25日 星期三

Working - Jiayu 03

時間:xx:00~xx:00(2007/07/23-07/24)
地點:Home
進度:偽Frequency Histogram。

作業:
   ① 顯示介面。


   ② Frequency Histogram of Original Image。
     code
     ... 已修正(2007.08.09/15:02) → code
   ③ Frequency Histogram of Modified Image。
     code
     ... 已修正(2007.08.09/15:02) → code
   ④ 調整Histogram比例。
     nUnit[0]-=20; 或 nUnit[0]+=20;

執行:run
   ... 已修正(2007.08.09/15:02) → run

心得:
   這次有大半時間是在拉框
   正所謂線是由無限多個點組成 Orz
   每次手算的預計情形都與實際有差距
   大部分長條的位置ˋ
   左右兩邊長條的位置ˋ
   格線的位置要至於長條的中間ˋ
   留邊......等等
   最後決定憑感覺了
   這個時候就是差不多就好 Orz

   此Histogram的比例縮放方式不同於以往
   由於之前繪製的Histogram是沒有單位限制
   所以即使是數量稀少
   還是會畫出來
   但本次的Histogram由於是單位制
   至少需達一定數量才能顯示
   所以縮放的方式不再是以往的修改長條的長度比例
   而是修改數量單位
   以上是畫完兩種方式之後的頓悟b
      
   介面由於時間緊迫暫時這樣
   這幾天希望能修改至理想的狀態
   目前只取-25到25這之間的DCT係數做個別數量計數
   這幾天也希望能改善至可調整式   

備註:①目前已知的Bug有:
    ⒜每更新一次DCT係數即產生一個新Form
     (Working - Jiayu 02有記載)
    ⒝目前取消顯示視窗未能確實取消顯示
     盡快尋找到關閉其他Form的正確語法後開放功能
    ⒞目前程式不提供超過一次的開圖
    ⒟DCT係數視窗最小化時
     不該作用的OnMouseDown事件仍繼續作用

   ②本隻程式本次更新項目如下:
    ⒜程式中,所有需判斷當下可否執行的部份均做好判斷
     並做適當限制

   ③④承Working - Jiayu 02
   ⑤本程式以隨機加一代替藏匿訊息。
   ⑥以上全部......寫錯程式 Orz

2007年7月21日 星期六

Working - Jiayu 02

時間:xx:00~xx:00(2007/07/20-07/21)
地點:Home
進度:設計顯示YCbCr整數化DCT係數的介面。

作業:
   ① 顯示介面。


   ② 設計。
     code

執行:run
   ... 已更新(2007.08.09/15:02)

心得:
   DCT係數顯示介面
   寫Histogram之前如果不先完成它的話
   我會一直掛心而很難跳過它繼續前進||b
   而且DCT係數也已確定沒算錯
   (參照學姐的方法)
   於是我就先把時間砸在設計上面

   之前在檢查我算的數與參考程式是否相同時
   由於每次都要重拉一次表格的ScrollBar來檢視我要的值
   就我懶惰的本性來說有點辛苦
   於是我想了個應該會較為方便的介面
   依照滑鼠點擊到的點
   顯示該點在做DCT時所屬Block裡的所有DCT係數值

   在這個方法中遇到的第一個難題是
   實際顯示的ChildForm大小ˋ位置不如我調整的
   屬性中我暫時沒有注意到相關設置
   網路上找了一陣子
   也都沒有提到類似問題
   於是使用暴力解決
   即程式碼中提到的初始ChildForm的大小ˋ位置

   第二個難題是
   OnMouseDown()下使用其它Form的StringGrid時
   顯示錯誤訊息...
   "Access Violation at address 004032EB in Module"
   我測試了另一個物件Image1也出現相同問題
   再改測試放在同一個Form時問題未出現
   上網查過這個訊息的意義
   解釋1:試圖訪問一塊已經釋放的內存
   腦中想到的是那個Form早就生出來了
   (OnMouseDown下有先判斷是否已生出)
   怎麼會是已釋放呢?
   (如果內存是我想像的這樣的話)
   該解決方法是打開CPU依位址找出程式設breakpoint
   我在依位址找出之後
   三四個區域我也沒有breakpoint該設哪一區的概念
   於是放棄||b
   之後便開始亂試
   目前成功的解決方法是
   在OnMouseDown下再新增一次顯示DCT係數的Form
   雖然沒有錯誤訊息
   但Form會一直增加(汗
   所以有時間會努力試其他方法修正

   未來幾天想要顯示Double型態的值
   以及讓使用者決定要顯示的大小
   以及新增顯示全部的功能
   ... 已更新(2007.07.22/17:55)
   不過終於可以心無旁騖地進入正題Histogram
   真的要開始寫了Orz

備註:①目前已知的Bug有:
    ⒜每更新一次DCT係數即產生一個新Form(上文有記載)
    ⒝目前取消顯示視窗未能確實取消顯示
     會盡快尋找到關閉其他Form的正確語法
    ⒞目前程式不提供超過一次的開圖
    ⒟DCT係數視窗最小化時
     不該作用的OnMouseDown事件仍繼續作用
    ... 已修正(2007.08.09/15:02)

   ②本隻程式本次更新項目如下:
    ⒜程式中,XY座標ˋRGB值ˋYCbCr值由原本的
     OnMouseDown顯示修改為OnMouseMove顯示
    ⒝程式中,所有需判斷當下可否執行的部份均做好判斷
     但暫無警告訊息提示使用者
    ... 已修正(2007.07.22/17:55)

   ③顯示視窗的選項是以沒有上述的Bug為前提
    所以目前如果點顯示視窗
    還是會在有視窗的情況下再顯示一個
    ... 已修正(2007.08.09/15:02)

   ④目前不足以形成一個8*8 Block的部分
    其DCT係數目前本隻程式先忽略
    待確定後再修改
    ... 已更新(2007.08.03/14:43)

2007年7月19日 星期四

Meeting 4(07/19)

第四次Meeting @070719
其實我不太清楚今天到底算不算一次Meeting
不過老師說可以寫一下紀錄,所以就寫了。

http://arduino.tw/
↑這是我們今天聽課的重點

使用一塊版子接著麵包版...
把程式灌進去後可以做一些簡單的互動

成果
程式碼1(紅綠燈)
程式碼2(八個燈,由講師提供)

本來最終目標是接線跟程式都要自己來
但因為時間不夠的關係
把線接好後使用講師提供的程式碼就可以用了

本來沒打算寫到紅綠燈的
因為黃老師說要創意寫多燈
所以我就做了綠燈5秒,黃燈1秒,紅燈2秒的小東西

2007年7月17日 星期二

Meeting 3(07/17)

第三次Meeting @070717
※延續上週的課題

JPEG規格書

根據上週發下來的作業,我們在這次Meeting時提出問題。
1.DCT coefficients的Histogram(所有問題的源頭)
 上面的是藏資料前
 下面的是使用J-Stego藏資料後
2.卡方攻擊法的 公式
 0 < p < 1 越接近1表示越有可能藏資料,0則相反

※此次Meeting形式上全員到起

2007年7月16日 星期一

Working - 小冬 01

因為腦中只記得老師要我們繪製長條圖
所以當我要練習繪製長條圖時
已經忘記老師要我繪製怎樣的長條圖了...Orz

由於學姊的程式,已經將圖片的R,G,B,Y,Cb,Cr取出存入陣列中
所以我擷取了一小部分的程式,來製作了以下方向略嫌錯誤的程式。

《以YCbCr練習繪製長條圖》
程式碼
程式的介面

Paper的部分
我粗略的把介紹閱讀一遍並嘗試用自己理解的部分來翻譯
目前還在Hide and Seek小標題的部分。

Working - Jiayu 01

時間:xx:00~xx:00(2007/07/14-07/16)
地點:Home
進度:① RGB轉YCbCr。
   ② YCbCr算DCT係數。

作業:
   ① 設計介面。
    

   ② RGB轉YCbCr。
     code
   ③ YCbCr算DCT係數。
     code

執行:run
   ... 已更新(2007.08.03/14:43)

參考:① 可欣學姐的程式。

心得:
   看別人的程式真的有很大的收穫
   之前課堂上的水平翻轉
   這次學姊的程式
   都讓我學到了一些好方法
   
   陣列的宣告
   過去我只會以int A[100];這樣的形式宣告
   當陣列大小無法預知時
   往往只能設個超大陣列
   資訊隱藏課程寫過的程式
   甚至還很辛苦地建了鏈結串列
   這次學到了又簡單又合適的方法(請參見code)

   在第二部分實作時
   忽然發現學姐程式裡的行列順序與我常用的不同
   ScanLine是先找出列(Y)
   我預設的陣列索引也是先找出列(Y)再找出行(X)
   即int A[1][2][3];表示第一列第二行的第三個值
   即(X,Y) = (2,1)
   我一貫的處理方式是一次一列
   然而paper裡的處理方式是一次一行
   所以兩層for迴圈的寬高順序兩種方式會不一
   也因此發現了學姐程式的一個手誤
   (bug②:開寬高不一的圖會有問題)
   花了一段時間在做兩個不同方式的轉換
   甚至於當滑鼠點擊(X,Y)=(1,2)這個點時
   我該顯示的陣列值應該是A[2][1][n]的
   而不是A[1][2][n]的

   算出來的DCT係數
   參照學姐的程式
   YˋCbˋCr會各有一個
   原本以為每個點只有一個DCT係數
   網路上的資料也都沒有提到數量的問題
   所以這個問題就寫信向老師求證
   ... 確實各有DCT係數

   paper讀到第三張
   研判目前寫的程式應該是屬於JSteg
   但距離藏資料於DCT係數的LSB
   總覺得光以上兩個步驟還差一點
   因為我算出來的DCT係數都是很小的值
   所以這個問題也寫信向老師請教了
   而Histogram在解決完這個問題時
   應該能順利孵出


備註:①目前已知的Bug有:
    不能在還沒開檔成功前按取消
    因開檔成功後所做的ScanLine動作不會先判斷是否開檔成功
    請容許我找一找有什麼判斷方法
    ... 已修正(2007.07.20/20:06)

   ②目前程式因不確定正確與否
    所以DCT係數是隨便用一個Label表示
    確定後未來會以美觀合宜的方式顯示

   ③在這次作業之前應該讀的Paper
    07/12之前我讀到了第二頁DCT之前
    但因當時此部落格尚未創立
    所以未記錄

2007年7月15日 星期日

Meeting 2(07/12)

第二次Meeting
時間:09:00~16:00 (07/12)
地點:S302
※此後每一次Meeting地點跟時間同上
 若有不同才額外註記。

由於老師交代的程式作業,
一時之間還抓不到主意(不知道該怎麼寫才好)
所以這次Meeting僅對於Paper有問題的地方提出討論。
老師很熱心的指導我們銘傳大學圖書館,線上電子資料庫的使用方式
還有可以使用Google來查詢一篇Paper一共被其他論文引用了幾次。
以及該如何在文章中解說我們引用了哪篇Paper

(雖然目前還是有點小混亂...orz)
我相信這些東西,對於以後我們要整理資料,以及
如果有心想考研究所,都很有幫助。

下午,老師好像在忙研究所學長的畢業口試(聽說的)
我好像被鬼打到寫了一支奇怪的程式(還自以為那就是作業)....囧\

程式的內容是把學姊寫的程式中....
YCbCr那部份抓出來然後統計YCbCr的數量後繪製長條圖...
但是後來重看Paper才驚覺自己可能寫的不是作業....lol
(只好當作我在練習怎麼畫長條圖了....OTZ)

※此次Meeting佳玉因故缺席,紀錄上可以不必簽到
※等我Meeting紀錄整理ok,會在日後放到網路上。

Meeting 1(07/10)

第一次Meeting
時間:09:00~16:00
地點:S302

一早還沒睡醒
黃老師到的時候就先說了一些Vector Quantization(?)的概念。
(那似乎並不是我們專研會用到的,不過還是跟隔壁組的一起聽了)
傳送資料會傳送壓縮後的資料以及他的CodeBook,壓縮比是4還是某個公式就有點忘記。

接著是李老師找了一篇Paper給我們閱讀
[那篇Paper的Download位址:http://niels.xtdnet.nl/papers/practical.pdf]

還有跟我們解說了卡方攻擊法(Chi-Square Attack)(該篇Paper有提到)
並且交代了第一次的作業:閱讀Paper以及寫程式。

稍稍紀錄一下卡方攻擊法。
在我的印象中,卡方攻擊法是以(0,1)(2,3)(4,5).....(14,15)一組一個單位
取出他們的DCT係數(?<-總之有一個值)
找出每一組的平均值,然後畫出一個曲線。
正常的曲線,會是中央一做山,
有問題的曲線,會是兩座山(中央下陷)
由於,資料量藏越多東西會越接近那個曲線,
意即,每組的單數跟偶數的資料量越接近,就表示他們越有可能藏東西。
[以上就是我印象中的卡方攻擊法]

但是我有一點忘記X軸座標跟Y軸座標所代表的東西是什麼了

※此次Meeting全員到齊。

Files

專門放老師給我們的資料

JPEG 相關網站: [From老師的blog]
1. Joint Photographic Experts Group
2. 規格書 ITU 11505 T.81
3. Wikipedia: JPEG
4. 維基百科正體中文: JPEG

Papers:
1.Hide and Seek

程式區:
1.可欣學姊的程式
2.老師的JPEG程式
3.Chi-Square(BCB)
4.Chi-Square(Matlab)

文件:
1. 94專研題目簡介 版本一 版本二

其他:
1.如何使用BCB call Matlab

Test

這是一個專研用的BLOG~