1. 영상의 기하학적 변환
영상의 이동 변환(Translation transform)
- 가로 또는 세로 방향으로 영상을 특정 크기만큼 이동시키는 변환
영상의 크기 변환(Scale transform)
- 영상의 크기를 원본 영상보다 크게 또는 작게 만드는 변환
- 첫번째 식은 (크기 커진 영상) = (기존 영상) * (변화량)
- 두번째 식은 (기존 영상) = (크기 커진 영상) / (변화량)
- 세번째 식은 (변화량) = (커진 영상의 가로 or 세로 길이) / (기존 가로 or 세로 길이)
순방향 매핑(forward mapping)의 문제점
- 입력 이미지 -> 출력 이미지로 픽셀 매핑하는 방식
- 입력 이미지에서 픽셀 값 가져와서 출력 이미지의 두 배 크기의 좌표에 해당하는 위치에 매핑
- 입력 이미지의 픽셀과 일치하는 대상 픽셀이 존재하지 않는 경우 빈 공간 발생 !!
- 출력 이미지의 좌표 (2*j, 2*i)에만 입력 이미지 픽셀 매핑하고 나머지 초기화 x
- 빈 공간이 발생 (그레이스케일 값 비워짐)
- 역방향 매핑(backward mapping)으로 해결
BYTE** pSrc = imgSrc.GetPixels2D();
BYTE** pDst = imgDst.GetPixels2D();
for( j = 0 ; j < h ; j++ )
for( i = 0 ; i < w ; i++ )
{
pDst[2 * j][2 * i] = pSrc[j][i];
}
역방향 매핑(backward mapping)
- 출력 이미지 -> 입력 이미지
- 픽셀값은 모두 정수형
- 식의 계산 결과 실수형이 나올 수도 있음 -> 가장 가까운 정수값으로 픽셀 값 정해야 됨
- 수식에 의해 결정된 (x, y) 좌표가 (10.4, 15.8)이면?? -> 입력 영상의 픽셀값 (10, 16)
보간법(Interpolation)
- 실수 좌표 상에서의 픽셀 값을 결정하기 위해 주변 픽셀 값을 이용하여 값을 추정하는 방법
최근방 이웃 보간법 (Nearest neighbor interpolation)
- 가장 가까운 위치에 있는 픽셀의 값을 참조하는 방법
- 예: (50.2, 32.8) -> (50, 33)
- 장점: 빠르고 구현하기가 쉽다
- 단점: 계단 현상(블록 현상)양선형 보간법
양선형 보간법
- 실수 좌표를 둘러싸고 있는 네 개의 픽셀 값에 가중치를 곱한 값들의 선형 합으로 결과 영상의 픽셀 값을 구하는 방법
- 최근방 이웃 보간법에 비해서는 느린 편이지만, 비교적 빠른 편에 속하며 계단 현상이 많이 감소(혼합해서 새로운 값을 만드므로)
- 양선형 보간법에 의한 픽셀 값 계산
3차 회선 보간법 (Cubic convolution interpolation)
- 둘러싸고 있는 16개의 픽셀 값에 3차 함수를 이용한 가중치를 부여
- 고차 다항식으로 가중치 함수 정의 -> 3차 함수 정의한다는 소리임
- 가로 방향으로 4번, 세로 방향으로 1번의 3차 회선 보간법을 수행하여 빨간색 실수 좌표의 픽셀 값을 예측
- 가중치 함수 = 3차 곡선의 모양 -> "3차 회선 보간"
다양한 보간법에 따른 확대 영상의 품질 비교
- 최근방 이웃 보간법: 가까운 픽셀로 대체하는 것이므로 계단현상 발생
- 양선형 보간법: 네개의 픽셀을 보간 가중치 이용해서 새로운 픽셀 만들기 -> 부드러운 영상, 계단현상 x
- 3차 회선 보간법: 16개의 픽셀을 3차 가중치 함수를 이용해서 새로운 픽셀 만들기 -> 부드러운 영상, 계단현상 x
영상의 축소 시 고려할 사항
- 한 픽셀로 구성된 선분들은 영상을 축소할 때 사라지는 경우가 발생
- 해결 방안: 입력 영상을 부드럽게 필터링한 후 축소
영상의 회전 변환
회전 변환(rotation transform)-시계방향 회전
- 영상을 특정 각도만큼 회전시키는 변환
- 영상을 원점 (0, 0)을 기준으로 쎄타만큼 회전하는 경우
- 30도, 45도 등등은 특수각도 x
'영상처리' 카테고리의 다른 글
[영상처리] 영상의 특징값 추출 방법 (0) | 2023.06.10 |
---|---|
[영상처리] 공간적 필터링 기법 (0) | 2023.06.09 |