'multi shot'에 해당되는 글 1건

  1. 2014.10.16 [머신비전]노이즈가 최소화 된 영상을 촬영하는 방법_Calibration (3)

[카메라 기술 백서 #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의 광량을 저장해서 사용한다는 의미인가요?
    자세한 설명을 부탁드립니다.