4.12. ISP 파이프라인¶
이미지 신호 처리기(image signal processor, ISP) 는 센서에서 나온 원시 픽셀 값을 완성된 색상 이미지로 변환하는 하드웨어 파이프라인입니다. 센서 내 픽셀 단위 보정 이 이 파이프라인의 첫 번째 단계입니다. 그 단계들이 실행된 후, 나머지 파이프라인은 모든 프레임에 대해 고정된 순서로 색상 처리와 출력 포맷팅을 수행합니다.
ISP의 색상 처리 및 출력 단계. 파이프라인은 다음 단계가 시작되기 전에 각 단계를 프레임의 모든 픽셀에 대해 실행합니다.¶
4.12.1. 단계들¶
각 단계는 차례로 하나의 잘 정의된 변환을 적용합니다. 순서가 중요한데 – 이후 단계는 이전 단계가 이미 실행되었다고 가정하며, 일부 단계는 이전 프레임의 출력을 입력으로 받기도 합니다.
통계 추출 은 보정된 Bayer 프레임에서 영역별 평균 밝기와 채널별 합계를 측정합니다. 이 수치는 자동 노출, 자동 게인, 자동 화이트 밸런스 제어 루프에 입력되며, 이 루프들은 다음 프레임을 위해 센서 설정을 업데이트합니다.
자동 화이트 밸런스 게인 은 각 Bayer 픽셀을 색상별 배율로 스케일링하여 – 빨강 픽셀은 R 게인으로, 초록 픽셀은 G 게인으로, 파랑 픽셀은 B 게인으로 – 장면의 흰색 기준을 중립적인 회색 쪽으로 밀어붙여 기록된 색상이 눈으로 본 것처럼 보이게 합니다. 이 배율은 이전 프레임의 AWB 통계에서 나옵니다.
디베이어링 은 Bayer 모자이크로부터 모든 픽셀에서 누락된 두 색상 채널을 재구성하여, 픽셀당 한 채널인 원시 데이터를 3채널 RGB로 변환합니다. ( 디베이어링(Debayering) 참조.) 이 단계 이후의 모든 처리는 Bayer 모자이크가 아닌 RGB 픽셀에 대해 실행됩니다.
색상 행렬 보정(CCM) 은 각 RGB 픽셀에 3x3 행렬 곱셈을 적용하여 센서의 고유한 빨강-초록-파랑 응답을 표준 색 공간으로 매핑합니다. 각 센서의 필터는 고유한 스펙트럼 응답을 가지는데, 이는 어떤 표준이 기대하는 것과도 정확히 일치하지 않습니다. 이 행렬은 “센서 RGB”를 “표준 RGB”로 변환하는 센서별 보정 변환입니다.
감마 보정 은 각 채널에 비선형 곡선을 적용하여 선형 센서 신호를 지각에 맞춘 인코딩으로 압축합니다. 눈은 밝은 톤 간의 차이보다 어두운 톤 간의 차이를 더 잘 알아차리므로, 비트 예산을 어두운 쪽에 더 많이 할애하는 인코딩이 주어진 비트 심도에서 더 많은 가시적 디테일을 포착합니다.
이미지 스케일링 은 프레임을 센서의 고유 해상도에서 목표 출력 해상도로 크기 조정합니다. 대부분의 애플리케이션은 센서의 전체 픽셀 수보다 낮은 해상도로 실행되며, 축소 스케일링은 이후의 모든 처리에 대한 대역폭과 메모리 부담을 모두 줄여줍니다.
이미지 크로핑 은 스케일링된 프레임의 부분 사각형을 추출하고 그 바깥의 픽셀을 버립니다. 관심 영역을 캡처하거나, 특정 종횡비를 맞추거나, 애플리케이션에 필요 없는 테두리를 제거하는 데 사용됩니다.
픽셀 패킹 은 채널별 내부 표현(일반적으로 채널당 10비트 또는 12비트)을 선택된 출력 포맷으로 변환하고 결과를 RAM에 씁니다.
4.12.2. 제어 루프 피드백¶
1단계와 2단계는 여러 프레임에 걸친 제어 루프를 형성합니다. 프레임 N에서 추출된 통계는 그 프레임에서 장면이 얼마나 밝았는지와 색상 밸런스가 어떠했는지를 센서에 알려줍니다. 자동 노출, 자동 게인, 자동 화이트 밸런스 컨트롤러는 그 수치를 사용하여 프레임 N+1을 위한 새로운 노출, 게인, 화이트 밸런스 레지스터 값을 선택합니다. 새 값은 다음 프레임의 판독 시 적용되고, 새 프레임의 통계가 돌아오면서 루프가 닫힙니다.
변하지 않는 장면의 경우, 루프는 몇 프레임 안에 수렴하여 일정한 설정에 머뭅니다. 밝기나 색조가 변하는 장면 – 예를 들어 카메라가 실내에서 햇빛이 비치는 창으로 패닝하는 경우 – 의 경우, 루프는 여러 프레임에 걸쳐 변화를 추적하며, 사용자는 새로운 안정 상태로 가는 도중에 잠깐의 밝기 또는 색상 드리프트를 보게 됩니다.
4.12.3. ISP가 실행되는 곳¶
두 가지 배치가 일반적입니다.
센서 내 ISP 는 전체 파이프라인을 센서 칩 내부에서 실행하고 완성된 RGB 이미지를 출력합니다. MCU는 그 결과를 수집하기만 합니다.
센서 외 ISP 는 호스트 MCU나 SoC에 위치합니다. 센서는 원시 Bayer를 출력하고, MCU의 실리콘(또는 드라이버 코드)이 완성된 프레임을 사용자 코드에 넘기기 전에 파이프라인을 실행합니다.
이 분할은 센서가 사용자에게 직접 넘길 수 있는 출력 포맷에 영향을 줍니다. 완전한 온칩 ISP를 갖춘 센서는 사용자가 칩이 지원하는 어떤 완성 포맷이든 선택할 수 있게 합니다. ISP가 없는 센서는 Bayer만 출력하며, 포맷 변환은 MCU 실리콘이나 소프트웨어에서 일어납니다.