Home Image warping
Post
Cancel

Image warping

Image processing


1
![slide1](/assets/img/0309/1.jpg)<br/><br/><br/>

image processingimage filteringimage warping이 있다.
이미지 필터링은 이미지의 범위, 즉 y축 값을 변화시키는 거고 (색 변화 등)
이미지 와핑은 이미지의 도메인, 즉 x 축 값이 변화시키는 것. (위치 변환만)


slide1
slide2


Image warping


가장 간단한 연산자인 scaling, rotation matrix는 아래와 같다.


slide3 slide4


모든 픽셀에 위와 같은 연산자를 통해 scale을 조정하거나 이미지를 회전 시킬 수 있다. 일반화 시키면 아래와 같다.

slide5


2x2 matrix를 일반화 시켜 2D linear transformation으로 표현하면 Scale / Rotation / Shear / Mirror 등 다양한 연산을 수행할 수 있다.

slide6


특히 이렇게 일반화 했을때 위와 같이 복합연산을 합쳐서 1개의 matrix로 표현할 수 있는 등의 이점이 있다.


2x2 행렬은 translation이 안된다.. 이동 하나 때문에 linear transformation을 잃을 수 없다! 라는 관점에서 나온 게 Homogeneous coordinates 개념이다.


이것을 합쳐서 Affine Transfomation 이라고 한다. 즉, linear transformation + Translations

그리고 2차원 공간의 좌표의 표현을 3개 coordinate로 표현하면 아래와 같이 3개 기본연산자를 정의할 수 있다.

slide7


그리고 translation 연산까지 포함하는 일반화된 연산자는 아래와 같다.

slide8


위 식을 보면 Cartesian (2x2) coordinate에서는 translation 항을 2D matrix로 표현하지 못했던 반면 Homogeneous coordinate에서는 2D matrix안에 모든 연산자를 포함시킬 수 있다.


다음은 Projective인데,
Projective Transformation 은 Affine transformation + Projective warp

이는 affine transfomation에서 3x3 행렬 중 마지막 행렬이 0, 0, 1 이 아닐 때 사용가능하다.


slide9 slide10


지금까지 언급한 translation operator들을 정리하면 아래와 같다.

slide11


이 때 transformation 별로 필요한 point수가 다른데

slide12


slide13


slide14


각각 다른 정보를 필요한 이유는 미지수의 수만큼 방정식이 필요한 연립방정식이 필요한 것처럼 translation의 자유도(degree-of-freedom)만큼 point가 있어야 recovering translation이 가능하기 떄문이다.


forward&inverse warping


일반적으로 2개의 다른 접근 방식이 존재한다. 첫번째가 바로 forward warping이다. Foward warping의 기본 아이디어는 f 로부터 각각의 pixel을 target image에서 이와 대응되는 위치의 (x′,y′)=T(x,y)로 보내는 것이다.

slide15


그래서 source image로부터 각각의 pixel로부터 target image의 대응되는 지점으로 transformation T 를 이용해서 보낼 수가 있다. 위치로 보낸 후에는 해당하는 위치의 값을 그대로 복사해서 붙여 넣어주면 된다.


forward warping에는 문제점이 존재하는데,. 첫번째는 만약에 pixel이 2개의 pixel 사이로 보내지면 어떻게 될까? Transformation은 간단한 matrix 계산을 통해서 수행된다. 그래서 바뀐 위치가 무조건 정수로 떨어지지 않을 수가 있다. 그래서 1.5와 같은 실수는 일반적인 pixel 좌표에서는 사용할 수 없다. 그러면 이러한 문제를 어떻게 해결해야 하는 것일까?


slide16


간단하게 이웃하는 pixel들에게 값을 나눠줌으로써 문제를 해결할 수 있다. 다시 말해서 간단하게 bilinear interpolation과 같은 방법으로 blending 해주는 것이다.


하지만 scale이 변한다면?


slide17


예를 들어서 4개의 pixel의 traget image에 위와 같이 보낸다고 해보자. 그러면 이제 target image 상에 큰 구멍이 생기게 될텐데, 이를 어떻게 채워야 하는 것일까? 아무래도 구멍의 크기가 꽤 커서 단순한 방법으로는 해결하지 못할 것이다.


이러한 문제때문에 forward warping 대신에 inverse warping이 더 많이 사용되고 있다. Inverse warping에서 transformed image로부터 각각의 target pixel에 대해서 우리는 inverse transformation{T^-1}을 이용해서 source image에 대응되는 pixel의 위치를 구할 수 있다.


slide18


위치를 구하고 나면 source pixel의 값을 복사해서 대응되는 target pixel의 위치에 붙여넣어 주는 것이다. 그러면 이제 어떻게 이러한 inverse warping이 문제를 해결하는지 보도록 할 것이다.


다시 문제를 정의해서 pixel들이 2개의 pixel 사이 어딘가로부터 도착하면 어떻게 해야할까?


slide19


source pixel이 좌측과 같이 어딘가에 위치한다면, 간단하게 해당하는 pixel의 이웃들로부터 color 값을 interpolation을 통해서 구할 수 있다는 것이다. 그러면 이제 target 지점에 interpolation 결과로 얻은 값을 복사할 수 있다. 그래서 이 문제는 쉽게 해결 될 수 있다.
inverse warping은 심지어 transformation T 가 scaling transformation이라도 구멍이 생기는 문제가 발생하지 않는다. 왜냐하면 모든 target pixel의 위치에 대해서 반복하기 때문이다.


참고 https://sonsnotation.blogspot.com/2020/12/16-image-warping.html
https://com24everyday.tistory.com/366

This post is licensed under CC BY 4.0 by the author.