3D影像取邊緣輪廓 |
尚未結案
|
mathangela
一般會員 發表:3 回覆:0 積分:0 註冊:2007-12-17 發送簡訊給我 |
以下程式是利用一階微分擷取輪廓
但是它主要適用在2D上 憲在我想用在3D影像上 不知道有什麼C 語言的範例 或者是各位前輩知道要如何改 謝謝 [code cpp] 請在此區域輸入程式碼 [/code] void CDicomIODlg::gradient2D(mipImageData2D& Input, mipImageData2D& Output, float amp) //對2D Image 做擷取輪廓 { static int cx[9]={0, 0, 0, 0, 1, 0, 0, 0, -1}; static int cy[9]={0, 0, 0, 0, 0, 1, 0, -1, 0}; int d[9]; int i,j,data; float xx, yy, zz; for (int ch = 0 ; ch < Input.Channel ; ch )<br /> for(i=1; i<Input.X; i )<br /> for(j=1; j< Input.Y; j ){<br /> d[0]=Input.GetPixel(i-1,j-1,ch); d[1]=Input.GetPixel(i-1,j ,ch); d[2]=Input.GetPixel(i-1,j 1,ch); d[3]=Input.GetPixel(i ,j-1,ch); d[4]=Input.GetPixel(i ,j ,ch); d[5]=Input.GetPixel(i ,j 1,ch); d[6]=Input.GetPixel(i 1,j-1,ch); d[7]=Input.GetPixel(i 1,j ,ch); d[8]=Input.GetPixel(i 1,j 1,ch); xx=(float)(cx[0]*d[0] cx[1]*d[1] cx[2]*d[2] cx[3]*d[3] cx[4]*d[4] cx[5]*d[5] cx[6]*d[6] cx[7]*d[7] cx[8]*d[8]); yy=(float)(cy[0]*d[0] cy[1]*d[1] cy[2]*d[2] cy[3]*d[3] cy[4]*d[4] cy[5]*d[5] cy[6]*d[6] cy[7]*d[7] cy[8]*d[8]); zz=(float)( amp * sqrt(xx*xx yy*yy)); data=(int)zz; if(data > 255) data = 255; Output.SetPixel((char)data,i,j,ch); } } |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |