看板 MATLAB 關於我們 聯絡資訊
各位好,小弟的問題如下: 有兩張二值化影像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
sunev: BW1&BW2 ? 05/23 22:45
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
sin55688: 如果沒理解錯你的敘述的確,直接兩張圖點乘就可以了 05/24 01:09
sin55688: 確(x) 話(o) 05/24 01:10
sppmg: 樓上兩樓都可以,1F或許比較快。這兩種都是基於像素處理。 05/24 01:32
sppmg: 如果你有其他要求如少於某數量叢集不算可能就不適合。 05/24 01:33
fxxkjoe1231: 大家好,我試了一下,發現以上方法取出來的聯集是以p 05/24 17:14
fxxkjoe1231: ixel為單位,也就是說,如果該區塊內若有對應聯集的p 05/24 17:14
fxxkjoe1231: ixel,會保留下來的只有那些pixel而不是完整的區塊 05/24 17:14
kevio: 兩個矩陣點乘後 再用一個9*9(size可變)的遮罩去處理即可 05/25 22:57
kevio: 你要大一點就25*25 小一點就3*3 去判斷範圍內數值為1的 05/25 22:58
kevio: 多少以上就改為1 多少以下就改為0 這樣可刪去pixel位置 05/25 22:59
kevio: 但 原區塊會因為大遮罩而邊緣變小 所以遮罩大小要慎選 05/25 23:00
kevio: 你可試試 medfilt2 看看 05/25 23:04
謝謝大家,後來是用bwlabel將BW1中各區塊編號,之後再個別取出並與BW2取聯集 ※ 編輯: fxxkjoe1231 (36.225.89.111), 05/26/2019 23:53:12