2007年8月9日 星期四

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的時候就依照書而這樣寫
   少說有半年之久
   盡信書不如無書啊

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

沒有留言: