請教影像處理問題 |
尚未結案
|
pork
一般會員 發表:15 回覆:13 積分:5 註冊:2003-10-25 發送簡訊給我 |
大家好
我寫了一段Laplacian的程式
可是執行時會出現如下現象
第一次執行和第二次執行的圖不一樣
(只是同一個按鍵按二次)
還請高手指導一下
我是新手實在看不出事那兒出問題了
謝謝
void __fastcall TForm1::Laplacian1Click(TObject *Sender) { Graphics::TBitmap *Bmp1=new Graphics::TBitmap(); Graphics::TBitmap *Bmp2=new Graphics::TBitmap(); Bmp1->Assign(Image1->Picture->Bitmap); Bmp2->Assign(Image1->Picture->Bitmap); for(int i=0;i發表人 - taishyang 於 2004/09/14 21:12:48 |
foreman
高階會員 發表:3 回覆:124 積分:190 註冊:2004-09-10 發送簡訊給我 |
pork:
在這int __fastcall TForm1::LaplacianFunction(int i ,int j)函數內,
p[3] p[4]是未定數, 看當時記憶体之值.所以
for(int i=0;iWidth;i++)
for(int j=0;jHeight;j++)
{
Pixel_value[i][j]=GetRValue(Bmp1->Canvas->Pixels[i][j]);
Bmp2->Canvas->Pixels[i][j]=LaplacianFunction(i,j)*0x010101;
}
應改成
for(int i=0;iWidth;i++)
for(int j=0;jHeight;j++)
{
Pixel_value[i][j]=GetRValue(Bmp1->Canvas->Pixels[i][j]);
}
for(int i=0;iWidth;i++)
for(int j=0;jHeight;j++)
{
Bmp2->Canvas->Pixels[i][j]=LaplacianFunction(i,j)*0x010101;
} < >< >
|
TheMoon
中階會員 發表:17 回覆:95 積分:67 註冊:2002-06-05 發送簡訊給我 |
要注意下面這段程式,
在計算時會超過陣列邊界的問題
< class="code">
int __fastcall TForm1::LaplacianFunction(int i ,int j)
{
int p[5];
int Laplacian_value;
p[0]=Pixel_value[i][j-1];
p[1]=Pixel_value[i-1][j];
p[2]=Pixel_value[i][j];
p[3]=Pixel_value[i 1][j];
p[4]=Pixel_value[i][j 1]; Laplacian_value=(4*p[2]-(p[0] p[1] p[3] p[4]));
return (Laplacian_value);
}
發表人 - TheMoon 於 2004/09/15 00:11:22
|
pork
一般會員 發表:15 回覆:13 積分:5 註冊:2003-10-25 發送簡訊給我 |
|
TheMoon
中階會員 發表:17 回覆:95 積分:67 註冊:2002-06-05 發送簡訊給我 |
引言: 感謝foreman及TheMoon二位的解答 我把程式按照foreman兄的方法修改後 已經改進了真是感謝二位的熱心協助 可否再請教TheMoon兄 什麼情況稱為超過陣列邊界 是否就是如同foreman兄說的p[3] p[4]是未定數 所以執行出來情況會不同 感謝 pork 上 pork兄您好, 程式主要的問題如foreman大大所言, 是出在 p[3] p[4], 我提到的問題是要注意以下情形: p[0]=Pixel_value[i][j-1]; //j=0時,j-1=-1 p[1]=Pixel_value[i-1][j]; //i=0時,i-1=-1 p[3]=Pixel_value[i 1][j]; //i=Bmp1->Width-1時,i 1=Bmp1->Width p[4]=Pixel_value[i][j 1]; //j=Bmp1->Height-1時,j 1=Bmp1->Height 參考看看 > |
pork
一般會員 發表:15 回覆:13 積分:5 註冊:2003-10-25 發送簡訊給我 |
感謝TheMoon兄的指導
就您所言是不是把程式改為
for(int i=1;i
|
TheMoon
中階會員 發表:17 回覆:95 積分:67 註冊:2002-06-05 發送簡訊給我 |
引言:感謝TheMoon兄的指導 就您所言是不是把程式改為 for(int i=1;i |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |