線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1841
推到 Plurk!
推到 Facebook!

Labeling(non-recursive)

缺席
gruffuddqo4
一般會員


發表:1
回覆:2
積分:5
註冊:2007-06-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-09-05 16:53:23 IP:220.130.xxx.xxx 訂閱
<textarea class="cpp" rows="10" cols="60" name="code">請在此區域輸入程式碼 </textarea> <textarea class="cpp" rows="10" cols="60" name="code"> int LV=1;//labeling value;pixelformat=pf24bit //pixel[y][x]=0=>labeling;8-connectivity if(iImageArray[0][0]==0) iImageArray[0][0]=LV;//(x,y)=(0,0) for(int j=1;jPicture->Bitmap->Height;j )//column[0] { if(iImageArray[j][0]==0) { if(iImageArray[j-1][0]!=0&&iImageArray[j-1][0]!=0xFFFFFF) iImageArray[j][0]=iImageArray[j-1][0]; else iImageArray[j][0]=LV ; } } for(int i=1;iPicture->Bitmap->Width;i )//row[0] { if(iImageArray[0][i]==0) { if(iImageArray[0][i-1]!=0&&iImageArray[0][i-1]!=0xFFFFFF) iImageArray[0][i]=iImageArray[0][i-1]; else iImageArray[0][i]=LV ; } } for(int j=1;jPicture->Bitmap->Height;j )//form (x,y)=(1,1) to(x,y)=(width-1,height-1) for(int i=1;iPicture->Bitmap->Width;i ) { if(iImageArray[j][i]==0) { if(iImageArray[j-1][i-1]==0xFFFFFF&&iImageArray[j-1][i]==0xFFFFFF&&iImageArray[j-1][i 1]==0xFFFFFF&&iImageArray[j][i-1]==0xFFFFFF) iImageArray[j][i]=LV ;//近鄰全為0xFFFFFF else if(iImageArray[j-1][i-1]!=0&&iImageArray[j-1][i-1]!=0xFFFFFF&&iImageArray[j-1][i]==0xFFFFFF&&iImageArray[j-1][i 1]==0xFFFFFF&&iImageArray[j][i-1]==0xFFFFFF) iImageArray[j][i]=iImageArray[j-1][i-1];//近鄰up-left已被標記其餘皆為0xFFFFFF else if(iImageArray[j-1][i]!=0&&iImageArray[j-1][i]!=0xFFFFFF&&iImageArray[j-1][i-1]==0xFFFFFF&&iImageArray[j-1][i 1]==0xFFFFFF&&iImageArray[j][i-1]==0xFFFFFF) iImageArray[j][i]=iImageArray[j-1][i];//近鄰up已被標記其餘皆為0xFFFFFF else if(iImageArray[j-1][i 1]!=0&&iImageArray[j-1][i 1]!=0xFFFFFF&&iImageArray[j-1][i-1]==0xFFFFFF&&iImageArray[j-1][i]==0xFFFFFF&&iImageArray[j][i-1]==0xFFFFFF) iImageArray[j][i]=iImageArray[j-1][i 1];//近鄰up-right已被標記其餘皆為0xFFFFFF else if(iImageArray[j][i-1]!=0&&iImageArray[j][i-1]!=0xFFFFFF&&iImageArray[j-1][i-1]==0xFFFFFF&&iImageArray[j-1][i]==0xFFFFFF&&iImageArray[j-1][i 1]==0xFFFFFF) iImageArray[j][i]=iImageArray[j][i-1];//近鄰left已被標記其餘皆為0xFFFFFF else{ if(iImageArray[j-1][i-1]==iImageArray[j-1][i]&&iImageArray[j-1][i-1]==iImageArray[j-1][i 1]&&iImageArray[j-1][i-1]==iImageArray[j][i-1]) iImageArray[j][i]=iImageArray[j-1][i];//四個近鄰全被標記過且標記值相同 else//有兩個以上近鄰有標記過把之前的全改為相同標記值 { int ul=iImageArray[j-1][i-1]; int up=iImageArray[j-1][i]; int ur=iImageArray[j-1][i 1]; int left=iImageArray[j][i-1]; int temp=0; if(ul!=0xFFFFFF) temp=ul; else if(up!=0xFFFFFF) temp=up; else if(ur!=0xFFFFFF) temp=ur; else temp=left; for(int y=0;y<=j;y ) for(int x=0;x
附加檔案:46de6e83084f8_test.bmp
編輯記錄
gruffuddqo4 重新編輯於 2007-09-06 09:47:20, 註解 無‧
gruffuddqo4 重新編輯於 2007-09-06 10:23:57, 註解 無‧
gruffuddqo4
一般會員


發表:1
回覆:2
積分:5
註冊:2007-06-29

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-09-07 14:34:57 IP:220.130.xxx.xxx 訂閱
<textarea class="cpp" rows="10" cols="60" name="code">for(int y=0;yPicture->Width;x )//之前X的範圍設定錯誤 { //if(ul!=0xFFFFFF&&ul!=temp ) //if(iImageArray[y][x]==ul) iImageArray[y][x]=temp; if(up!=0xFFFFFF&&up!=temp) if(iImageArray[y][x]==up) iImageArray[y][x]=temp; if(ur!=0xFFFFFF&&ur!=temp) if(iImageArray[y][x]==ur) iImageArray[y][x]=temp; if(left!=0xFFFFFF&&left!=temp) if(iImageArray[y][x]==left) iImageArray[y][x]=temp; } </textarea> 不過效率並沒有比區塊成長法好
系統時間:2024-05-04 6:25:37
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!