아래에 표시된 8 * 8 행렬 (이미지)에 쌍 입방 보간을 수행하려고합니다.
A = 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 10 20 30 40 50 60 70 80 90 100 110 120 130 140
다음 MATLAB 코드를 사용하여 출력을 얻었습니다.
interp2(A,"bicubic")
하지만 인터넷 검색 후에도 수동으로 수행하는 방법. 누구든지이 예제를 사용하여 아이디어를 얻을 수 있도록 도와 줄 수 있습니까 (몇 픽셀 만 해당)?
답변
여기 꽤 좋은 설명입니다.
1D 경우 (설명하기 쉽기 때문에)를 고려한 다음 2D 사례로 넘어가겠습니다.
3 차 보간의 기본 개념은 1 차 도함수 $ f “(x) $와 함께 3 차 함수 $ f (x) $로 두 점 사이의 값을 추정하는 것입니다.
$$ f (x) = ax ^ 3 + bx ^ 2 + cx + d $$ $$ f “(x) = 3ax ^ 2 + 2bx + c $$
그러면 왼쪽과 오른쪽의 인접한 3 차 스플라인에 스플 라이스 할 때 보간 함수 ( “0 차 미분”)와 1 차 미분은 연속적입니다. 즉, 특정 스플라인의 왼쪽 경계에서 0 차 미분과 1 차 미분은 다음과 같습니다. 바로 왼쪽에 인접한 스플라인의 오른쪽 경계와 동일합니다.
일반성을 잃지 않고 $ x = 0 $과 $ x = 1 $ 사이를 보간한다고 가정 할 수 있습니다. . 왼쪽과 오른쪽 경계에서
$$ f (0) = d $$ $$ f (1) = a + b + c + d $$ $$ f “(0) = c $$ $$ f “(1) = 3a + 2b + c $$
다항식 계수 풀기
$$ a = 2f (0)-2f (1 ) + f “(0) + f”(1) $$ $$ b = -3f (0) + 3f (1)-2f “(0)-f”(1) $$ $$ c = f “( 0) $$ $$ d = f (0) $$
이제 추정되는 지역 주변의 4 개 지점 인 $ (-1, y _ {-1}) $, $ (0 , y_0) $, $ (1, y_1) $, $ (2, y_2) $ 및
$$ f (0) = y_0 $$ $$ f (1) = y_1 $$
두 경계 미분을 다음과 같이 정의합니다.
$$ f “(0) = \ frac {y_1-y _ {-1}} {2} $$ $$ f “(1) = \ frac {y_2-y_0} {2} $$
인접 스플라인에 대해 정의되는 방법과 일치합니다.
그런 다음
$$ a =-\ frac {y _ {-1}} {2} + \ frac {3y_0} {2}-\ frac {3y_1} {2} + \ frac {y_2} {2} $$ $$ b = y _ {-1}-\ frac {5y_0} {2} + 2y_1-\ frac {y_2} {2} $$ $$ c =-\ frac {y _ {-1}} {2} + \ frac {y_1} {2} $$ $$ d = y_0 $$
계수를 알고 나면 중앙 두 점 사이의 모든 점에 대해 $ f (x) $를 보간 할 수 있습니다. $ (0 , y_0) $ 및 $ (1, y_1) $.
쌍 입방 보간의 경우 원리는 거의 동일하지만 곡선이 아닌 16 점 (4×4 그리드)을 사용하여 표면을 추정합니다. 이를 수행하는 한 가지 간단한 방법은 먼저 열을 보간 한 다음 결과 행을 보간하는 것입니다.
주석
- 이것들은 Hermite라고도하는 BTW입니다. 다항식.
- 이 답변을 읽기 전에 큐빅 헤르 마이트 스플라인에 대한 모든 소란이 무엇인지 이해하지 못했습니다. 정말 대단합니다. 정말 감사합니다!
- 쌍 선형 보간을 할 때 한 변수에 대해 선형 보간을 한 다음 다른 변수에 대해 선형 보간을합니다. 따라서 쌍 입방 보간은 동일합니다. 한 변수에 대해 3 차 보간을 수행 한 다음 다른 변수에 대해 3 차 보간을 수행합니까?