[카메라 기술 백서 #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 기능을 통해 구현된다.



 필진 소개



목한상, Kyle Mok

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


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

카메라 담당 Product Engineer



Posted by 비전만

댓글을 달아 주세요

  1. 엠브이텍 연구소 2015.11.25 08:35  댓글주소  수정/삭제  댓글쓰기

    음.. 그럼 결론적으로 PRNU 노이즈 제거는 Multishot의 Mean을 구하는 개념인거나 마찬가지인것인데.. 멀티라인스캔 제외하고 에어리어카메라로 고속으로 무빙하는 오브젝트를 촬영하는 경우에 대해서는 적용이 안될 듯 싶은데 이것은 솔루션이 있나요?

    • Favicon of http://envision.kr BlogIcon 목한상 2015.11.25 16:49  댓글주소  수정/삭제

      먼저 용어 정리가 필요할 듯 합니다. PRNU 노이즈는 개별 pixel의 감도 차이라 할수 있고 Multishot을 통해 제거하는 노이즈는 시간에 따라 랜덤한 shot noise입니다.

      고속 무빙 오브젝트를 촬영시 랜덤하게 발생하는 shot noise제거에 관한 솔루션을 문의하신 것으로 보이기에 이에 대한 답변을 드립니다.

      만약 필요한 해상도가 4M (2048 x 2048)이라고 가정하면 영상을 16M (4096 x 4096)으로 동일 FOV를 촬영합니다. 그리고 각 4개 pixel을 Average 하는 방법을 사용하게 되면 비슷한 효과를 얻을 수 있을 것으로 생각됩니다.

      각 4개의 pixel의 합을 이용해서 4M로 출력하게 되면 4배 높은 감도를 얻을 수 있고(pixel binning과 같은 개념) 평균을 이용해서 4M로 출력하면 랜덤 노이즈에 대한 이득을 얻을 수 있습니다.

      그러나 일반적으로 고속 moving object 촬영시에는 노출시간이 필연적으로 짧아지고 경우에 따라서는 Gain을 사용해야 하는 경우도 있습니다. 위 방법 적용이전에 충분한 조명을 확보하는 것이 첫번째라 생각합니다.

  2. 넥스 2017.10.19 23:17  댓글주소  수정/삭제  댓글쓰기

    블로거님, 안녕하세요
    글을 잘 보고 많은 지식을 얻어갑니다!
    하나 여쭤보고 싶은 내용이 있는데요,
    1개의 고정된 Pixel을 반복 사용(위에서는 8번)하여 N값을 높힌다고 설명해 주셨는데,
    '반복 사용한다'라는 의미가 잘 이해가 가지 않아서요..
    Pixel을 reset하기 전에 8 time의 광량을 저장해서 사용한다는 의미인가요?
    자세한 설명을 부탁드립니다.

  [카메라 기술 백서 #3]비전 검사의 영상 품질을 결정하는 '카메라 노이즈' 파헤치기


  비전 검사는 영상을 촬영하고 이를 분석하는 과정을 거친다. 영상을 촬영한다는 말은 Analog 형태의 Object를 촬영하여 Digital의 gray level 값들로 표현한다고도 할 수 있다. 이런 과정에서 영상의 품질을 결정하는 대표적인 2가지 요소를 꼽을 수 있다. 첫째는 렌즈의 해상력이며 두 번째는 카메라의 노이즈 이다.


  렌즈의 해상력에 관해서는 다른 필진에게 맡겨두고 여기서는 카메라 측면만 살펴보겠다.

  

  노이즈는 2가지 측면으로 설명할 수 있다. 첫 번째는 50DN의 출력을 기대하는 광량이 센서로 입사되었는데 50DN이 아닌 다른 출력 값이 지속적으로 나오는 경우이며 두 번째는 동일한 광량이 반복적으로 입사하였지만 촬영할 때 마다 다른 출력을 가지는 경우이다. 쉽게 말해 아래 그림과 같이 입력되는 빛에 관계없이 불필요한 데이터가 추가된 상황이다.



  첫번째로 언급된 노이즈는 입력 값에 대비하여 지속적으로 다른 출력 값을 가지므로 고정된 형태의 노이즈 (Fixed pattern noise)라고 하며, 두 번째 언급된 노이즈는 시간에 따라 랜덤하게 발생하므로 Temporal noise라고 불리어 진다.

또 다른 측면으로 노이즈를 분류하면 빛이 있을 때(빛에 의해서) 나타나는 노이즈빛이 없을 때(빛과 관계 없이)나타나는 노이즈로 분류할 수 있다. 이를 표로 정리하면 아래와 같다.


 Noise

Dark

White

 Fixed Pattern Noise

Dark FPN

Photon Response Non-uniformity

 Temporal Noise

Dark Random Noise

Photon Shot Noise



실제 이미지 센서에서 발생하는 노이즈는 위의 표 외에도 다양한 원인과 형태로 발생하나 주요한 노이즈 측면만 설명하면 4가지로 요약할 수 있다.


아래의 그래프는 노이즈 발생 형태를 가정하고 모델링한 Data이다. X축은 입력되는 빛의 양, Y축은 출력되는 영상 Data의 밝기이다. 그리고 총 3개의 픽셀(Pixel1,2,3)에 일정량의 빛이 입사하였을 때 출력 값을 그래프에 나타내었다. 한눈에 보기에도 3개의 pixel은 입사되는 빛에 대비하여 출력되는 data가 제각각 임을 알 수 있다. 이런 노이즈에 대해 좀더 자세히 설명해 보겠다.


Dark Fixed Pattern Noise: 빛이 없는 상황에서 카메라는 0DN의 출력을 갖는 것이 정상적인 상황이다. 그러나 Pixel에 포함된 offset 값들에 의해 빛이 없는 상황에서도 0DN 이상의 출력을 가지거나 그 이하의 출력을 가지기도 한다. 물론 실제 0DN 이하 값은 0DN으로 출력된다. 그래프에서 입력되는 광량이 없는 상황에서도 Pixel1,2,3의 밝기가 차이를 보이는 것처럼 각 pixel은 고유의 offset 값을 가지게 된다. 이런 고유의 offset 값은 빛과 관계없이, 시간과 관계없이 일정하므로 이후에 Processing(Calibration)을 통해 제거 가능하다. 이런 Dark FPN은 sensor의 온도, 회로부의 offset current에 의해 발생한다.


Dark Random Noise: Dark 영역에서 Pixel3(녹색 그래프)은 완전히 일정한 값을 가지지 못하고 어느 정도의 Random성을 가지게 된다. 빛이 없는 환경에서도 image sensor에는 온도에 의해 일정량의 electron이 생성되며 이렇게 생성된 electron은 지속적으로 read out이 일어난다. 온도에 의해 electron이 생성되더라도 모든 pixel에 일정하게 발생하지 않으며 random 분포를 가지고 발생한다. 이는 Photo shot noise와 비슷한 형태가 되며 절대량은 미미한 수준이다. 그러나 dark random noise를 발생시키는 다른 요소는 그 영향력이 상당하다. 카메라가 영상을 촬영할 때 read out register의 reset과 read out이 반복되면서 지속적으로 read out이 일어난다. 이때 register reset이 완전히 일어나지 않아 남아있는 electron에 의해 시간적으로 일정하지 않은 노이즈가 발생하게 된다. 이런 노이즈는 이후 포스팅에서 설명하게 될 CDS (collimated double sampling)으로 어느 정도 억제가 가능하다.


Photon Response Non-uniformity: 그래프에서 Pixel1(Blue)과 Pixel3(Green)은 입력되는 빛의 양이 일정하게 증가하더라도 서로 다른 기울기의 출력 값을 가진다. 다른 관점으로 설명하면 Pixel1(Blue)은 Pixel3(Green)에 대비하여 빛에 대한 반응도가 낮은, 즉 감도가 떨어짐을 의미한다. PRNU(Photo Response Non-Uniformity) 노이즈는 이렇게 빛에 대해 pixel이 서로 다른 감도를 가짐을 나타낸다. PRNU 노이즈는 단순히 pixel 간의 gain이 다르다는 것을 의미하므로 pixel간 gain 조정(calibration)으로 제거 가능하다.


Photon Shot Noise: Photon shot noise는 빛(photon)이 이미지 센서의 각 픽셀에 일정하게 입사되지 않아서 발생하는 노이즈 이다. 비가 오는 날 동일한 크기의 비커 2개를 이용해 강수량을 측정한다고 가정해 보자. 일정시간 이후에 2개의 비커에는 정말 똑같은 양의 물이 담겨 있을까? 내리는 빗방울 하나 하나가 서로 관계성 없이 다 횟수 발생하는 확률이므로 포아송 분포에 따라 물의 양은 편차를 가질 것이다. 이미지 센서와 빛도 마찬가지로 일정하게 pixel에 광자가 들어오지 못해 발생하는 편차인 shot noise가 발생한다. Shot noise를 완전히 제거할 수 있는 방법은 없으며 shot noise의 분포를 줄여 영향력을 줄이는 방법을 사용한다. 빛이 많은 환경일수록(밝은 이미지 일수록) shot noise는 두드러지게 되며 실제 영상 촬영 시 주요한 노이즈 발생원인이 된다.


간단하게나마 노이즈 발생의 원인과 형태에 대해 살펴보았으나 자세한 설명을 생략하여 완전히 이해하는데 어려움이 있을 것이라 예상된다. 위의 노이즈 들이 어떤 원인에 의해서 발생하며 어떤 형태로 나타나며 대략 어떤 방법으로 제거하거나 경감시킬 수 있는지 정도로만 알아두자. 아마도 노이즈 제거에 관해서는 다음에 다시 포스팅 할 기회가 있을 것이다.



 필진 소개



목한상, Kyle Mok

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


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

카메라 담당 Product Engineer




Posted by 비전만

댓글을 달아 주세요

  1. 2014.11.19 00:53  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

  2. 식빵 2016.05.07 21:12  댓글주소  수정/삭제  댓글쓰기

    노이즈를 공부 하던 중 참고가 잘 되었어요.
    근데 궁금한 점은 50DN과 0DN이라고 하신 DN은 무슨 단위죠??
    다른 곳에서 아무리 찾아도 안나오네요...;;

    • Favicon of https://blog.envision.co.kr BlogIcon 비전만 2016.05.10 13:19 신고  댓글주소  수정/삭제

      안녕하세요~ DN은 카메라의 감도(Responsivity)의 단위입니다. 카메라의 감도는 ‘입력되는 광량에 대비하여 얼마나 높은 출력을 가지는가’ 라고 할 수 있습니다. 카메라 제조사는 일정 크기의 영역(가로x세로 1cm영역)에 일정 에너지의 빛(1nJ)이 들어 갔을 때의 출력(Digital number)을 '감도'라고 표기합니다. 이 블로그 내에도 카메라 감도에 대한 글이 있으니 참고하시기 바랍니다. http://blog.envision.co.kr/5
      감사합니다.