[카메라 기술 백서 #9] 카메라 너 때문이야! - 카메라 때문에 생기는 문제점 #2 젤로 현상(Rolling shutter) 현상


  오늘은 카메라 너 때문이야 시리즈 2탄… 1년에 하나씩 나오는 어벤저스 급 포스팅이 되겠다.(빈도만 따진다면…). 최근 스마트폰, 디지털 카메라에 탑재되고 있는 동영상 촬영 스펙은 UHD급 까지 발전하였으며 실제 촬영해 보면 충분히 뛰어난 화질로 상당한 만족감으로 주고 있다. 디지털 카메라로 촬영된 영상을 방송에 내보낼 정도로 commercial image sensor의 품질은 많이 좋아졌다.

머신 비전용 카메라를 다른 말로 표현하면 그냥 동영상 촬영이 가능한 카메라이다. 기계식 셔터 없이 노출을 제어하고 연속적으로 영상을 촬영할 수 있는 카메라 이다. 그렇다면 스마트폰, 디지털 카메라에서 사용하는 이미지 센서를 머신 비전에 사용할 수 없을까? 결론부터 말하면 부분적으로는 가능하다. 그리고 “부분적” 이라는 단어를 붙이게 된 가장 큰 이유는 Rolling shutter 때문이다.


 먼저 Rolling shutter는 CCD와는 전혀 관계없는 현상이며 CMOS 센서에서만 나타나는 현상이다. Rolling shutter를 설명하기 이전에 “shutter”의 의미를 먼저 한번 짚고 가 보자. shutter라는 단어는 분명 shut이라는 동사에서 파생된 단어일 것이다. 한글로 풀어 말하면 “무언가를 닫을 수 있도록 만드는 것” 정도가 되겠다. 그리고 이미지 센서 앞에서 닫는다는 것은 “문을 닫아 빛을 막아주는 장치” 정도로 해석 할 수 있지 않을까 생각한다. 여기까지는 형태적인 정의에 가까우며 기능적인 정의를 하면… 빛을 막아준다는 것은 “내가 원하는 시점의 빛만 얻을 수 있도록 해주는 장치” 라고 할 수도 있겠다. 

 이미지 센서는 빛에 반응하는 장치며 항상 빛을 받게 되면 charge를 생성하게 된다. 내가 원하든 원하지 않든 말이다. 그래서 내가 원하는 시점의 빛만 받아들이기 위해 아래 그림과 같은 방법을 사용하게 된다.


    시간의 흐름 중에서, 사용자는 ↔로 표시된 시점의 빛만 받고 싶어 한다. 즉 사용자가 원하는 시점의 빛만을 얻는 “shutter” 기능이 필요하다. 이미지 센서에서 셔터의 기능을 구현하는 방법은 아래 3가지 사실에 따른다. 


1. 빛을 받게 되면 항상 charge는 생성된다.

2. 필요 없는 구간의 charge는 pixel reset 기능을 통해 버린다.

3. 필요한 구간의 charge는 read out 하여 출력한다.


 종합하면 사용자가 원하는 노출시간이 시작하는 지점에서 pixel reset을 통해 내부의 charge를 비워 놓고 exposure time만큼 쌓인 charge는 read out하여 출력하는 것이다. 이 방법이 우리가 흔히 말하는 전자셔터의 구동 방식이다.


 다시 rolling shutter로 돌아가면…

 Rolling shutter는 이런 전자 셔터의 구동 방식인데, 문제는 이런 셔터 기능을 모든 pixel에 동시에 적용시키는 것이 어렵다는 것이다. 모든 pixel에 쌓여있는 charge를 원하는 시점에 동시에 read out 할 수 있으면 좋겠지만, 이 read out이라는게 그렇게 간단하지 않다. charge의 양을 측정하여 전압을 생성하고 이를 digital 신호로 변환하고 data 출력까지 해줘야 한다. 모든 pixel을 동시에 하는 것은 물론이며 한번에 1개의 pixel를 처리할 수밖에 없다. 일반적인 CMOS image sensor는 read out register라는 공간을 통해 한번에 한 줄의 row를 가져와 1pixel씩 처리한다. 여기서 1개의 row를 가져오는 시점이 exposure end가 이루어 지는 순간이 된다. 그러다 보니 각각의 row의 exposure end 타이밍이 차이가 나게 된다. 그림으로 표현하면 아래처럼 4번의 row line을 전송하는 과정이 된다.

   


 이렇게 각각의 row를 순차적으로 read out할 때 object가 움직이게 되면 어떻게 될까? 

좌측의 그림처럼 이미지 센서가 보고 있는 영역에서 파란색 세로 막대가 우측으로 평행 이동하고 이를 Rolling shutter로 촬영하게 되면 우측의 그림처럼 보이게 된다. 아래에 위치한 row부터 순차적으로 readout을 하고 각 row에서는 exposure time 동안 object가 움직인 만큼 image blur가 발생하게 된다.

 가장 쉽게 해당 현상을 볼 수 있는 방법은 차를 타고 이동하는 도중 창 밖의 가로수를 스마트폰으로 촬영해 보자. 가로수들이 비스듬히 누워있는 것을 볼 수 있을 것이다. 만약 동영상 촬영 중이라면 이 rolling shutter에 의해 발생하는 현상은 마치 젤리가 울렁거리고 있는 것처럼 보이며 이를 젤로 현상이라고 부른다.


 머신 비전에서는 이런 rolling shutter에 의한 row별 exposure timing 차이 현상을 해결하기 위해 CMOS image sensor를 특별한 형태로 제작한다. 각 pixel에 저장소를 하나씩 만들고 read out이 필요한 시점에 해당 저장소로 각 pixel의 charge data를 이동시킨다. 그리고 저장소에 있는 각 row를 꺼내어 가면서 read out을 진행하게 된다. 이런 방식을 Global shutter 방식이라고 하며 이 기능을 구현하기 위해서는 CMOS 이미지 센서의 pixel에 해당 기능을 수행하기 위한 transistor를 추가적으로 만들어야 한다. 이런 이유로 각 pixel의 크기가 작은 스마트폰 용 image sensor는 각 기능을 수행할 충분한 transistor를 탑재하지 못해 rolling shutter로 동작할 수 밖에 없는 것이다.


 결론은 pixel에 더 많은 transistor를 탑재하여 Global shutter를 구현해야 젤로 현상을 피할 수 있다는 것인 데 다른 방법이 없는 것은 아니다. 정확히 말하면 젤로 현상을 없애는 방법이 아닌 줄이는 방법이 있다.


 2개의, rolling shutter로 동작하는 CMOS 이미지 센서가 있다.

 

 해상도

 최대 fps

 1장 촬영 시 소요시간(read out time)

 CMOS 1

 1920 x 1080

 60fps

17ms

 CMOS 2

 1920 x 1080

 360fps

2.8ms


일반적으로 이미지 센서의 최대 frame rate의 역수는 이미지 1장을 촬영하여 read out하는 시간과 동일하다. 그리고 이 read out 시간 동안 가장 마지막 row와 가장 첫 row의 촬영 시간차가 발생하게 된다. 위에 예시로 든 2개의 이미지 센서로 움직이는 물체를 촬영하게 되면 아래의 그림처럼 보일 것이다. 분명 젤로 현상은 CMOS 2 센서로 촬영했을 때 줄어들 것이며 더 자연스러운 동영상으로 보일 것이다.


<좌측: CMOS 1 , 우측: CMOS 2>


다시 한번 결론 지으면 젤로 현상을 완전히 피하고 싶다면 Global shutter를 사용하고 Rolling shutter를 사용하면서라도 젤로 현상을 줄이고 싶다면 read out time이 짧은 이미지 센서를 선택하는 것이 방법이다. 그리고 read out time은 최대 frame rate을 통해 어느 정도 유추할 수 있다.


 필진 소개



목한상, Kyle Mok

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


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

카메라 담당 Product Engineer



Posted by 비전만

댓글을 달아 주세요

  1. 정민 2016.08.09 10:37  댓글주소  수정/삭제  댓글쓰기

    포스팅 항상 잘 보고 있습니다.
    이번 내요을 보고 하나 질문이 있어서 질문을 남깁니다.


    맨아래 그림과 설명을 보면
    젤로 현상을 줄이고 싶으면 read out time 이 짧은 이미지 센서를 선택해야 한다라는 설명이 있습니다.
    이 설명 대로라면 CMOS1 이 read out time이 더 짧은 센서로, 이미지가 1, 2번이 바뀐게 아닌가요?

    • 목한상 2016.08.09 13:03  댓글주소  수정/삭제

      먼저 관심을 가지고 봐 주셔서 감사드립니다.

      말씀해 주신 부분이 맞습니다. 위의 표는 1번 센서가 더 짧은 readout 시간을 가지는 것으로 되어 있으며 아래의 이미지는 2번 센서가 더 짧은 readout 시간을 가지는 것으로 되어 있네요.

      한번더 글을 상세히 검토하지 못해 발생한 오류이며 관심을 가지고 지적해 주셔서 정말 감사합니다.

      오류는 바로 수정하도록 하겠습니다.

  2. 김대광 2017.07.08 18:44  댓글주소  수정/삭제  댓글쓰기

    재미있게 잘 읽고 갑니다.
    앞으로는 자주 오도록 하겠습니다.

    좋은 글 감사 합니다.

  3. KT 2018.03.02 02:25  댓글주소  수정/삭제  댓글쓰기

    좋은 자료 감사합니다.

  4. knamsang 2019.07.19 12:35  댓글주소  수정/삭제  댓글쓰기

    안녕하세요, 궁금한 점이 있어 문의드립니다. CMOS 센서에서 read out register를 통해 한 줄의 row를 가져와 한 pixel을 처리한다 하였는데, 그럼 한 row 전체 pixel을 처리하려면 row당 column번의 read out이 필요한 것인가요? 아니면 한 row를 가져와 한 row 전체를 처리하는 것인가요?

[카메라 기술 백서 #9] 카메라 너 때문이야! - 카메라 때문에 생기는 문제점 #1 모아레(Moire) 현상


  정말 오랜만의 포스팅이다. 이전 작성한 날짜를 열어 보기 겁날 정도로 오래 지난 듯 하다. 더 이상은 블로그 담당자를 피해 도망 다닐 수 없기에

 이번 포스팅은 시리즈다. 카메라 너 때문이야!

사실 카메라의 장점 보다는 단점을 더 많이 봐야 하는 일을 하고 있어 이런 주제가 마음이 편하다.


 모아레 현상(Moire), 무아레라고 불리기도 하고 어쨌든 경우에 따라서는 많이 들어보기도 하고 생소할 수도 있는 단어이다. 

 모아레 현상은 카메라로 영상을 촬영 시 이미지 센서의 샘플링 주파수 성분과 촬영 대상의 주파수 성분으로 발생하는 간섭 현상이다. 이 포스팅에서는 모아레란 무엇인가 보다는 이미지 센서가 뭘 잘못했길래 모아레 현상을 사용자가 봐야 하는지에 대한 것에 중점을 두려 한다.


<Bayer pattern으로 인한 moire 샘플 현상>


 위의 샘플 영상은 트램플린(어릴적엔 퐁퐁이라 불렀던)을 반사 조명을 이용해 촬영하여 모아레 효과를 극적으로 보여준 예시 이다. 중앙 부분에 녹빛을 띄는 무늬와 붉은 빛을 띄는 무늬가 선명하게 보이나 실제로 보면 그런 무늬는 존재하지 않는다. 위의 샘플은 Color 카메라의 bayer pattern 때문에 생기는 모아레로 아래 그림으로 설명할 수 있다.


        

   <촬영 대상의 패턴>                           <카메라의 Bayer 패턴>


<실제 촬영시 대상과 Bayer pattern의 매칭>


 붉은 빛을 띄는 부분은 Bayer 패턴의 붉은색이 촬영대상의 밝은 부분에 매칭되고 녹빛을 띄는 부분은 Bayer 패턴의 녹색이 촬영대상의 밝은 부분에 매칭되어 의도하지 않은 모아레 현상을 경험하게 되었다.


 여기까지는 실생활에서 볼 수 있는 모아레 현상이며 미신 비전에서 경험하는 모아레는 또 다른 발생 요인이 있다. 대부분의 머신 비전 카메라는 Color 보다는 Mono카메라를 사용하게 된다. 그런데 Mono 카메라는 위와 같은 Bayer 패턴도 존재하지 않는데 어떤 이유로 모아레를 발생시킬까?


슬프게도 머신 비전에 사용하는 Mono 카메라의 pixel 구조는 아래 그림과 같은 형태로 되어 있다. 4개의 pixel을 표현한 그림이며 실제 빛을 받는 영역의 크기는 녹색으로 표시된 영역 수준 이다.

Pixel 하나의 면적에서 실제 빛을 받는 면적이 차지하는 비율을 Fill factor 라고 하며 여러 이유로 100%의 Fill factor를 가진 카메라를 머신 비전에 사용하는 것은 매우 어렵다. 




<Pixel 영역에서 빛을 받을 수 있는 영역>


 다시 말해 흔히 머신 비전 카메라에서 사용하는 Mono 이미지 센서는 Bayer 패턴을 사용하는 color 카메라와 비슷하게 중간중간 빛을 감지하지 못해 비어있는 부분이 존재한다는 의미이다. 그러므로 Mono 카메라를 사용해서 영상을 촬영하더라도 모아레 현상을 피할 수 없으며 만약 모아레 현상이 검사에 큰 영향을 미치고 있다면 Fill factor 100%의 image sensor 사용을 고려해야 한다. 


 필진 소개



목한상, Kyle Mok

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


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

카메라 담당 Product Engineer



Posted by 비전만

댓글을 달아 주세요

  1. 불멸창식 2018.04.16 16:33  댓글주소  수정/삭제  댓글쓰기

    예시사진이 이해하는데 너무 좋네요~

[카메라 기술 백서 #8]Camera의 pixel size와 sensor size


  이번 포스팅은 카메라의 pixel size와 sensor size에 대해 얘기해 보려 한다. 앞서 큰 pixel이 가지는 장점을 설명하였더니 무조건 큰 카메라가 좋다고 여기진 않을까 걱정되어, 렌즈를 포함한 시스템의 관점에서 센서 크기를 어떻게 선택해야 할지 살펴보겠다.


  아래에 1920 x 1080의 해상도를 가진 2개의 이미지 센서가 있다. 그리고 위에 그려진 원은 어떤 특정한 렌즈가 커버할 수 있는 이미지의 크기(image circle)이다. 우측의 센서는 해당 렌즈를 사용하여 문제없이 영상을 취득할 수 있으나 좌측의 센서는 그렇지 못하다. 즉 더 큰 렌즈를 써야 한다.


 센서의 크기와 렌즈의 image circle 크기와의 관계는 결국 돈 문제로 귀결된다. 내가 원하는 이미지는 1920x1080 해상도의 이미지이며 10um의 분해능을 가지고 촬영하고 싶다. 그리고 이런 시스템을 좀 더 저렴하고 좋게 꾸미고 싶다. 여기서 저렴하게는 렌즈를 작게 만들고 이에 맞게 작은 센서를 사용하면 된다. 좋은 화질은 센서를 크게 만들면 되고 이에 맞게 큰 렌즈를 사용하면 된다. 슬프지만 이게 현실이다. 앞서 포스팅에서 큰 pixel size가 가지는 장점을 충분히 설명했으리라 생각되므로 큰 센서가 가지는 좋은 화질에 대한 설명은 생략하고 오늘은 렌즈와의 관계만 보겠다.


광학 포스팅을 읽어 보신 분은 MTF가 가지는 의미에 대해 잘 이해하고 있으리라 생각된다. 


아래에는 3대의 렌즈를 통해 spot 조명을 촬영하였을 때 이미지 센서에 맺히는 모양을 그려 보았다. 푸른색으로 표현된 렌즈는 5~10 사이에 충분히 작게 spot을 위치 시킬 정도로 샤프한 영상을 보여줬다. 그리고 녹색으로 표현된 그래프는 2.5~10.5 사이에 spot이 퍼져 있다. 푸른색의 렌즈가 5um의 pixel size에 대응할 수 있는 렌즈라면 녹색은 10um pixel size에 대응할 수 있는 렌즈가 된다.


쉽게 말해서 spot을 5um pixel로 촬영할 것인가 10um pixel로 촬영할 것인가에 따라 렌즈의 성능을 결정 지어야 한다.


처음 설명했던 상황을 다시 가져와 살펴보면



2개의 시스템에서 고려해야 할 사항은 단순하지 않다.


최종 목표는 ‘저렴한 가격에 좋은 화질은 기본이며 1920 x 1080 해상도로 10um의 분해능을 가지고 촬영하고 싶다’이며 고려할 사항을 나열해 보면 아래와 같다.


 

센서크기

감도 

노이즈 

렌즈크기 

렌즈해상력

 시스템1

 크다

 높다

 적다

 크다

 낮다

 시스템2

 작다

 낮다

 많다

 작다

 높다


  여기에 가격을 더하고 배율 변화에 따른 전체 시스템 크기를 고려한다면 생각해야 할 부분이 너무 많아진다. 카메라 노이즈로 인한 검출력 변화와 렌즈 해상력으로 인한 검출력 변화를 정확히 예측하고 수치화 하여 필요한 수준의 화질을 결정 수 있으며 가격을 고려한 선택을 하면 좋겠지만 너무 어려운 작업이 되므로 앤비젼 담당자에게 전화해 적합한 렌즈와 카메라를 선정해 달라고 하는 것이 가장 쉬운 방법이 될 것이다. 


 필진 소개



목한상, Kyle Mok

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


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

카메라 담당 Product Engineer



Posted by 비전만

댓글을 달아 주세요

[카메라 기술 백서 #5]머신비전 카메라 선택과 Dynamic range의 활용


  Dynamic range라는 용어는 카메라의 Spec을 나타내는 용어 중 가장 오해가 많은 용어가 아닐까 생각된다. 일반적으로 Dynamic range라는 용어는 카메라 뿐만 아니라 음향, 디스플레이등 다른 분야에서도 사용되는 용어로 보통 DR이 넓다, DR이 좁다라는 말로 device의 성능을 평가하게 된다. 사실 이런 표현이 완전히 잘못된 것은 아니지만 우리는 조금 더 정확하게 용어를 사용할 필요가 있기에 이번 포스팅에서는 카메라의 Dynamic range의 의미와 이를 이용해 카메라를 선택하는 방법에 대해 알아보려 한다.

 먼저 질문을 하나 해보자 카메라의 Dynamic range가 좋으면 어떤 이득이 있을까요? 이에 대해 마음속으로 답변을 하나 해보고 다음 글을 읽어보자.

 예상되는 답변은 아래 3가지 정도이다.


1. DR이 높으면 밝은 이미지와 어두운 이미지를 동시에 촬영할 때 유리하다

2. DR이 높으면 비슷한 밝기의 이미지를 구분하는 것이 용이하다.

3. DR이 높으면 그냥 노이즈가 좋다더라~


3가지 모두 어느 정도는 맞는 말이다.


서론이 너무 길었으니 일단 Dynamic range의 정확한 의미에 대해 알아보자

아래 그래프에서 가로축은 입력되는 광량이며 세로축은 출력되는 signal의 크기이다.



그래프에서 볼 수 있듯 X축의 입사되는 빛의 양이 점점 늘어날수록 출력 값은 커지며 Full well에 전자가 가득 차는 시점이 되면 Saturation 상태로 출력 값을 유지하게 된다. 그리고 그래프의 우측 하단은 입력 값이 미세한 시점에서의 변화 량을 확대하여 표시한 그래프 이며 최초 빛이 입력되지 않다가 빛이 입력되더라도 일정량 까지는 출력 값을 유지하다가 증가되기 시작한다.

 여기서 Dark 영역에서 출력 값이 유지되다가 출력이 시작되는 지점을 간단히 Dark noise level이라 하고 pixel이 표화되는 시점을 saturation level 이라고 하자.

 Dark noise level은 이전 포스팅에 언급했듯 pixel을 read out하는 과정에서 발생되는 노이즈 이며 saturation level은 pixel의 full well과 관계가 있다.

2개 pixel의 dark noise level과 saturation 레벨을 입력 값 기준에서 표로 정리하면 아래와 같다.


 

Dark noise level

Saturation level

 Saturation level

 - Dark noise level

 Saturation level

/Dark noise level

 Pixel 1

25

450

 450 - 25 = 425

 450/25 = 18

 Pixel 2

5

300

 300 - 5 = 295

 300/5 = 60


위의 표에서 pixel이 빛을 표현할 수 있는 범위의 크기가 얼마인가 라고 한다면 Saturation level과 Dark noise level 사이의 크기가 될 것이다. 그리고 그 크기는 pixel 1이 더 크다. 그러나 Dynamic range spec은 Dark noise level에 대비한 Saturation level의 비율이 되며(saturation level / dark noise level = Dynamic range) 이 값은 pixel 2가 더 크다.

많은 분들이 이 부분에서 Dynamic range를 잘못 알고 있는 경우가 있다. 정확히 말해 Dynamic range는 표현할 수 있는 범위의 절대적인 크기가 아니라 어두운 영역의 표현 한계와 밝은 영역의 표현한계의 상대적인 비율이 된다.


그렇다면 카메라 선택 시 Dynamic range를 어떻게 활용해야 할까

Dynamic range는 상대적인 값으로 절대적 기준으로 활용하면 오판의 소지가 있다. 

Dynamic range를 산출하는 수식을 우리가 지금까지 사용했던 용어로 다시 쓰면 아래의 식으로 바뀐다.

Full well / Read out noise = Dynamic range

DR이 커지기 위해서는 Full well이 커져 shot noise에 대한 내성이 강해지거나 read out noise가 적어져 Dark signal의 검출 한계가 낮아져야 한다. 

만약 사용자의 검사가 미량의 빛을 감지해서 불량 유무를 판단한다면 Dynamic range를 절대적 기준으로 사용해서는 안되며 read out noise의 양이 얼마인지 체크해 봐야 한다.

반대로 사용자의 검사가 다량의 빛을 받았을 때 일정한 출력을 내는 shot noise에 강한 특성이 필요하다면 full well의 양이 얼마인지 체크해 봐야 한다.


결국 Dynamic range는 절대적인 기준으로 활용하는데 무리가 있으며 전반적인 노이즈 수준을 판단하는 정도로만 활용하고 사용자의 검사환경에 맞는 다른 spec을 점검해야 할 것이다.



 필진 소개



목한상, Kyle Mok

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


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

카메라 담당 Product Engineer




Posted by 비전만

댓글을 달아 주세요