2014-02-25 2 views
2

matlab의 사용자 정의 필터를 사용하여 960x540 원시 비디오를 1920x1080으로 업 스케일링 할 수 있습니까?matlab의 사용자 정의 고급 필터

내가 사용하고자하는 필터는 [1 2 3 3 2 1] 1/12

imresize 사용자 정의 보간 커널을 가지고 있지만 난 내 필터 대신 lanczos2 필터와 함께 사용하는 방법을 모르겠어요.

B = imresize(A, [1920 1080], {@lanczos2,4.0}) 

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 
+0

는 비디오에서 프레임을 읽고 사용자 정의 기능에 먹이를? 따라서 A는 각 비디오 프레임이됩니다. – Divakar

+0

맞춤 필터 기능을 작성하는 방법을 모르겠습니다. 위의 코드는 lanczos2의 예제입니다. –

+0

당신은 아마 이것을 필요로합니다 - http://www.mathworks.in/help/images/ref/imfilter.html – Divakar

답변

1

당신은 imresize과 같은 방법으로 보간 커널에 대해 생각하지 않습니다이다. 이산 시간 필터가 아닌 실수 값 x의 함수가 필요합니다. 그래서 당신은 함수, 'mykern.m'만들 수 :

function f = mykern(x) 
f = (3 - floor(abs(x)))/12 .* double(abs(x) <= 3); 

를 각 프레임에 imresize(x, 2, {@mykern,6})를 호출합니다. 당신은 당신의 이미지를 업 샘플링 한 다음 필터링하여 imresize를 사용하여 피할 수,

n = -5:.1:5; 
figure; plot(n, lanczos2(n)); 
figure; plot(n, mykern(n)); 

또는 :이 커널의 작동 방식에 대해 혼란스러워하는 경우

, 그것은 그들을 음모 유용합니다. 그러나이 경우에는 2D 필터를 사용하는 것이 좋습니다. 읽기 및 쓰기 비디오로

, VideoReader의 예를 살펴과 VideoWriter