[討論] 兩張二值化影像取聯集

看板MATLAB作者 (魯到入味)時間2年前 (), 2年前編輯推噓3(3010)
留言13則, 5人參與, 2年前最新討論串1/1
各位好,小弟的問題如下: 有兩張二值化影像BW1與BW2,兩張影像尺寸一致, BW1中有許多散佈的大型區塊;而BW2則是相較之下較小區塊散佈其中, 目前想要將BW1中對應BW2小區塊重疊的區塊保留,無重疊的區塊值改為0, 想請問版上各位先進是否有推薦的函式或想法供參考? 目前我有想過使用regionprops取出BW1中各區塊的二值影像 (假設有BW1有二十萬個區塊,則分別有二十萬張二值影像) 再以迴圈進行處理,但在運算效能太差,先謝過版上各位! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.169.139.62 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1558621745.A.BD7.html

05/23 22:45, 2年前 , 1F
BW1&BW2 ?
05/23 22:45, 1F
S大您好,我說的不太清楚,再補充一下,BW1與BW2是大概4000x4000的二值化陣列, BW1內1的分布大概是數千數萬個pixel組成區塊在其中; 而BW2則是數十到數百之間,兩者形狀都不規則 ※ 編輯: fxxkjoe1231 (1.169.139.62), 05/23/2019 22:54:28 ※ 編輯: fxxkjoe1231 (1.169.139.62), 05/23/2019 22:57:13 自問自答一下,概念上似乎取intersect(BW1,BW2)? 明天進公司再驗證看看 ※ 編輯: fxxkjoe1231 (1.169.139.62), 05/23/2019 23:13:03

05/24 01:09, 2年前 , 2F
如果沒理解錯你的敘述的確,直接兩張圖點乘就可以了
05/24 01:09, 2F

05/24 01:10, 2年前 , 3F
確(x) 話(o)
05/24 01:10, 3F

05/24 01:32, 2年前 , 4F
樓上兩樓都可以,1F或許比較快。這兩種都是基於像素處理。
05/24 01:32, 4F

05/24 01:33, 2年前 , 5F
如果你有其他要求如少於某數量叢集不算可能就不適合。
05/24 01:33, 5F

05/24 17:14, 2年前 , 6F
大家好,我試了一下,發現以上方法取出來的聯集是以p
05/24 17:14, 6F

05/24 17:14, 2年前 , 7F
ixel為單位,也就是說,如果該區塊內若有對應聯集的p
05/24 17:14, 7F

05/24 17:14, 2年前 , 8F
ixel,會保留下來的只有那些pixel而不是完整的區塊
05/24 17:14, 8F

05/25 22:57, 2年前 , 9F
兩個矩陣點乘後 再用一個9*9(size可變)的遮罩去處理即可
05/25 22:57, 9F

05/25 22:58, 2年前 , 10F
你要大一點就25*25 小一點就3*3 去判斷範圍內數值為1的
05/25 22:58, 10F

05/25 22:59, 2年前 , 11F
多少以上就改為1 多少以下就改為0 這樣可刪去pixel位置
05/25 22:59, 11F

05/25 23:00, 2年前 , 12F
但 原區塊會因為大遮罩而邊緣變小 所以遮罩大小要慎選
05/25 23:00, 12F

05/25 23:04, 2年前 , 13F
你可試試 medfilt2 看看
05/25 23:04, 13F
謝謝大家,後來是用bwlabel將BW1中各區塊編號,之後再個別取出並與BW2取聯集 ※ 編輯: fxxkjoe1231 (36.225.89.111), 05/26/2019 23:53:12
文章代碼(AID): #1SvgunlN (MATLAB)
文章代碼(AID): #1SvgunlN (MATLAB)