Re: [運算] 自動圈起及分類處理

看板MATLAB作者 (郝渴連)時間6年前 (2018/09/01 12:29), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
---------------------------------------------- [[[ 下列程式碼並未測試,可能有錯,純供參考 ]]] ---------------------------------------------- 你用 bwperim 來圈出樹有可能會 (1). 重疊的 (2). 正常的 (3). 特小的 ┌─┐ ┌─┐┌┐ │ └┐│ │└┘ └┐ │└─┘ └─┘ 直接用 bwperim 的結果來標記當然分不出來啊 BWoutline = bwperim(bw) = [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 0 1 1 0 0 1 0 1 1 1 0 1 0 1 0 1 1 0 0 1 1 1 0 1 0 1 1 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] 先用 imfill & bwlabel 來分出各個物件 labeled = imfill(bwperim(bw)) = [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 2 2 2 0 3 3 0 0 1 1 1 1 1 0 2 2 2 0 3 3 0 0 1 1 1 1 1 0 2 2 2 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] 得到各個物件的大小 objSize = arrayfun(@x sum(sum(labeled == x)), 1:numObjects); = [16, 9, 4] ^ ^ | | 太大 太小 可以用分群,或是自己指定判斷閥值 isNormal = objSize < 10 & objSize > 8 = [0, 1, 0] 再去圈 obj = 1:numObjects; isNormal = ismember(labeled, obj(isNormal)) = [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] bwNormal = BWoutline & isNormal = [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] bwStrange = BWoutline & ~isNormal = [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 0 0 1 0 1 1 1 0 0 0 0 0 1 1 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] ※ 引述《gragus9tone (大肚子)》之銘言: : 给予一张高空拍摄的植物图 https://i.imgur.com/Egye1ga.jpg
: 需要把每棵树都圈起来但是要用颜色区分 : 比如在照片中不完整的树用的颜色和完整的树的颜色是要不一样的 https://i.imgur.com/lYbDwU0.jpg
: 我完全卡死在区分这里 : 我的会乱圈一通 没有颜色区分 : 我的code在这里 goo.gl/d67Xx9 : 各路大神请指导一下我该怎么做才能做到我说的那样 : 先谢谢你们了 : ----- : Sent from JPTT on my iPhone -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 106.104.134.118 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1535776194.A.6B2.html
文章代碼(AID): #1RYXN2Qo (MATLAB)
文章代碼(AID): #1RYXN2Qo (MATLAB)