본문 바로가기
  • 생생한 머신비전 지식과 이야기를 담아낸 Encyclopedia of Machine vision
머신비전 기술 백서/카메라

[머신비전]노이즈가 최소화 된 영상을 촬영하는 방법_Calibration

by 앤비젼

[카메라 기술 백서 #4]머신비전에서 노이즈가 최소화 된 영상을 촬영하는 방법_Calibration

 

  앞서 카메라에서 발생하는 노이즈에 대해 살펴 보았다. 노이즈는 그런 이유로 그렇게 발생한다는 것은 알겠는데 어떻게 노이즈를 제거하는 가에 대해서는 이번 포스팅에서 다루겠다. 이번 포스팅을 읽기에 앞서 먼저 지난 포스팅에서 설명한 노이즈 종류를 살펴보자.(아래 글 제목 클릭)

 

[머신비전]영상 품질을 결정하는 '카메라 노이즈' 파헤치기

 

 

 NOISE

 Dark

 White

 Fixed Pattern Noise

 Dark FPN

 Photo response non-uniformity

 Temporal Noise

 Dark random noise

 Photon shot noise

 

먼저 고정된 형태를 가지고 있는 노이즈인 Dark FPN과 Photo response non-uniformity(PRNU)는 Camera Calibration을 통해 제거 가능하다. 

 

 

  위측의 그래프는 입사되는 광량에 대비한 A, B, C 픽셀 각각의 출력을 나타낸 그래프 이다. 먼저 Pixel B는 사용자가 원하는 반응도를 가지는 Pixel이며 빛이 없을 때 0값을 출력하고 빛이 강해짐에 따라 사용자가 원하는 적당한 출력을 가진다. 그러나 Pixel A는 빛이 없음에도 일정량의 출력을 가지고 있고 Pixel C는 더 많은 출력 값을 가진다. 그리고 빛의 양이 증가함에 따라 Pixel A는 Pixel B에 비해 더 빠르게 출력 값이 증가하고 Pixel C는 Pixel B에 비해 더 느리게 출력 값이 증가한다. 빛이 없을 때 나타나는 출력 값은 Dark FPN이며 빛에 대해 서로 다른 반응을 보이는 것은 PRNU라는 것은 이미 알고 있으리라 생각한다. 이런 Dark FPN과 PRNU를 Calibration을 통해 제거하는 방법을 설명하기 위해 위의 그래프를 수식으로 비유해 보면 아래처럼 표현할 수 있다. +값으로 표기된 부분은 Offset dark signal이며 x값으로 표기된 부분은 반응도 즉 감도라 할 수 있다.

 

Pixel A : output=2.5 x Illumination +15

Pixel B : output=2 x Illumination +0

Pixel C : output=1.5 x Illumination +25

 

  결론부터 말하면 Pixel A와 Pixel C의 수식을 Pixel B과 같이 변경하는 것이 Camera의 Calibration 이다. Pixel A에 15를 빼고 2/2.5를 곱하면 Pixel B와 같은 수식을 얻을 수 있다는 것은 쉽게 계산 가능할 것이다. 마찬가지로 Pixel C에는 25를 빼고 2/1.5를 곱함으로 Pixel B와 같은 수식을 얻을 수 있다. 여기서 빼는 값은 카메라 calibration에서 FPN coefficient 라 부르고 곱하는 값은 PRNU coefficient라 부른다. 그리고 수식을 변화 시키는 과정에서 보듯 FPN coefficient를 PRNU coefficient보다 먼저 적용시켜야 정상적으로 수식 변환이 일어난다. 

 종종 Camera의 Calibration에 대해 카메라의 출력 값을 변경시킴으로 왜곡된 결과가 나올 것이라는 잘못된 선입견을 가지고 있는 분들이 있으나 이는 물리적으로 발생할 수 밖에 없는 각 Pixel의 반응도를 일관성 있게 조정하는 작업으로 카메라의 성능 향상에 분명한 도움을 준다.

 

  고정된 패턴 형태로 발생하는 노이즈는 Calibration으로 제거가 가능하나 시간에 따라 달라지는 랜덤 한 노이즈는 사실상 user level에서 제거하기는 쉽지 않다. 여기서는 가장 간단하게 제거할 수 있는 방법을 소개하겠다. 과거 포스팅에서 설명한대로 Temporal noise는 양자화된 광자의 Random 성에 의해 발생하므로 완전히 제거하는 것은 불가능하며 감소시키는 방법을 사용해야 한다. N개의 광자를 받을 때 발생하는 노이즈의 편차는 sqrt(N)이 되며 SNR 공식에 따라 SNR은 N / sqrt(N) 이 된다. SNR을 늘리기 위해서는 N값을 무한정 높여야 하며 N 값을 높인다는 것은 쉽게 말해 많은 빛을 받아 들인다는 것이다. 그러나 Pixel은 제한된 공간을 가지고 있으므로 User가 하나의 Pixel이 무한정 많은 빛을 받을 수 있도록 하는 것은 센서를 변경하지 않고는 불가능하다. User가 할 수 있는 방법은 한정된 공간을 가진 Pixel을 수번 반복하여 사용함으로써 더 많은 N 값을 확보할 수 있다. 그림으로 쉽게 설명해 보면. 아래와 같이 강수량 측정을 위한 비커를 1사용함으로써 발생하는 오차를 줄이기 위해 동일한 비커를 8개 사용하여 측정하는 것이다. 

 

 

 

 

  이런 방법을 통해 user는 N의 값을 8배로 늘릴 수 있으며 결과적으로 SNR 값은 2.8배(sqrt(8)) 만큼 증가하게 된다. 이런 방법은 카메라 제조사에서도 사용하고 있으며 Multi-line을 이용한 line scan에서 감도를 증가시키지 않고 노이즈를 향상하는 방법으로 사용하거나 Area scan에서 Multi shot 기능을 통해 구현된다.

 

copyright 2014 ()앤비젼 Inc. all rights reserved

 게시글을 무단으로 복사해 게재할 경우 , 형사상의 불이익이 있을  있습니다.

 

 필진 소개

 

 


목한상, Kyle Mok

(앤비젼 Product Engineer/카메라 담당)


사진가가 되고 싶었던... 그래서 카메라와 함께 일하는...

카메라 담당 Product Engineer

 

 

댓글