顯示廣告
隱藏 ✕
看板 Knuckles
作者 Knuckles(阿德)
標題 Re: DIP作業三
時間 2007年11月26日 Mon. PM 10:49:43


上一篇PO的程式有問題,不知道有沒有人發現
跑出來的圖有會很多地方產生莫名的白點
所以我用MATLAB跑一次看看
f = imread('lena_gray.bmp');
f1 = double(f);
h = [0 -1 0; -1 4 -1; 0 -1 0];
g1 = imfilter(f1,h);
g2 = f1+g1;
imshow(uint8(g2));
發現結果不一樣

找半天發現原來一個型態為BYTE的變數
存進超過255的數字
在MATLAB是就存為最大值255
而在VC是變成那個數除以255的餘數...

所以要修改一下:
原本宣告為BYTE的g,改成宣告為int
g的值算出來後,再加上
	
if(g>255) g = 255;
	
else if(g<0) g = 0;
然後存進圖檔之前再轉為BYTE
	
img2.SetGrayPixel(x,y,(BYTE)g);

這樣就與MATLAB跑出來的一樣了
--
※ 來源: 台大電信 DISP 實驗室 (http://disp.twbbs.org)
※ 作者: Knuckles  來自: 140.112.175.130  時間: 2007-11-26 22:49:43
※ 編輯: Knuckles  來自: 140.112.175.130  時間: 2007-11-26 22:49:59
※ 編輯: Knuckles  來自: 140.112.175.130  時間: 2009-05-31 15:18:24
※ 編輯: Knuckles  時間: 2010-10-23 04:40:48  來自: 111-248-0-184.dynamic.hinet.net
※ 同主題文章:
  11-21 01:46 Knuckles □ DIP作業三
● 11-26 22:49 Knuckles Re DIP作業三
※ 看板: KnucklesNote 文章推薦值: 0 目前人氣: 0 累積人氣: 402 
e)編輯 d)刪除 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇