downsampling
몇 개의 행/열 버림.
-> pixelated
Aliasing
sample 조금만 선택하면, 정보가 손실된다.
결국 혼란스러워질 수 있다. 왜냐면, 빈도가 많은 픽셀이 빈도가 적은 것처럼 보일 수도 있다.
또, 약간 깨져보임
Anti-aliasing
1. signal을 oversample하기. 하지만 이건 내가 하기엔 어려움.
2. signal을 smooth하기. signal을 픽셀값이라고 생각하기.
-> smoothing을 먼저 하고, 픽셀값 날려버리면 부드럽고 뿌옇게 흐려진다.
그냥 짝수 행/열 삭제하는 것보다 filter 적용해 smoothing하고 삭제하는 것이 훨씬 부드럽게 됨.
어떤 이미지를 1/7로 줄이려면, 7*7 pixel 중 하나의 픽셀만 고르면 된다.
가운데 픽셀 고르는 것이 합리적이라고 느낄 수도 있지만, 그럼 noise에 취약하기 때문에
가운데 픽셀만 고르는 것보다 7*7 pixel의 평균값을 구하는 것이 좋다.
이렇게 샘플링해서 줄어드는 이미지들을 차곡차곡 쌓은 것을 가우시안 피라미드라 한다.
근데, 만약.. 섞이면 안되는 이미지들, 예를 들어 줄무늬가 있다거나.. 한 것들은,
피라미드의 윗부분으로 갈수록 너무 섞여진다는 단점이 있다.
upsampling
한 픽셀을 가로로 10, 세로로 10 곱해주면.. 가장 간단한 upsampling!
근데 난 2.5배 하고 싶음. 근데 그럼 정수 아닌데..? 어카지
이럴 때 interpolation하면 됨!
interpolation
하나의 값으로 주변 값을 추정하는 것.
1. NN은, 그냥 더 가까운 픽셀의 값을 바로 가져오는 것. 반올림하면 됨. 근데 이러면 어차피 blocky해 보임.
2. Linear interpolation은, 이미 있는 픽셀값들을 연결해서, 그 사이 픽셀들의 값을 연결된 직선 위의 값으로 설정.
1-D 인 경우
Bilinear interpolation
2-D 인 경우
이런 과정을 수행해야 하는데, 이렇게 새로운 점을 구하려면, 이 새로운 점의 원래 점을 찾아서, 그 주변 4가지 좌표를 구해야 한다.
그러려면, x1 = (floor(x), floor(y)), x2 = (floot(x+1), floot(y)), x3 = (floor(x), floor(y+1)), x4 = (floor(x+1), floor(y+1)) 이런 방법으로 구할 수 있다.
그리고, 사각형 넓이를, w1 = (floor(x+1)-x)*(floor(y+1)-y), w2 = (x-floor(x))*(floor(y+1)-y), w3 = (x-floor(x))*(floor(y+1)-y), w4 = (x - floor(x))*(y-floor(y))
이렇게 구해서 f(x', y')를 구하면 된다.
결국, new 좌표의 값을 구하기 위한 old 이미지의 좌표인 (x', y')는 중요한 것이 아니라, 그 좌표의 값인 f(x', y')를 new좌표의 값으로 사용한다는 것이 중요한 것이다.
하나의 예시를 들어보면, 이는 픽셀의 좌표를 만드는 것인데, 그럼 (0, 0) 위치의 픽셀의 왼쪽 위 좌표는 (-0.5, -0.5)가 된다.
만약 여기서 4*4 이미지를 7*7로 늘려본다고 하자.
그럼 (-0.5, -0.5) 좌표는 여전히 (-0.5, -0.5) 좌표에 대응되지만,
원본 이미지의 끝점인 (3.5, 3.5) 좌표는 (6.5, 6.5) 좌표로 대응된다.
이를 이용해 식을 세워볼 수 있다.
두 변수 a, b를 놓고 식을 세우면, 우선 x좌표에 대한 식을 세울 수 있다.
-0.5a + b = -0.5
6.5a + b = 3.5
이렇게 한다면 a는 4/7, b는 -3/14가 된다. 이 값을 가지고 match up 식을 세우면,
x_old = 4/7 * x_new - 3/14 가 된다.
이 식을 통해 내가 구하고자 하는 x_new의 픽셀값을 어떻게 구하냐면,
x_old 좌표를 구해서, 그 주변 4개의 픽셀을 구해서, 4개 픽셀 좌표와 4개 사각형 넓이를 선형결합한 결과를 x_new의 픽셀값으로 생각하면 된다.
y좌표도 이와 같은 방법으로 하면 됨.
그리고.. 이걸 그냥 (0, 0) -> (0, 0), (4, 4) -> (7, 7) 로 생각해도 됨.
출처 : 충남대 고영준 교수님 강의자료
'AI > 컴퓨터비전' 카테고리의 다른 글
Segmentation (1) | 2024.06.16 |
---|---|
Morphological (0) | 2024.06.15 |
edge detection (nms 고치기) (0) | 2024.06.15 |
Image filtering (0) | 2024.06.15 |
Image 기초 (0) | 2024.06.15 |