地點: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有:
... 已修正(2007.07.20/20:06)
②目前程式因不確定正確與否
所以DCT係數是隨便用一個Label表示
確定後未來會以美觀合宜的方式顯示
③在這次作業之前應該讀的Paper
07/12之前我讀到了第二頁DCT之前
但因當時此部落格尚未創立
所以未記錄
沒有留言:
張貼留言