日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

图元识别

發布時間:2023/12/14 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图元识别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

圖元就是一個二值圖形中的連通域,圖元識別就是尋找圖像中的連通域。
求解策略:
通過掃描像素來識別圖元。掃描方式是逐行掃描。當掃描到一個未標記的圖元像素時,給它一個圖元標記。然后把這個圖元像素作為一個新圖元的種子,通過識別和標記所有與該種子相鄰的圖元像素,來尋找新圖元剩余的像素。
由于需要用1表示未做標記的圖元像素,所以我們采用2,3,4,5……來做圖元標記。

void labelComponents() {//給圖元編號 //初始化數組offset position offset[4]; offset[0].row=0;offset[0].col=1; offset[1].row=1;offset[1].col=0; offset[2].row=0;offset[2].col=-1; offset[3].row=-1;offset[3].col=0; //初始化0像素圍墻 for(int i=0;i<=size+1;i++) {pixel[0][i]=pixel[size+1][i]=0;//底部和頂部pixel[i][0]=pixel[i][size+1]=0;//左和右 } int numOfNbrs=4; //掃描所有像素,標記圖元 arrayQueue<position>q; position here,nbr; int id=1; for(int r=1;r<=size;r++)//從上到下for(int c=1;c<=size;c++)//從左到右if(pixel[r][c]==1)//發現新像元{pixel[r][c]=++id;//id增加1here.row=r;//該像元設為種子點here.col=c;while(true){for(int i=0;i<numOfNbrs;i++)//檢查該種子點的所有領域{//檢查所有相鄰位置nbr.row=here.row+offset[i].row;nbr.row=here.row+offset[i].row;if(pixel[nbr.row][nbr.col]==1){pixel[nbr.row][nbr.col]=id;q.push[nbr]//將所有可標記領域插入隊列}}if(q.empty())break;here=q.front();//尋找相應的鄰域的鄰域。直到隊列為0.q.pop();}} }

和之前的最短距離代碼很像。

總結

以上是生活随笔為你收集整理的图元识别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。