作者fxxkjoe1231 (魯到入味)
看板MATLAB
標題[討論] 兩張二值化影像取聯集
時間Thu May 23 22:29:03 2019
各位好,小弟的問題如下:
有兩張二值化影像BW1與BW2,兩張影像尺寸一致,
BW1中有許多散佈的大型區塊;而BW2則是相較之下較小區塊散佈其中,
目前想要將BW1中對應BW2小區塊重疊的區塊保留,無重疊的區塊值改為0,
想請問版上各位先進是否有推薦的函式或想法供參考?
目前我有想過使用regionprops取出BW1中各區塊的二值影像
(假設有BW1有二十萬個區塊,則分別有二十萬張二值影像)
再以迴圈進行處理,但在運算效能太差,先謝過版上各位!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.169.139.62
※ 文章網址: https://webptt.com/m.aspx?n=bbs/MATLAB/M.1558621745.A.BD7.html
1F:推 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
2F:推 sin55688: 如果沒理解錯你的敘述的確,直接兩張圖點乘就可以了 05/24 01:09
3F:→ sin55688: 確(x) 話(o) 05/24 01:10
4F:推 sppmg: 樓上兩樓都可以,1F或許比較快。這兩種都是基於像素處理。 05/24 01:32
5F:→ sppmg: 如果你有其他要求如少於某數量叢集不算可能就不適合。 05/24 01:33
6F:→ fxxkjoe1231: 大家好,我試了一下,發現以上方法取出來的聯集是以p 05/24 17:14
7F:→ fxxkjoe1231: ixel為單位,也就是說,如果該區塊內若有對應聯集的p 05/24 17:14
8F:→ fxxkjoe1231: ixel,會保留下來的只有那些pixel而不是完整的區塊 05/24 17:14
9F:→ kevio: 兩個矩陣點乘後 再用一個9*9(size可變)的遮罩去處理即可 05/25 22:57
10F:→ kevio: 你要大一點就25*25 小一點就3*3 去判斷範圍內數值為1的 05/25 22:58
11F:→ kevio: 多少以上就改為1 多少以下就改為0 這樣可刪去pixel位置 05/25 22:59
12F:→ kevio: 但 原區塊會因為大遮罩而邊緣變小 所以遮罩大小要慎選 05/25 23:00
13F:→ kevio: 你可試試 medfilt2 看看 05/25 23:04
謝謝大家,後來是用bwlabel將BW1中各區塊編號,之後再個別取出並與BW2取聯集
※ 編輯: fxxkjoe1231 (36.225.89.111), 05/26/2019 23:53:12