4.8. 센서 내장 보정

픽셀 셀의 원시 출력은 아직 사용할 준비가 되어 있지 않습니다. 데이터가 센서를 떠나기 전에, 센서가 도중에 끌어들이는 결함을 처리하기 위해 일부는 칩의 실리콘에서, 일부는 칩을 프로그래밍하는 드라이버 코드에서 몇 가지 보정이 적용됩니다. 이들은 매 프레임마다 고정된 순서로 실행됩니다. 먼저 열 고정 패턴 노이즈 (FPN) 트림, 다음으로 블랙 레벨 차감, 다음으로 결함 픽셀 보정, 마지막으로 렌즈 셰이딩 보정 순입니다. 사용자 코드에 도달하는 이미지는 이미 이 모든 단계를 거친 것이므로, 각 단계가 무슨 일을 하는지 아는 것이 중요합니다.

4.8.1. 열 FPN 보정

센서의 각 열은 자체 증폭기와 열 ADC를 가지고 있으며, 이들 사이의 작은 제조 편차로 인해 모든 열이 이웃 열과 약간 다르게 읽힙니다. 보정하지 않으면 이 고정 패턴 이 출력에 희미한 수직 줄무늬로 나타납니다. 이 줄무늬는 장면이 아니라 실리콘 자체에서 비롯되므로 프레임이 바뀌어도 그 자리에 그대로 남습니다. 센서는 공장에서 열별 오프셋과 게인 트림을 측정하여 보정 ROM에 저장하고, 이후 어떤 보정이 실행되기 전에 매 판독마다 이를 적용합니다. 이를 가장 먼저 수행하면 파이프라인의 나머지 단계가 모든 열이 동일하게 동작한다고 가정할 수 있으며, 여기에는 다음 단계인 블랙 레벨 보정이 사용하는 다크 기준 픽셀도 포함됩니다.

4.8.2. 블랙 레벨 보정

ADC의 영점, 즉 빈 포토다이오드에 대응해야 할 디지털 카운트는 완벽하게 안정적이지 않습니다. 이 값은 온도와 공급 전압 변동에 따라 드리프트하며, 픽셀마다도 약간씩 다릅니다. 보정하지 않으면 완벽하게 어두운 프레임도 0으로 읽히지 않고, 각 픽셀이 작은 양의 다크 오프셋 을 지니게 됩니다.

표준적인 해결 방법은 빛이 전혀 닿지 않도록 금속으로 물리적으로 가려진 행이나 열을 센서 가장자리에 포함하는 것입니다. 이들의 디지털 카운트는 현재 동작 조건에서의 진짜 다크 기준값을 제공합니다. 센서는 매 프레임마다 이 가려진 픽셀들을 읽어 행 또는 열별로 평균을 내고, 그 평균을 다른 모든 픽셀에서 차감합니다. 그러면 빛을 받는 픽셀은 온도나 공급 전압 드리프트와 무관하게, 빛이 닿지 않은 포토다이오드에 대해 0 카운트로 나옵니다.

4.8.3. 결함 픽셀 보정

어떤 센서에서든 적은 비율의 픽셀은 결함(defective) 이 있어, 빛이 얼마나 닿든 상관없이 일정한 값(높게 고착되거나 낮게 고착됨)을 읽습니다. 일부 결함은 제조 편차에서 비롯되며, 더 많은 결함이 센서의 수명 동안 서서히 누적됩니다(장시간 동작 중의 우주선 충돌이 흔한 원인입니다).

최신 센서는 작은 공간 필터로 이를 즉석에서 처리합니다. 매 프레임마다 각 픽셀은 같은 색상의 이웃 픽셀과 비교되며, 국소 중앙값에서 충분히 벗어나 비현실적인 픽셀은 그 이웃들로부터 유도된 값으로 대체됩니다. 이 필터는 센서별 보정된 불량 픽셀 맵 없이도 공장 결함과 나중에 발생한 결함을 모두 잡아내며, 결함은 출력에서 보이지 않습니다.

4.8.4. 렌즈 셰이딩 보정

cos⁴ 감소 와 렌즈 하우징으로 인한 기계적 비네팅이 결합되면, 보정되지 않은 모든 프레임에 눈에 띄는 모서리 어두워짐이 생깁니다. 센서의 렌즈 셰이딩 보정 (LSC) 하드웨어는 각 픽셀에 프레임 내 위치에 따라 달라지는 게인을 곱하여 이를 보상합니다. 중심에서는 1.0이고, 측정된 감소 곡선의 역수를 따르도록 모서리로 갈수록 부드럽게 증가합니다.

센서는 곱셈기 하드웨어를 제공하지만, 게인 맵 자체는 MCU의 책임입니다. 드라이버는 시작 시 이 맵을 센서의 LSC 레지스터에 기록하는데, 드라이버가 저장한 보정값에서 가져오거나 평평한 기준 타깃에 대한 새로운 측정으로부터 가져옵니다. 일부 센서는 온칩 레지스터가 담을 수 있도록 이 맵을 작은 다항식 계수 집합으로 압축합니다.

LSC는 렌즈에 의존합니다. 렌즈를 교체하면 감소 곡선이 달라지므로, 한 렌즈에 맞춰 보정된 LSC 맵은 다른 렌즈와 맞지 않습니다. 잘못 적용된 맵은 어두운 모서리(과소 보정)나 밝은 모서리 얼룩(과대 보정)으로 나타납니다.