我試圖通過使用colfilt函數的圖像運行自定義的過濾器。該濾鏡基本上在圖像中運行一個窗口nxn,並將中心像素替換爲其最小和最大總和的一半。這是代碼的樣子:在MatLab/Octave中使用colfilt函數的錯誤
colfilt(image, 3, "sliding", @(x) (min(x(:))+max(x(:)))/2)
不過,我得到這個錯誤:
error: col2im: can't resize B in matrix sized (A_SIZE - BLOCK_SIZE +1)
error: called from:
error: /usr/share/octave/packages/image-2.2.1/col2im.m at line 143, column 9
error: /usr/share/octave/packages/image-2.2.1/colfilt.m at line 152, column 9
如果我被nfilter更換功能,如下面
nlfilter(image, [n n], @(x) (min(x(:))+max(x(:)))/2)
它工作正常,但速度太慢,所以我認爲第一個選項必須更好地工作。
有誰知道如何使它工作?
在此先感謝。
它看起來像你分配colfilt結果的矩陣的大小應該是A的大小 - blocks_size(在你的情況下是3)+ 1 = A-2的大小,它沒有這樣的大小尺寸。 – Cheery 2014-10-19 04:12:11
但是我沒有把結果賦值給任何變量 – gcolucci 2014-10-19 04:15:01
你 - 不是,但col2im是由colfilt調用的。原始圖像的尺寸是多少?嘗試使用不僅是'3',而是'[3 3]' – Cheery 2014-10-19 04:16:59