2015-07-21 58 views
1

最近我已經開始使用imfilter函數來將圖像與某個內核進行卷積。我必須運行這個函數幾千次。因此我決定通過此功能進行時間​​調用。直接使用imfilter_mex避免imfilter

事實證明,在參數檢查,檢查某些工具箱首選項(像useIPPL(a,outSize,h,nonzero_h)之類的函數)和其他不同的準備工作上花了很多時間。最終所有事情都來自imfilter_mex調用。

現在的問題是:我知道我的過濾器是不可分的,我知道我會給出正確的參數作爲輸入,我該如何正確使用Mathworks提供的這個mex接口?

最初,這個mex位於圖像處理工具箱的私人文件夾中。由於找不到它是默認的,我試圖移動到項目目錄中。

由於那段時間調用隨機崩潰與不明顯的邏輯。有沒有人有直接使用這個mex的經驗?

謝謝

小更新:有崩潰的訪問衝突的類型,我有碰撞吸能

+3

也許有一個理由,所有的論證檢查... – Dima

+0

@迪馬我會說,如果問題連接不知何故錯誤的論點,我會得到一致的崩潰圖片,但不是一個隨機的。當然,在從實驗中使用相同的數據進行實驗的情況下。 –

回答

4

使用內部功能是直接的危險後殺MATLAB。所以移動內部mex文件。你不知道你繞過了什麼保護措施,以及你可能會破壞哪些依賴關係。

在這種特殊情況下,我猜測你的崩潰是由錯誤的數據類型傳遞給mex函數引起的。這正是所有參數驗證保護您的東西的類型。

如果您需要使用相同內核卷積許多圖像,那麼您可以將整個圖像堆棧傳遞到imfilter。這可能會讓您加快速度,而無需對MATLAB進行反向工程。順便說一下,請記住,默認情況下,imfilter執行相關而不是卷積。

編輯:數據類型來說:如果你可以使用uint8爲你的形象,你的內核,應該加快速度。

+0

我完全同意+1。 – rayryeng