怎麼將BINARY圖中(352*240)多個白色的部分用程式分别把它們框出來呢??? |
尚未結案
|
memehy
一般會員 發表:13 回覆:1 積分:2 註冊:2004-10-31 發送簡訊給我 |
|
justdo
高階會員 發表:2 回覆:359 積分:222 註冊:2004-08-17 發送簡訊給我 |
|
geniustom
版主 發表:100 回覆:303 積分:260 註冊:2003-01-03 發送簡訊給我 |
memehy您好..您要的功能..不是這麼簡單在這裡就可以說完的..
有很多理論基礎需要去琢磨..
最簡單的作法是宣告一個352*240乘240的陣列..每一個點想像成是一個NODE..
將您的問題變成尋找連通圖中..所有彼此不連通的獨立分割..(像您的圖..總共有4塊分割)
假設您的圖中..黑色為0..白色為1..演算法如下..
1..製作一個352*240的陣列A..裡面全都是0或1.. 2..製作ㄧ個352*240的陣列B..裡面存放的是..那一點的座標是屬於第幾組的..剛開始預設全部為0 3..從(0,0)第一點開始找尋..找過的先標示為第1組(像這張..黑色部份為第1組) 4..寫兩層FOR..從左到右..從上到下..依次找尋 5..找尋時..同時對8個方向(上.下.左.右.左上.左下.右上.右下)做比較.. IF(陣列B[i,j]有周圍已經有座標被分組的)AND(該點跟目前的點A[i,j]同顏色)then 就讓那目前的座標等於相同的組別..接著找下一點(j ) else 周圍都沒同色點..B[i,j]標示為新的點..組別 1(例如最上面的圓角矩形中..B[i,j]=2) 6..找到最後..您的B陣列裡..應該全都是組別..而最大的那個數..就是組數(4) 7..令組數為N..您要算出每一組的重心(X,Y) 重心算法: 例如要求第2組的重心..重心X=(每一個第2組的X相加)/點數 重心Y=(每一個第2組的Y相加)/點數 8..求出每組的重心..就可以開始畫矩形了.. 假設第2組的重心是 (100,50)..尋找該組 X=100..Y為最小者...矩形上緣 X=100..Y為最大者...矩形下緣 Y=50...X為最小者...矩形左緣 Y=50...X為最大者...矩形右緣 9..4點都出來了..矩形您應該會畫吧.......別的方法............................................................. 分合演算法 http://www.chinaai.org/Article_Show.asp?ArticleID=224 使用分水嶺演算法 參考論文 http://dec2.cs.ccu.edu.tw/lab/pdf/88CCU00392036-1.PDF http://dec2.cs.ccu.edu.tw/lab/pdf/88CCU00392036-2.PDF 參考書籍 http://www.csie.ntust.edu.tw/~klchung/content2s.htm 真是大哉問..最近回答的問題都是這種的 希望您能夠解決問題.. > |
memehy
一般會員 發表:13 回覆:1 積分:2 註冊:2004-10-31 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |