BCB 影像濾波處理 |
尚未結案
|
tylin0807
一般會員 ![]() ![]() 發表:1 回覆:3 積分:0 註冊:2006-07-07 發送簡訊給我 |
各位好:
最近在研究如何在 BCB 寫影像處理,但是為何以下的程式碼執行
-1 -1 -1
-1 9 -1
-1 -1 -1
的處理,但是畫面總是出現雜點而非所要的應有影像. 請問是哪裏出錯了呢?
謝謝您的指導.
BYTE *PIXEL1[3],
*PIXEL,
PixelVal;
int ScanX,
ScanY;
myBITMAP->PixelFormat = pf24bit;
// ------------------------------------------------------------
for(ScanY = 1; ScanY < myBITMAP->Height - 1; ScanY )
{
PIXEL1[0] = (BYTE *)myBITMAP->ScanLine[ScanY - 1];
PIXEL1[1] = (BYTE *)myBITMAP->ScanLine[ScanY];
PIXEL1[2] = (BYTE *)myBITMAP->ScanLine[ScanY 1];
// --------------------------------------------
PIXEL = (BYTE *)myBITMAP->ScanLine[ScanY];
// --------------------------------------------
for(ScanX = 1; ScanX < myBITMAP->Width - 1; ScanX )
{
PixelVal = (*PIXEL1 0)[ScanX * 3 - 3] * -1
(*PIXEL1 0)[ScanX * 3 ] * -1
(*PIXEL1 0)[ScanX * 3 3] * -1
(*PIXEL1 1)[ScanX * 3 - 3] * -1
(*PIXEL1 1)[ScanX * 3 ] * 9
(*PIXEL1 1)[ScanX * 3 3] * -1
(*PIXEL1 2)[ScanX * 3 - 3] * -1
(*PIXEL1 2)[ScanX * 3 ] * -1
(*PIXEL1 2)[ScanX * 3 3] * -1;
// --------------------------------------------
PIXEL[ScanX * 3 2] = PixelVal;
PIXEL[ScanX * 3 1] = PixelVal;
PIXEL[ScanX * 3] = PixelVal;
}
}
|
pwipwi
版主 ![]() ![]() ![]() ![]() ![]() 發表:68 回覆:629 積分:349 註冊:2004-04-08 發送簡訊給我 |
|
tylin0807
一般會員 ![]() ![]() 發表:1 回覆:3 積分:0 註冊:2006-07-07 發送簡訊給我 |
謝謝您的回答. 不過針對您的答覆,可否依您回答的順序,我另有對應的問題想請教. 1. 我也是這麼想,只是若不是相加,請問要如何處理? 2.Filter 不是operator嗎? 要如何 normalize? 3.嗯.這個我處理掉了. 另外可否有一小段範例程式讓我參考,不需要很長,只要重點即可. ===================引 用 文 章=================== 三個地方出錯了... 1.24bit的coding是RGB,PIXEL的計算不是直接相加 2.Filter要normalize 3.上Filter不可inplace作,要配置另一個memory,上完filter再copy 回去 |
pwipwi
版主 ![]() ![]() ![]() ![]() ![]() 發表:68 回覆:629 積分:349 註冊:2004-04-08 發送簡訊給我 |
|
brian741022
一般會員 ![]() ![]() 發表:7 回覆:9 積分:3 註冊:2006-07-19 發送簡訊給我 |
我建議另外宣告整數陣列,將bitmap的數值copy到陣列上,再進行濾波,原本會因為*9而overflow,這樣就不會了。你做的是銳化濾波<因為還會相減,所以最後還是會運算回0~255之間。
===================引 用 文 章=================== 1.我所提不能相加的原因是我看錯了你的code...抱歉 2.要normalize的原因在byte的值域在0~255,你的code在大多數狀況下 一乘以9,馬上就overflow了。必需要把filter的結果,normalize到0~255之間 3.另外,Byte的定義是unsigned...乘以一個-1是undefined的 |
tylin0807
一般會員 ![]() ![]() 發表:1 回覆:3 積分:0 註冊:2006-07-07 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |