저는 MATLAB을 사용하여 이미지의 크기를 조정하려고하는데 쌍 선형 모드를 사용하는 imresize 함수에 대해 직접 이해할 수있는 이상한 것이있었습니다.imresize bilinear MATLAB
어떻게 문제가 있는지 예제를 통해 알려 드리겠습니다. 다음은 1D 행렬입니다.
A: [0 1 2]
B: [1 2 0 5]
하는 배율의 선형 보간은 [1,5]는 1 차원 어레이, 지금까지 아는 한, MATLAB에서, 그러나
imresize(A,[1,5],'bilinear')
쇼
A: [0, 0.5, 1, 1.5, 2]
하게
[0, 0.4, 1, 1.6, 2.0]
또한
imresize(B,[1,5],'bilinear')
imresize(B,[1,10],'bilinear')
마다, 나는 다른 포럼에서 질문과 답변을 많이 발견
[1.0 1.7 1.0 1.5 2.0]
[1.0 1.1667 1.16111 1.8889 1.0000 0.1111 1.9444 4.1667 5.0000]
보여주고 그들 중 누구도 나를 보편성의 측면에서, 만족하지 않습니다.
그러나, I '는 imresize.m'코드 라인에서 대답 u
출력 행렬의 인덱스를 결정
u = x/scale + 0.5 * (1-1/scale)
알았다. 상기에서, 나는 이상한 출력 imresize with bilinear
에 의해 만들어집니다하지만 문제는 내가 0.5 * (1-1/scale)
의 의미를 이해하지 , 얼마나 알고 있습니다.
는 0.5 * (1-1/scale)
없이 u = x/scale
진정한 선형 출력
A: [0, 0.5, 1, 1.5, 2]
수 원래 알고리즘을 나타낸다.
그런 다음 왜 0.5 * (1-1/scale)
이 필요합니까? 목적과 의미는 무엇입니까?
코드에서 그 행 바로 위에있는 주석은 (내 버전에서 : R2016b) : '입력 - 공간 좌표'를 알려줍니다. 출력 공간에서 0.5가 입력 공간에서 0.5로 매핑되고 출력 공간에서 0.5 + 배율이 입력 공간에서 1.5로 매핑되도록 역 매핑을 계산하십시오 .'. 사실이 줄이 나타나는 코드의이 섹션은 잘 설명되어 있습니다. 각 행에 주석이 달려 있습니다. 의견을 읽고 이해가되는지 확인하십시오. – rayryeng
또한 ** 필자는 ** imresize없이 첫 번째 원칙 **에서 쌍 선형 보간 함수를 작성했습니다. 이 함수가 실제로 기대하는 바를 달성했는지 확인하십시오 : http://stackoverflow.com/questions/26142288/resize-an-image-with-bilinear-interpolation-without-imresize/26143655#26143655. – rayryeng
답변 해 주셔서 감사합니다! 실제로 댓글을 읽었지 만 0.5는 왜 사용합니까? 나는 아직도 그것을 얻을 수 없다. –