CMOS Image Sensor를 위한 자동노출 알고리즘의 하드웨어 구현

2010-03-31     CCTV뉴스
자동노출은 피사체나 광원의 밝기 변화에 대응하여 카메라로부터 취득된 영상의 노출치를 일정하게 유지시켜 주는 기능을 나타내며, CIS 기반 모바일 카메라의 핵심 구성 요소 중의 하나이다.
일반적으로 자동노출 알고리즘은 소프트웨어로 구현되어 CPU와 소프트웨어를 저장하기 위한 ROM을 내장하는 구조를 가지는데, 이는 유연성을 확보하는 대신 CPU와 메모리라는 비용증가로 이어지게 된다.
본고에서는 CIS를 위하여 설정 가능한 소수의 파라미터에 근거하여 가변 프레임율과 ADC 이득 조정 등이 자유롭고, 고속의 응답을 지향하는 AE 알고리즘과, FSM(Finite State Machine) 기반으로 설계한 하드웨어 구조를 제안한다.

ISP(Image Signal Processor)는 이미지 센서가 생성한 Bayer 패턴의 원영상을 ITU-R.601/656 권고안을 따른 YCbCr 색공간으로 변환하는 기능을 수행하는 장치를 지칭한다. 이외에도 주관적, 객관적 화질개선을 위해서 색상개선, 윤곽선 강조, 렌즈 왜곡 보상, 감마 보상, 잡음 감소 등과 같은 고부가 기능을 추가하여 구현한다. ISP는 이미지 센서에 내장되어 단일 칩 이미지 센서 제조에 사용되기도 하며, 독립적인 IC로 구현되어 순수한 이미지센서와 함께 조립되어 카메라 모듈을 구성하기도 한다.

최근에는 AP(Application Processor)에 내장되어 ISP가 내장되지 않은 카메라 모듈의 영상 데이터를 AP가 직접 처리하도록 하는 것이 추세이기도 하다. 이미지 센서의 해상도가 높아지고, 소형 경량화된 카메라 모듈에 대한 요구가 증가함에 따라서, 고해상도 카메라 모듈은 ISP가 내장되지 않는 경향을 따를 것으로 보이며, 이에 따라 AP에 ISP가 내장되는 추세가 지속될 것으로 기대된다.

ISP가 수행해야하는 영상 처리 기술은 화소 단위로 적용하는 것과, 프레임 단위로 적용하는 것으로 구분된다. 프레임 단위로 처리하는 기술에는 AWB(Auto White Balance), AE (Auto Exposure), AF(Auto Focus) 등이 있으며, AF는 고가의 초점 제어 장치를 필요로 하기 때문에 저가의 모바일 카메라에서는 구현되지 않으나, AWB와 AE는 모든 카메라에 기본적으로 탑재되는 기본적인 핵심 기능이라고 할 수 있다.

AE는 촬상되는 피사체와 배경의 노출치를 일정하게 유지시켜주는 기술이다. 이를 위해서 현재 프레임에서 노출치를 계산하고, 이를 목표 노출치와 비교하여 다음 프레임에 적용될 노출 시간을 보정한다. 즉, 목표 노출치보다 낮을 경우에는 노출시간을 증가시키고, 목표 노출치보다 높을 경우에는 노출시간을 감소시킴으로써 노출 치를 일정하게 유지한다.

AE는 이미지 센서나 응용 제품의 성격에 따라서 형태가 크게 달라진다. CCD(Charge Coupled Device)는 캠코더, CCTV, DSC (Digital Still Camera) 등에서 주로 사용되고 왔고, 이런 제품들에서는 이미지 센서로부터 촬상된 영상을 TV로 직접 도시하도록 하는 부가기능을 기본적으로 탑재해왔다. 이는 CCD 기반의 카메라에서는 TV에서 도시가 용이하도록 프레임율이 30 fps나 25 fps로 제한되었다는 것을 의미한다.

고가의 카메라 제품에 주로 채택되었던 CCD와 달리 CIS(CMOS Image Sensor)는 핸드셋에 주로 채택되어 왔다. 이는 다른 응용 제품들보다 전력 문제가 훨씬 민감했기 때문이기도 하지만, 화질에 대한 사용자의 요구도 상대적으로 관대했기 때문이다. 또한 핸드셋에서는 촬상된 영상을 TV로 직접 도시하는 기능은 단자의 크기나 전력소모 등과 같은 이유로 상정하지 않았기 때문에, 핸드셋에 내장된 CIS 카메라는 30Hz나 25Hz와 같이 높은 프레임율을 사용하지 않고, 이보다 훨씬 낮은 프레임율을 적용하는 것이 일반적인 관행이었다. 실제로 대부분의 카메라폰에서의 프레임율은 정상조도 하에서도 15fps이하이며 저조도 환경에서는 7.5fps나 6fps까지도 내려가는 식으로 가변 프레임율로 동작한다. 저조도에서 프레임율을 낮추는 이유는 노출시간을 증가시키기 위함인데, 이는 CIS가 CCD보다 SNR이 상대적으로 낮다는 특성을 보완하기 위한 합리적인 절충안이기도 하다.

따라서 CCD 기반으로 개발된 AE 알고리즘들은 프레임율이 고정된 상태에서 노출 정도를 조정하기 위한 수단을 사용해왔다. 이러한 수단에는 한 프레임 주기 내에서의 노출 시간 조정(혹은 전자셔터 조정), 조리개 조정으로 인한 광량 조절, ADC(Analog to Digital Conversion) 이득 조정 등이 포함된다. 이 중에서는 조리개 조정이 가장 민감하게 노출 정도를 조절하는 장치이지만 조리개라는 기계적 기구물을 수반하기 때문에 소형화와 비용에 민감한 카메라 폰에서는 구현하기 곤란한 기술이다.

CIS에서는 노출 정도를 조정하기 위한 수단으로 프레임율 조정, 전자셔터 조정, ADC 이득 조정과 같은 수단을 사용한다. 좀 더 구체적으로는 전자셔터를 통해서 노출 시간을 조정함에 있어서 프레임율에 제한을 받지 않는다는 것이다. 따라서 CIS에서는 프레임율 가변화를 전제로 한 전자셔터 조정과 ADC 이득 조정을 통해서 노출 정도를 제어하게 된다.

측광방식

AE 알고리즘에서는 현재 프레임의 노출치(EV: Exposure Value)와 목표 노출치를 비교하여 다음 프레임에서의 노출 정도를 조정한다. 측광방식은 다분할측광, 중앙중점측광, 부분측광 등이 보편적으로 사용되며, 사용자가 임의의 측광방식을 선택할 수 있도록 되어있다.

최근에는 얼굴인식 기능이 탑재된 DSC등이 보급되고 있으나, 얼굴 영역을 중심으로 측광하는 것은 피부색에 따른 편차 때문에 바람직한 접근방식이 아니므로 전통적인 측광방식이 여전히 주도적으로 사용되고 있다. 좀 더 현실적인 접근방식으로 현재 프레임을 겹치지 않는 다수의 영역으로 분할한 후에, 이들의 노출치에 대한 가중합에 의해서 측광하는 방식들도 제안되고 있다.

측광방식에 따라서 화질 차이는 분명히 발생하겠지만, 이는 각 사용자의 주관적 기준에 의해서 평가가 달라지기 때문에 AE 알고리즘은 특정 측광방식에 의존하지 않고, 임의의 노출치로부터 목표 노출치를 단시간 내에 만족시키되, 급격한 노출치 변동으로 인한 헌팅을 야기하지 않는 것을 주된 목표로 삼는다. 따라서 본고에서의 측광방식은 현재 프레임 전체에서의 평균 밝기값을 취득하는 가장 단순한 방법을 취한다.

S/W 기반 AE 제어 시스템 구조

그림 1은 S/W 기반의 AE 제어 시스템의 블록도를 나타낸다. AE ODM (Optical Detection Module)은 현재 프레임에 대한 노출치를 이미지 센서 데이터로부터 계산한 후에 CPU에 인터럽트를 걸거나, 혹은 폴링방식으로 CPU가 유효한 데이터가 준비될 때까지 지속적으로 AE ODM을 읽는 방식으로 전달한다. CPU는 이 값을 설정된 목표 노출치와 비교하여 최적의 노출시간을 조정하는 AE 알고리즘을 구동한다. 이 때 CPU는 모든 연산을 수직동기 구간 내에 완료해야하기 때문에 연산량이 많은 고급 AE 알고리즘을 실행하기에는 무리가 따를 수 있다. 또한 CPU는 AE 알고리즘뿐만 아니라, AWB 알고리즘까지도 수행해야하기 때문에 AE/AWB 알고리즘의 효율성은 비용과 성능 면에서 매우 중요한 이슈가 되고 있다.



 그림 1. S/W 기반 AE 제어 시스템 블록도

그림 2는 이미지 센서에서 AE ODM이 동작하는 구간과 AE 알고리즘이 수행되는 구간을 도시한다. VD 신호는 유효한 영상 데이터가 존재하는 구간을 나타내며, 이 신호가 0인 구간, 즉 수직동기 구간이 AE 알고리즘이 구동되는 구간이 된다. 그림의 P1구간에서 이미지 센서가 (N-1)번째 프레임에 대한 영상 데이터를 생성하는 동안, 이미지 센서로부터 (N-2)번째 프레임에 대한 영상 데이터가 출력된다. 따라서 (N-1)번째 프레임에 대한 노출치가 계산되어 확보되는 시점은 P3구간과 P4구간이 만나는 시점이 되며, P4 구간에서 새로운 노출치를 계산해야 한다. 그렇지만 이렇게 조정된 노출치에 의해서 조정을 받는 프레임은 N번째 아니라 (N1)번째가 되므로, 잠재적으로 AE 헌팅을 야기하는 원인으로 할 수 있다.


그림 2. 노출시점과 데이터 출력 시점에 대한 타이밍도

LUT기반 AE 알고리즘

AE 알고리즘을 수행하기에 충분한 시간이 주어지지 않기 때문에, 짧은 시간 동안에 동작이 가능하도록 LUT(Look-up Table) 기반으로 AE 알고리즘이 구현된다. 이 방식에서는 조리개 크기(aperture size), 전자셔터에 의한 노출시간, ADC 이득 등을 조합하여 노출 정도가 점진적으로 증가하거나 감소하도록 실험적으로 결정된 도표를 구성하는 것으로부터 시작한다. 따라서 현재 영상을 취득하기 위해서 설정된 조리개 크기, 전자셔터 노출시간, ADC 이득 등은 이 도표에 대한 주소로 사용된다. 만약 노출치가 목표 노출치에 미달일 경우 주소를 증가시키며, 초과일 경우에는 주소를 감소시키는 방식으로 노출치를 조정한다. 그림 3은 LUT의 일부를 나타낸다. 이들은 노출치를 증가시키거나 감소시키기 위해서 서로 다른 2종류의 도표를 사용했으며, 실제로도 이렇게 2종류의 도표를 적용하는 방식이 보편적으로 사용된다.


그림 3. 노출치 조정을 위한 LUT의 일례

H/W 기반 AE 제어 시스템 구조

그림 4는 H/W 기반 AE 제어 시스템의 구조를 도시한다. 외부 호스트 인터페이스로 I2C를 사용하여, 목표 노출치를 나타내는 AE_EV1, 수직동
기 구간을 포함하여 한 프레임이 몇 라인으로 구성되어있는 지를 나타내는 전체 라인수 N, 노출시간을 증가시키기 위해서 프레임율을 조절할 수 있는 범위를 R, ADC 이득의 조절 범위 [AGC_min, AGC_max] 등을 파라미터화 했기 때문에 사용자가 목적에 맞도록 재설정하는 것이 가능하다. 변수 R이 3일 경우에는, 프레임의 경계를 3번 넘어서 노출시간을 조정한다는 의미이므로, 프레임율은 1/4까지 줄어들게 된다. 즉 정상적인 프레임율이 30Hz인 CIS라면 프레임율은 7.5Hz까지 줄어들게 된다. 7.5Hz의 프레임율은 통상적으로 받아들여지는 최저 프레임율에 근접한다.



그림 4. H/W 기반 AE 제어 시스템 블록도

AE ODM은 현재 프레임에서의 노출치가 AE_EV0, 노출시간이 AE_INT0, 목표노출치가 AE_EV1이라고 할 때, 다음 프레임에 대한 노출시간 AE_INT1을 식 (1)과 같이 계산하여 AE 제어기에 전달한다. 이는 이미지 센서에 입사되는 광량은 노출시간에 비례한다는 가정을 전제로 한다. 

                
AE_INT1 =  AE_EV0          (1)

AE 제어기는 AE ODM에서 입력된 AE_INT1을 토대로 이미지 센서에 적용할 ADC 이득을 증감시키고, 전자셔터를 제어하여 노출시간을 증감시킨다. AE 제어기는 이미지 센서에 실제로 적용한 노출시간 AE_INT0을 AE ODM으로 보내준다. 대부분의 경우 AE 제어기는 AE ODM에서 요구한 노출시간을 만족시키지만, 저조도 환경에서 요구한 노출시간에 미달하는 경우가 발생하게 된다.

AE 제어기는 노출시간의 조정만으로 목표 노출치를 만족시키지 못할 경우에는 ADC 이득을 증가시킨다. ADC 이득을 통해서 노출치를 조정할 경우, 노출 시간은 허용 가능한 최대시간으로 고정되어야 한다. 이 상태에서는 오로지 ADC 이득을 증가시키거나 감소시킴으로써 노출치를 변동시킬 수 있다. 만약 노출시간 만을 조정하는 상태로 돌아가려면 현재 ADC 이득이 사용자가 지정한 AGC_min과 같을 경우에만 가능하다. ADC 이득에 따른 응답은 그림 5와 같은 로그스케일로 비례하는 특성을 가지며, 구체적인 속성은 이미지 센서마다 차이가 있다. ADC 이득의 증가폭은 현재 ADC 이득 값에 의해서 가변적으로 결정된다.

즉 96이상에서는 2씩, 64이상 95미만에서는 4씩, 32이상 63미만에서는 8씩, 31 미만에서는 15씩 증가한다. ADC 이득이 감소할 경우에는 증가폭 결정과 같은 방식으로 감소한다.


그림 5. ADC 이득 응답 특성

AE 제어기의 하드웨어 구조

AE 제어기에서는 4개의 신호가 출력된다. AE_AG는 ADC 이득을, AE_ERS는 전자셔터가 발생해야하는 라인 인덱스를, AE_FRS는 건너 뛰어야하는 프레임 수를, AE_INT0은 다음 프레임에 실질적으로 적용된 노출시간을 각각 나타낸다. 이 중에서 AE_INT0은 식(1)을 계산하는 AE_ODM 모듈로 입력되고, 나머지 신호 3개는 CIS에 직접 연결된다. 이 신호들은 AE_ODM으로부터 입력되는 AE_INT1과 사용자가 설정한 파라미터 N, R로부터 식(2)와 같이 결정된다.

AE_FRS =   N      (2)
AE_ERS = min(N,AE_INT1-AE_FRS쪾N)
AE_INT0 = AE_FRS쪾N AE_ERS

AE 제어기는 FSM과 출력신호를 생성하는 레지스터로 구분되어 설계된다. FSM은 3개의 신호 R, start, agc_on에 의해서 동작한다. R은 사용자가 입력한 프레임율 파라미터, start 신호는 AE_ODM의 동작이 완료되는 시점에서 발생하는 구동신호, agc_on은 동작모드를 나타내는 내부 레지스터 신호이다.

AE 제어 시스템은 2가지 모드로 동작하는데, 이는 노출시간조정 모드와 ADC 이득 조정 모드이다.
그림 6은 2개의 동작모드 간의 변환 조건을 나타낸다. AE_INT0은 식(2)의 연산을 통해서 최종적으로 결정된 다음 프레임에 대한 노출시간이고, AE_INT1은 AE ODM에서 입력된 목표 노출치를 만족하기 위한 목표 노출시간이다. 그러나 AE_INT0가 AE_INT1보다 작아서 노출시간 조정으로는 목표 노출치를 만족하지 못하므로 ADC 이득 조정 모드로 전환하게 된다.


그림 6. FSM에 의한 동작모드의 변환

ADC 이득 조정 모드에서는 사용자 설정 변수인 AGC_min과 AGC_max 사이에서 ADC 이득을 증가하거나 감소시켜서 노출치를 조정한다. 이 모드에서 AE_INT0가 AE_INT1보다 크면, ADC 이득을 증가시키고 그렇지 않으면 감소시킨다. 감소된 ADC 이득이 AGC_min과 같아지면 노출시간 조정 모드로 전환한다.


그림 7. 제안한 AE 제어기의 FSM


그림 7은 FSM의 상세한 상태도를 나타낸다. 노출시간 조정 모드일 경우 state s0에서 출력 신호를 생성하는 레지스터들은 다음과 같이 초기화된다.

AE_ERS = AE_INT1;
AE_FRS = 0;
AE_INT0 = 0;


state s1부터 state s3는 순차적으로 진행되며, 각 state에서 AE_ERS > N이면 다음과 같이 레지스터 값이 변경한다.

AE_ERS = AE_INT1 - N;
AE_FRS = AE_FRS 1;
AE_INT0 = AE_INT0 N;


state s4에서는 노출시간 조정치를 최종 확장한다. 이 state에서도 AE_ERS > N이면, 다음과 같이 조정하여 출력신호를 확정한다.

AE_ERS = N;
AE_INT0 = AE_INT0 N;


프레임율을 조정하는 사용자 변수인 R은 상태도의 흐름에 영향을 준다. 최대값인 3으로 설정된 경우에는 state s1부터 state s3까지 진행되어 노출시간은 최대 4N까지 지정할 수 있지만, 최소값인 0인 경우에는 이러한 state들을 진행하지 않기 때문에 최대 N까지 지정할 수 있게 된다.

구현 결과

AE에 의한 효과는 저조도 영상에서 부각되는데, 그림 8은 다양한 조도 하에서 촬상한 영상을 나타내며, 상단부터 하단까지의 조도는 5 lux, 27 lux, 560 lux에 각각 해당한다. 좌측은 AE를 적용한 영상을 나타내고, 우측은 적용하지 않은 영상을 나타낸다.


그림 7]. 제안한 AE 제어기의 FSM

그림에서 상단과 중단의 영상들이 전반적으로 푸른색으로 나타나는 이유는 색온도 조절이 되지 않았기 때문이다. 일반적으로 색온도 조절은 자동 노출 조정이 안정화되었을 때 수행된다. 따라서 상단과 중단의 영상은 자동 노출 조정에 의해서 목표 노출치에 아직 도달하지 않았으므로 색온도 조정이 적절하게 수반되지 않은 상태로 남게 된다.

제안한 AE 제어기는 H/W로 구현되었기 때문에 CPU보다 비용 효율적이며, 중요한 파라미터를 외부에서 재설정하도록 설계되었기 때문에 다양한 이미지 센서에 범용으로 적용하는 것이 가능하다. 또한 노출의 변화에 따른 대응도 최대 6 프레임 이내에 이루어지는 것을 확인했다.

TSMC 0.18um 공정 라이브러리에 의거하여 합성한 결과, 100 MHz 동작 주파수에서 그림 7에 나타난 AE 제어기의 등가 NAND 게이트 수는 1,095개에 해당한다. 제안한 AE 제어기는 AE ODM과 연동해서 동작하게 되는데, VGA 영상에 대응하는 AE ODM의 등가 게이트 수는 5,981개에 해당하므로, AE 구현을 위한 전체 하드웨어의 게이트 수는 7,076가 된다.

기존의 CPU 기반 AE 제어기에서 많이 사용되는 M8051이나 ARM7과 같은 프로세서의 등가 NAND 게이트 수가 10K에서 30K에 이르고, 50KB 용량을 가지는 ROM의 등가 게이트 수가 200K 정도이기 때문에 CPU 기반 AE 제어기의 하드웨어 규모는 최소한 200K 이상이 된다. 메모리 용량을 줄이거나 사용하는 ROM 구현 방식에 따라서 어느 정도의 차이가 있기는 하겠지만, 제안한 AE 제어기는 CPU 기반의 AE 제어 방식에 비해서 하드웨어 비용을 1/20 이하로 경감시킬 수 있게 된다.

결론

제안한 AE 제어기는 H/W로 구현되었기 때문에 CPU보다 비용 효율적이며, 중요한 파라미터를 외부에서 재설정하도록 설계되었기 때문에 다양한 이미지 센서에 범용으로 적용하는 것이 가능하다. 또한 노출의 변화에 따른 대응도 헌팅 없이 최대 6 프레임 이내에 이루어진다. 향후 ADC 이득을 적용하는 부분을 구간선형방식으로 모델링하여 적용할 예정이며, LED를 플래쉬로 사용하는 경우에 대응하도록 FSM 구조를 수정할 예정이다.