問一個sobel edge detection的問題...... |
尚未結案
|
coolwaboy
一般會員 發表:9 回覆:3 積分:2 註冊:2004-09-26 發送簡訊給我 |
各位前輩,我按照sobel的演算法寫了以下code:
void __fastcall TForm1::Button10Click(TObject *Sender) { int gx,gy,gxy; int sobelx[10],sobely[10]; for(int i=0;i<=511;i++) { for(int j=0;j<=511;j++) { sobelx[1]=GetRValue(Image1->Canvas->Pixels[i-1][j-1]); sobelx[2]=GetRValue(Image1->Canvas->Pixels[i-1][j]); sobelx[3]=GetRValue(Image1->Canvas->Pixels[i-1][j+1]); sobelx[4]=GetRValue(Image1->Canvas->Pixels[i][j-1]); sobelx[5]=GetRValue(Image1->Canvas->Pixels[i][j]); sobelx[6]=GetRValue(Image1->Canvas->Pixels[i][j+1]); sobelx[7]=GetRValue(Image1->Canvas->Pixels[i+1][j-1]); sobelx[8]=GetRValue(Image1->Canvas->Pixels[i+1][j]); sobelx[9]=GetRValue(Image1->Canvas->Pixels[i+1][j+1]); gx=(sobelx[7]+2*sobelx[8]+sobelx[9])-(sobelx[1]+2*sobelx[2]+sobelx[3]); if(gx>255) gx=255; if(gx<0) gx=0; Image1->Canvas->Pixels[i][j]=TColor(RGB(gx,gx,gx)); } } }結果得到第一張圖的結果,我知道結果可能怪怪的,但我始終找不出錯誤在那? 奇怪的是,我若把程式碼最後一行改成(i,j對調) Image1->Canvas->Pixels[j][i]=TColor(RGB(gx,gx,gx));會得到第二張圖的結果,結果似乎對了,但變成了對稱的效果,我真的快想破頭了,可是卻想不出所以然來,請各位前輩指點小弟一點迷津吧,謝謝! 發表人 - coolwaboy 於 2004/12/01 22:14:03 |
richtop
資深會員 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
|
coolwaboy
一般會員 發表:9 回覆:3 積分:2 註冊:2004-09-26 發送簡訊給我 |
|
richtop
資深會員 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |