2011年11月24日 星期四

Hmokwork 2








寫程式的途中,一直出現[Linker Error] Unresolved external '__fastcall Extctrls::TImage::TImage(Classes::TComponent *)' referenced from F:\PROGRAM FILES (X86)\BORLAND\CBUILDER6\PROJECTS\UNIT1.OBJ的bug,檢查了很久都不知道哪裡錯誤,後來將這個錯誤拿去搜尋,竟然發現第一個連結就是李遠坤老師的網誌且有解決的方法,把勾勾拿掉就沒事了,這時候才想到之前用bcb時徐熊健老師就有提醒過了,電腦重灌後就忘記拿掉勾,真是糟糕首先:在平滑化裡我先用Bitmap::ScanLine這個Property找到影像每一行的記憶體位置的起點,再用一個迴圈將九宮格相加除於9,在這裡要注意SCANLINE INDEX OUT OF RANGE 的問題,上網查是由於程式並沒有記憶體配置所造成的錯誤,而解決方法就是在一開始時就給他一個背景,然後在使用ScanLine的時候也會有邊界問題,i值範圍是不可以超過 Bmp 的高度,程式跑出來的內容如下:

在銳利化裡,主要就是要讓照片輪廓分明,主要透過邊緣測試來撰寫,同樣九宮格我將掃進來的像素值*-1 -1 -1
-1 9 -1

-1 -1 -1然後相加,<0即為0,>0即為255 落差大的值便是他清晰的部分,跑出來的內容如下:


接下來是清除灑胡椒即中值濾波器,要清除胡椒前要先灑下胡椒,而灑胡椒就是使用亂數去跑,我的設定和老師的範例程式一樣,當我更改亂數的值從100 50 25分別去跑,亂數值的範圍越大灑的胡椒便較少,因為只有<5和<10會破壞原圖,當改成25去跑,整個圖都是雜訊,如圖下: 100:



50:



25:
清除的部分,就是當胡椒鹽灑的越少,中值濾波器的平均值較不容易受影響,所以去除雜訊後圖會比較接近原圖,相反則之,如圖下:

100:



50:



25:


只能說這次的作業要探討的部分很多,我花了很多的時間在這哩,不過很多邏輯部分已經很清楚了,唯一比較氣的是,不曉得是當初的BCB沒灌好,還是電腦重灌後不穩定,常常跑到整個BCB壞掉,連開都不能開,還常常出現一堆莫名其妙的BUG,害我每跑一次程式就先把原本的程式先儲存到別的地方,免得前功盡棄,交完這份作業總算讓我鬆一口氣了。

沒有留言:

張貼留言