全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1275
推到 Plurk!
推到 Facebook!

3D影像取邊緣輪廓

尚未結案
mathangela
一般會員


發表:3
回覆:0
積分:0
註冊:2007-12-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-01-22 14:20:07 IP:163.25.xxx.xxx 訂閱
以下程式是利用一階微分擷取輪廓
但是它主要適用在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);
}
}
系統時間:2024-05-07 17:07:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!