影像邊緣距離及角度的運算 |
|
n890377
一般會員 發表:17 回覆:16 積分:21 註冊:2006-07-13 發送簡訊給我 |
我的問題:1.h[i][2]跑出來應該是一大堆date,但是結果只有一個數字..
2.角度寫法好像也有誤..我找不到問題.. 想麻煩各位大大幫我看一下以下演算法,我的程式有沒有錯...謝謝!!! 演算法: 計算重心點到每個手部輪廓點的距離跟角度,以剛才求出的手部重心為圓心,以圓去掃描整張影像,半徑由0 開始逐漸增加,當圓通過到手部輪廓點時,則記錄此點的半徑及位 置。當圓的大小超過手部範圍則停止掃描,如此一來,我們便記錄了 所有手部輪廓點的座標及每個手部輪廓點到手部重心的距離 邊緣化程式: int GX,GY; int p[10]; p[1]=p1[i-1][j-1]; p[2]=p1[i][j-1]; p[3]=p1[i 1][j-1]; p[4]=p1[i-1][j]; p[5]=p1[i][j]; p[6]=p1[i 1][j]; p[7]=p1[i-1][j 1]; p[8]=p1[i][j 1]; p[9]=p1[i 1][j 1]; GX=((p[7] p[8] p[9])-(p[1] p[2] p[3]))/4; if (GX<0) GX=(-1)*GX; { int GY; int p[10]; p[1]=p1[i-1][j-1]; p[2]=p1[i][j-1]; p[3]=p1[i 1][j-1]; p[4]=p1[i-1][j]; p[5]=p1[i][j]; p[6]=p1[i 1][j]; p[7]=p1[i-1][j 1]; p[8]=p1[i][j 1]; p[9]=p1[i 1][j 1]; GY=((p[1] p[4] p[7])-(p[3] p[6] p[9]))/4; if (GY<0) GY=(-1)*GY; return (GY); } //重心: for (j=0; j { ptr_s = (Byte *)Image1->Picture->Bitmap->ScanLine[j]; for (i=0; i { g_s = ptr_s[i*3 2]; g_s1= ptr_s[i*3 1]; g_s2= ptr_s[i*3]; if(g_s==255&&g_s1==255&&g_s2==255) { sum=sum 1; X=X j; Y=Y i; } if(sum>0) { sx=X/sum; sy=Y/sum; } } } //重心到邊緣距離跟角度 int radius,edge,h,hand; int edge_x,edge_y; short int h[360][3]={0}; //h[角度][0]=X座標 //h[角度][1]=Y座標 //h[角度][2]=邊緣到重心的距離 bool Gx[320][240]; bool Gy[320][240]; if(sx>0) { for (r=30;radius<200;r ) { ptr_s = (Byte *)Image1->Picture->Bitmap->ScanLine[r]; edge=0; for(int i = 0 ; i < 360 ; i ) { edge_x = (int)(r*cos((double)i*PI/180.0) ); //角度= (double)i*PI/180.0) edge_y = (int)(r*sin((double)i*PI/180.0) ); if( Gx[sy- edge_y][sx edge_x] Gy[sy- edge_y][sx edge_x] == 255) //Gx&&Gy為水平跟垂直方向的邊緣 { edge ; } } if(edge==0) { hand=r; break; } } for (r=5;radius<=hand 3;r ) { ptr_s = (Byte *)Image1->Picture->Bitmap->ScanLine[r]; for(int i = 0 ; i < 360 ; i ) { edge_x = (int)(r*cos((double)i*PI/180.0) ); edge_y = (int)(r*sin((double)i*PI/180.0) ); if(Gx[centerYY- edge_y][centerXX edge_x] Gy[centerYY- edge_y][centerXX edge_x]== 255) { h[i][0] = sx edge_x ; h[i][1] = sy - edge_y ; h[i][2] = (int)(sqrt((sx-edge_x)*(sx-edge_x) (sy-edge_y)*(sy-edge_y)));//邊緣到重心的距離 } }
------
. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |