2011-11-07 96 views
4

如何使用我的函數作爲MATLAB中imresize函數的插值方法?MATLAB自定義插值內核

我讀了MATLAB的關於如何使用自定義函數插值方法的幫助,但沒有任何明確的例子。我試圖編寫一個代碼ma

+0

如果答案不符合您的預期,請編輯併發布一些代碼。如果一個答案對您有幫助,請點擊「向上」箭頭通知問題已被回答。 –

+0

相關問題:[調整在MATLAB瓦特/不同的過濾器](http://stackoverflow.com/questions/7758078/resizing-in-matlab-w-different-filters) – Amro

回答

4

這裏是你如何調用大小調整功能,對於將要調整到64x52的圖像A,有一個特殊的內核「lanczos2」:

B = imresize(A, [64 52], {@lanczos2,4.0}); 

這裏是一個插核的一個例子你會保存爲lanczos2.m

function f = lanczos2(x) 
f = (sin(pi*x) .* sin(pi*x/2) + eps) ./ ((pi^2 * x.^2/2) + eps); 
f = f .* (abs(x) < 2); 
end 

注意這個特殊的內核在imresize.m 已經實現了我覺得你的問題必須以「@」,它可用於引用函數來完成。

+1

坦克很多爲您的指導,這是有用的,我可以解決我的問題。 – user1033629

4

imresize命令將默認使用bicubic方法。你可以另外指定的其他幾個內置插值方法或內核之一,如

imNewSize = imresize(imOldSize, sizeFactor, 'box') 

一個箱形的內核。如果你想指定你自己的定製內核,你可以將它作爲一個函數句柄,連同內核寬度一起傳遞給一個單元格數組。例如,爲了實現自己的箱形核(不使用內置一)與4核寬度,嘗試:

boxKernel = @(x)(-0.5 <= x) & (x < 0.5); 
imNewSize = imresize(imOldSize, sizeFactor, {boxKernel, 4}); 

如果鍵入edit imresize看看裏面的功能,約行893你可以找到其他內置內核的實現,這可能會給你一些關於你如何實現自己的提示。

+0

坦克很多爲您的指南,它是有用的,我可以解決我的問題。 – user1033629

+0

你可以讓它升級嗎? –