차량용 후방 카메라의 어안 보정
2008년 10월호 지면기사  / 글│Altera Corporation

어안 왜곡과 매핑 함수들

어안 렌즈는 그림 1의 좌측에 보이는 바와 같이 이미지에 독특한 볼록 형상을 부여하는 이퀴솔리드 앵글(equisolid angle)과 같은 특수한 매핑 기능 대신에 비-어안 렌즈와 옵팅(opting)에 일반적인 원근법(직선) 매핑을 사용함으로써 매우 넓은 FOV(fields of view)를 달성한다. 어안 매핑을 통해 형성되는 방사형 왜곡은 이미지 확대 현상이 광학적인 축으로부터 멀어질수록 감소하는 현상을 말한다. “배럴 왜곡(barrel distortion)”으로도 알려져 있는 분명한 효과는 구면을 따라 매핑되는 이미지의 왜곡이다. 결과적으로 어안 이미지는 직선 이미지의 가장 중요한 특성을 보존하지 않으며 장면의 직선들을 이미지의 직선으로 매핑한다. 다음과 같은 두 종류의 어안 이미지가 있다:

■ 순환(Circular) 또는 반구상(hemis-pherical) 어안 이미지는 전체 반구상 시야가 필름 프레임 내의 원안에 투사되는 경우에 형성된다. 다시 말해 이미지 원이 필름 또는 센서 영역에 새겨진다. 이러한 이미지 원은 수직 및 수평 방향을 따라 그림 1의 좌측에 보이는 바와 같이 180° 각도의 시야를 가진다.
■ 풀-프레임(full-frame) 어안 이미지는 그림 1의 우측에 보이는 바와 같이 반구상 이미지가 필름 또는 센서 영역 주변으로 제한되는 경우에 형성된다. 이러한 이미지는 대각선을 따라 180° 각도의 시야를 가지면서 수평 및 수직 각도의 시야가 보다 작아진다.

분명한 것은 보다 작은 센서 또는 필름 크기로 이미지를 촬영한다면 순환 어안 이미지를 풀-프레임으로 전환할 수 있다는 것이다. 어안 렌즈는 2개의 기본 파라미터, 즉 초점 길이와 FOV에 의해 특성화된다. 어안 카메라에서 파라미터는 해당 센서 또는 필름의 크기와 관련이 있다. 각기 다른 어안 렌즈들이 이미지들을 다르게 왜곡하며, 왜곡의 성질은 각각의 매핑 함수에 의해 정의된다.
θ가 실제 세계의 특정 지점과 광학적 축 사이의 각도이고, 이미지의 중앙으로부터 렌즈의 중앙으로 이동한다면 이미지 상의 지점의 방사 위치 R은 각기 다른 매핑 함수에 대한 θ 및 렌즈의 초점 거리와 관련이 있다.

■ 원근법 투사(일반적인 비-어안 렌즈): R = f tan(θ). 이것은 핀홀(pinhole) 카메라와 같이 간단하게 동작하며, 그림 2(좌측)에 나타낸 바와 같이 일반적인 카메라의 직선 왜곡이 없는 매핑을 위한 기초이다.
■ 리니어-스케일드(linear-scaled) 투사(등거리): R = fθ, 여기서 θ는 그림 2(우측)에 나타낸 바와 같이 라디안(radian) 내에 있다. 이것은 어안 렌즈를 위한 가장 단순한 매핑 함수이며, 어안 렌즈를 위해 분명하게 그것을 표시하며, 필름 상의 지점의 방사 위치가 원근법 매핑과 다르기 때문에 다른 위치로 이동된다.

이와 마찬가지로, 어안 렌즈에 대하여 다른 매핑 함수도 가능하다:

■ 이퀴솔리드 앵글: R = 2fsin(θ/2). 이 일반적인 함수가 우리의 분석에서 가정된다.
■ 정사영(Orthographic): R = fsin(θ).
■ 스테레오 투사(Stereographic):            R = 2ftan(θ/2).

알고리즘 설명
위에서 설명한 바와 같이, 어안 이미지 내 지점의 방사 위치 (Rf)는 원근법 이미지 (Rp)와 다르다. 따라서 왜곡된 어안 이미지를 보정하는 작업은 Rp와 Rf 사이의 관계를 찾는 것이다. 이것은 원근법 매핑과 어안 매핑을 정의하는 2개의 연립방정식 내의 미지수들을 풀이함으로써 찾을 수 있다. 이러한 연립방정식을 풀이하는 것은 삼각함수의 연산을 포함하기 때문에 이것은 FPGA 상에서 구현하기 힘든 작업이다.
알테라와 MDN(Manipal Dot Net Pvt Ltd) 사가 왜곡된 어안 이미지를 보정하기 위한 과정을 단순화시킬 수 있는 이상적인 방법을 개발했다. 기본적인 아이디어는 Rp와 Rf 사이의 관계가 카메라의 지오메트리, 즉 초점 길이 (f)와 FOV에 의해 전적으로 결정된다는 사실을 기초로 한다. 다시 말해 LUT(look-up table) 형태로 사전 연산되어 저장될 수 있다는 것을 의미한다. FPGA 작업은 왜곡된 어안 입력 이미지의 픽셀을 보정된 출력 이미지의 픽셀로 매핑하기 위해 LUT를 사용하는 것이다. 이것은 서브-픽셀 렌터링을 포함하기 때문에 FPGA가 픽셀 보간법(pixel interpolation)의 형식을 수행하는 방법이 필요하다. 간단하고 매우 효율적인 픽셀 보간법인 9-점 보간법(9-point interpolation)은 허용 가능한 왜곡이 없는 출력 이미지를 형성한다.

LUT의 연산
소스 이미지로서 표시된 어안 카메라에 의해 획득된 입력 프레임과 목표 이미지로서 보정된 출력에 대하여 소스 어안 왜곡 이미지를 보정하는 작업을 다음과 같이 정의할 수 있다: 목표 이미지 내의 모든 픽셀 위치에 대해 소스 이미지 내에서 일치하는 픽셀 위치를 연산하는 것이다.
xp와 yp를 각각 출력 원근법(직선) 이미지 내의 xy 좌표로 두고, 이와 마찬가지로 xf와 yf를 입력 어안 이미지 내의 소스 픽셀의 xy 좌표로 둔다. 다음으로 어안 이미지에 대해 이퀴솔리드 앵글 매핑을 가정하면, 다음의 연립방정식이 성립된다:

     Rf = 2f sin(θ/2)
     Rp = f tan(θ)
     xp / yp = xf / yf

여기서 Rp는 중앙에서부터 시작하는 원근법 이미지에 대한 픽셀의 방사 위치이며, Rf는 중앙에서부터 시작하는 어안 이미지에 대한 픽셀의 방사 위치이다. 이미지의 중앙은 어안 렌즈의 중앙과 일치한다고 가정하고 위의 3가지 연립방정식 사이의 θ를 제거하여 다음 식을 구할 수 있다:

 


여기서                             와 f는 픽셀 내의 초점 길이이며,
와 같이 계산할 수 있다.

따라서 모든 목표 픽셀에 대해서 어안 이미지 내에서 일치하는 픽셀 위치를 연산하여 LUT의 형태로 저장할 수 있다. 이미저 특성(이미저의 FOV와 입력 프레임의 크기 포함)과 디스플레이 시스템의 특성(디스플레이 크기 포함) 등과 같이 LUT 생성에 필요한 모든 파라미터들은 사전에 제공된다. 따라서 해당 이미저와 디스플레이 시스템을 위한 LUT는 한번만 연산되고 오프라인 상태가 된다.
그림 3의 좌측과 우측에 그림 1의 좌측과 우측의 어안 이미지를 보정한 결과를 각각 제시했다. 일정한 방향에 따라 180° FOV를 가진 보정된 어안 이미지를 얻기 위해서는 보정된 이미지의 크기가 무한대가 되어야 한다는 사실에 주목해야 한다. 이것은 불가능하기 때문에 목표 이미지의 FOV가 180° 이하로 제한된다. 풀-프레임 어안 이미지의 경우, 수평과 수직 방향을 따라 소스 이미지의 FOV가 180° 이하가 되며, 목표 이미지의 FOV가 소스 어안 이미지의 FOV보다 크다면 소스 이미지의 FOV 밖에 있는 지점들은 검은색으로 렌더링된다. 이것은 그림 3의 우측에 나타난 것처럼 모서리들이 팽창되는 특수한 “나비 넥타이(bow tie)” 효과를 유발한다. 이러한 현상은 목표 이미지의 FOV를 항상 소스 어안 이미지의 FOV보다 충분히 작게 유지함으로써 차단할 수 있다.

9-점 보간법
앞 절에서 설명한 바와 같이 LUT는 모든 목표 픽셀 위치에 대한 소스 픽셀 위치를 제공할 수 있다. 하지만, 소스 픽셀 위치가 실수(real number)가 될 수 있기 때문에 목표 이미지의 실제 픽셀 값들을 연산하는데 LUT를 사용하기 위해서는 몇 가지 형식의 픽셀 보간법이 필요하다. 뿐만 아니라, 실제 값을 가진 LUT(부동소수점 표현을 필요로 하는)는 FPGA에 적합하지 않을 수 있다. 하지만, 9-점 보간법 구조를 통해 LUT에 실수들을 저장하는 것을 피할 수 있는 픽셀 보간법을 위한 간단하고 효율적인 방법을 제공함으로써 이러한 문제들을 해결할 수 있다.
픽셀 보간법을 위한 대안적인 방법들은 다소 성공적이지 않다. “최근접(nearest neighbor)” 보간법은 연산을 위한 간단하고 신속한 방법을 제공하지만 다소 정밀하지 못하며 식별이 가능한 이미지 인공물을 생성할 수 있다. 이중선형 보간법(bilinear interpolation)과 같이 보다 복잡한 보간법들은 FPGA에 효율적으로 처리하는데 적합하지 않은 부동소수점 연산을 포함한다. 그림 4에 나타낸 바와 같이 9-점 보간법 구조(최근접 보간법과 이중선형 보간법 구조의 중간 경로)는 9개의 근접값 중에서 최근접값에 대한 LUT의 실수치 픽셀을 매핑하는 것을 포함한다.
이 방법에서는 인접한 실제 픽셀의 집중도 값(intensity value)의 평균을 구함으로써 모든 의제 픽셀(fictitious pixel)들의 집중도 값들을 계산한다. 예를 들어, 픽셀의 색상 집중도 (x, y+0.5)는 실제 픽셀 (x, y)와 (x, y+1)의 색상 집중도 값의 평균이다. (x+0.5, y+0.5)의 집중도 값은 실제 픽셀 (x, y), (x+1, y), (x, y+1), (x+1, y+1)의 집중도 값의 평균이다.
앞서 논의한 두 가지 방법과 비교하여 이 기법이 가지고 있는 주요 이점은 보정된 이미지의 품질을 크게 희생시키지 않으면서 간단하게 연산을 할 수 있다는 것이다. 2개로 나누는 것은 1 bit로 숫자의 합을 나누는 “라이트-시프팅(right-shifting)”을 통해 실현할 수 있으며, 4개로 나누는 것은 숫자들의 합을 2 bit로 나누는 라이트-시프팅을 통해 실현할 수 있다. 이러한 종류의 연산은 FPGA 상에서 매우 단순하다.
9-점 보간법 구조를 통해 LUT가 실측치 픽셀 위치를 저장할 필요가 없다는 것에 주목해야 한다. 실측치 픽셀이 매핑되는 실제 또는 의제 픽셀의 위치를 직접 저장할 수 있다. 이것은 고정소수점 표현으로 쉽게 달성할 수 있다.

설계 구현
이 절에서는 알테라 Cyclone짋 FPGA 시리즈와 Nios짋 Ⅱ 소프트-코어 임베디드 프로세서를 사용해 어안 보정을 구현하는 방법에 대해 소개한다. Nios Ⅱ 아키텍처는 알테라 FPGA의 프로그램 가능한 로직과 메모리 블록에서 구현되는 RISC 소프트-코어 아키텍처이며, DSP에서부터 시스템 제어에 이르는 다양한 범위의 임베디드 연산 애플리케이션들을 처리할 수 있다. Nios Ⅱ 프로세서의 소프트-코어 특성은 시스템 설계자들이 특정 애플리케이션 요구에 맞춤화된 주문형 Nios Ⅱ 코어를 지정하고 생성할 수 있도록 해준다. Nios II 임베디드 평가 키트(Nios Ⅱ Embedded Evaluation Kit, NEEK)가 개발 플랫폼으로서 사용된다.
그림 5와 같이 하드웨어 아키텍처는 Nios Ⅱ 소프트-코어 임베디드 프로세서, BT-656 비디오 입력 모듈, I2C 구성 모듈, DDR-SDRAM 컨트롤러, LCD 컨트롤러로 구성되어 있다.

BT-656 비디오 입력 모듈
BT-656 비디오 입력 모듈은 ITU-R BT.656 디지털 비디오 표준과 호환되도록 설계되었으며, CSC(color space conversion), 클리핑, 디인터레이싱(de-interlacing), 스케일링, 24 bit RGB 팩 등의 기능을 제공한다. 각 동작은 연속적으로 수행되며(그림 6 참조), Nios Ⅱ 프로세서에 의해 제어되는 레지스터들에 의해 파라미터가 설정된다. 요구되는 출력 포맷에 따라 비디오 입력은 클리핑되거나 스케일-업 또는 스케일-다운 될 수 있다. 레지스터를 통해 시스템을 다양한 디스플레이 해상도와 NTSC, PAL, SECAM 등과 같은 입력 비디오 포맷에 맞게 조정할 수 있다. 모듈에서 생성된 비디오 데이터는 DMA(direct memory access) 채널을 통해 외부 SDRAM 프레임 버퍼로 전달된다.

비디오 입력 구성 모듈
I2C 구성 모듈은 비디오 디코더를 구성하기 위해 사용되며, 요구되는 포맷 내에서는 아나로그디바이스(Analog Devices) 사의 ADV7180을 사용한다. ADV7180은 8-bit ITU-R BT.656 YCrCb 4:2:2 디지털 입력 표준으로 출력을 제공한다.

LCD 컨트롤러
LCD 컨트롤러는 제한 요소가 되는 프로세서 오버헤드 없이 보다 빠른 데이터 전송을 달성하기 위해서 스캐터-개더(scatter-gather) 알고리즘을 사용한다. 그림 7에 나타낸 바와 같이 LCD SGDMA는 외부 SDRAM 프레임 버퍼로부터 데이터를 받아서 LCD 주변장치에 적합한 데이터 전송속도로 조정하기 위해 듀얼포트 RAM을 구현하는 데 사용되는 FIFO로 전달한다. 픽셀 컨버터와 데이터 포맷 어댑터는 LCD 디스플레이 시스템 사양에 따라 데이터를 조정한다. 비디오 싱크 제너레이터(video sync generator)는 포매팅된 데이터에서 데이터를 받아서 적절한 클록 신호들을 생성하고 디스플레이에 데이터를 전달한다.



<저작권자 © AEM. 무단전재 및 재배포, AI학습 이용 금지>


  • 100자평 쓰기
  • 로그인



TOP