2013-02-21 224 views
0

我需要一個快速的方式來執行圖像(矩陣)區域的閾值。 輸入是矩陣(圖像),閾值和半徑,我需要檢查給定半徑內的所有值是否都小於閾值,如果需要,我需要保存此值(像素)的座標。 我不想讓它與雙循環,因爲我需要多次執行此任務與幾個半徑。 我不關心最小值或最大值,只是像素周圍的所有值都會低於某個閾值。 任何想法將非常感激!閾值在矩陣matlab

+1

您可以使用圓形結構元素執行膨脹,然後在生成的圖像中進行平凡的閾值處理。由於該問題被標記爲「matlab」,我想你對擴大速度並不感興趣,只是期望'matlab'能給出足夠快的速度。如果您對此感興趣,那麼關於可分解性和提高形態操作效率的相關方法的工作量很大。 – mmgp 2013-02-22 00:09:39

回答

0

我不知道任何快速算法的圓形鄰域。但是,如果您有矩形鄰域,您可以在此處快速執行檢查以瞭解更多詳細信息: http://leetcode.com/2011/01/sliding-window-maximum.html

另外,當您有多個半徑值時,可以提高速度。簡單地從最小的值開始計算結果。對於將來的半徑值,如果一個點沒有通過前面的一個步驟,不要處理它,那麼存在一個半徑較小(因此在當前半徑內)的點,該點大於閾值。

+0

嗨,我並不清楚閾值,它可以隨半徑改變,所以,我不能對那些沒有從上一級「通過」的像素進行測試。我想創建一個圖像大小的蒙版,只有在當前窗口(我可以在方形窗口中創建一個圓形,如下所示:http://www.mathworks.com/matlabcentral/answers/24609 ,並且只是檢查image。* mask的總和是否小於threshold * mask。我只是不知道如何避免在這種情況下的循環 – matlabit 2013-02-21 21:09:42

+0

因此,你只需要定義一個循環過濾器,然後使用conv2或filter2運行計算總和(Matlab內部使用的FFT,所以它比嵌套循環實現方式更快) – iampat 2013-02-22 00:35:31

+0

嗨,謝謝,這就是我要做的,編輯你的答案(與評論),我會接受它。 – matlabit 2013-02-24 08:04:58