머신비전의 기본 원리 따라잡기[2]
이 자료는 2D/3D 머신비전 솔루션을 제공하는 싸이로드(www.cylod.com)가 ①기본적인 머신비전의 용어를 이해하고, ②머신비전의 가능성과 한계를 인식하며, ③실무 이전에 머신비전의 이론적인 이해를 돕기 위한 내부 교육용으로 제작되었다. 이를 본지가 싸이로드의 양해를 구해 3회에 걸쳐 게재를 한다.
자료제공|싸이로드 www.cylod.com
목 차
1 _ 머신비전의 개괄
2 _ 이미징
3 _ 일루미네이션
4 _ 레이저 삼각측량
5 _ 프로세싱과 분석
6 _ 전송
7 _ 머신비전의 원칙
8 _ 갈무리(기타 등등)
레이저 삼각측량
Ⅳ 레이저 삼각측량
레이저 삼각측량(Laser Triangulation)은 입체적인(3D) 높이의 데이터를 얻기 위한 기술로, 한 방향의 레이저 조명을 대상물에 비추고 정면에서 한 대의 카메라로 바라 본다. 레이저 빔은 끝 단에 프리즘을 통해 레이저 라인으로 만들어진다. 뷰 앵글(View angle)은 카메라로 대상물의 단면과 같은 높이의 윤곽(height profile)을 볼 수 있게 한다.
완벽한 3D 이미지를 얻기 위해서는 레이저 조명 아래에 대상물을 이동시켜 연속적인 윤곽(profile)을 한데 모아야 한다.
3D의 시야
선택된 FOV(Selected FOV)는 카메라가 보는 대상물의 단면에 직사각형 영역이다. 특징적 장방형(defining rectangle)이라고도 불리는 선택된 FOV는 사다리꼴 모양의 최대 FOV 안에 가로로 놓여 있다. 레이저 삼각측량의 경우 카메라와 레이저간에는 여러 가지 경우로 조합될 수 있는데, 가장 중요한 기본적인 조합에서 카메라 유닛과 FOV 상단과의 거리를 스탠드 오프(Stand-off)라고 부른다. FOV의 폭은 렌즈의 초점 거리와 레이저 프리즘의 팬 앵글, 그리고 스탠드 오프에 의해 결정된다. 
3D 이미지와 좌표계
3D 데이터를 표현하는 데에는 여러 가지 방법이 있다. SICK/IVP는 밝기에 의한 높이 데이터의 표현 방법을 사용한다. 이를 통해 높은 곳은 밝게, 낮은 곳은 어둡게 나타낸다.
이것은 컬러를 이용한 3D 이미지로 변환할 수 있다.
3D 좌표 시스템은 일반적인 2D 이미지의 X/Y 좌표에서 Y좌표를 시간에 대응시킨 것과 같다. 높이는 Z축 혹은 레인지 축에 해당되는 것을 추가한 것으로 볼 수 있다. 대상물의 제일 앞쪽이 스캔 되는 시점에서 Y축 방향은 컨베이어 이동 방향과 반대가 된다.
스캐닝 속도
레이저를 이용한 삼각측량은 라인을 스캐닝 하는 방법이며, 이미지를 부분적으로 조금씩 확보하게 된다. 이러한 방법에서 스캔을 하는 중간에 대상물의 이동 속도를 제어 하는 것은 매우 중요하다. 따라서 이동 속도를 제어하기 위해 다음과 같이 구성한다.
① 인코더를 이용한 컨베이어가 일정 구간을 이동할 때마다 신호를 준다.
② 컨베이어를 일정한 속도로 움직이게 한다.
인코더를 사용하면 프로파일 트리거링(profile triggering)을 통해 제어를 하게 되므로 프로파일은 등거리가 된다. 일정한 속도로 컨베이어를 제어하는 것은 신뢰도가 떨어지므로 인코더를 활용하는 것이 좋다.
프로파일을 잡기 위한 최대 속도는 물론 존재 하는데, 이것은 최대 프로파일 비율(profile/second)에 의해 결정된다. 속도 혹은 최대 프로파일 비율을 초과하면 인코더를 사용하더라도 프로파일을 잃거나 이미지가 찌그러진다. 찌그러진(distorted) 이미지란 이미지의 균형·비율이 맞지 않는다는 의미이다.
X와 Y의 분해가 다른 경우(픽셀이 정사각형이 아닌 경우)에도 이미지는 왜곡될 수 있다.
프로파일의 비율은 다음 세 가지 요소에 의해 결정된다.
① 센서의 노출(exposure) : 긴 노출 시간은 최대 프로파일의 비율을 줄여 준다.
② 센서의 판독 시간 : 센서의 정보를 디지털 포맷으로 변환하는데 소요되는 시간이다.
③ 데이터 전송 시간 : 카메라로부터 얻은 정보를 PC 등으로 전송하는데 소요 되는 시간이다.
대상물을 전체적으로 확실히 스캔 하기 위한 방법으로 포토 스위치(photo switch)가 사용된다.
이미지를 획득하는 시작을 정확히 하기 위한 이미지 유발장치가 포토 스위치이다. 어떤 애플리케이션에서는 컨베이어가 계속 움직여야 하는데 이런 경우 포토 스위치는 의미가 없다. 대신 카메라를 자동 모드로 하여 그것을 대신한다. 이는 앞단의 이미지가 완성되는 데로 새로운 이미지의 획득을 시작한다는 의미이다. 이 방법은 때론 이미지를 중복시켜야 하는데 이는 컨베이어 위에 모든 대상물을 완벽히 스캔하고 분석하기 위한 것이다.
차단과 결여 데이터
카메라와 레이저 라인 간의 뷰 앵글로 인해 대상물의 뒷면이 보이지 않을 수 있다. 이런 현상을 카메라 맞물림(셰도잉)이라 부르며 이 경우 이미지의 데이터가 손실된다.
결과적으로 레이저를 이용한 삼각측량은 높이가 있는 물체 뒤에 놓인 것을 스캔 하기에는 적합하지 못하다. 예를 들어 홀의 바닥이나 경사진 모서리 뒷면 같은 경우가 그러하다.
레이저 각도에 의한 차단(occluded)에 의해서도 데이터에 손실이 발생할 수 있다. 이를 레이저 폐색이라 부른다.
앞의 그림은 스카치 테이프의 이미지를 통해 카메라의 차단 부분과 레이저의 차단 부분을 보여 준다. 노란색 선은 레이저의 차단을 넘어 카메라의 차단이 시작되는 부분을 보여 준다.
시스템 구성요소
일반적인 레이저 삼각측량은 다음과 같은 구성을 포함한다.
① 프로파일의 높이를 발생 시키기 위한 레이저
② 프로파일을 스캔 하기 위한 카메라
③ 카메라 밑으로 대상물을 이동 시키기 위한 컨베이어
④ 대상물을 감지하여 카메라를 인에이블 시킬 포토 스위치
⑤ 일정한 간격으로 프로파일을 잡기 위한 인코더(컨베이어 속도와 별개)
⑥ 프로파일을 이미지로 만들고 분석하기 위한 이미지 프로세싱 유닛
어떠한 레이저 차단 제품들은 사용의 유연성(flexibility)을 최대화 하기 위해 각각의 구성품을 개별적으로 구매하여 사용할 수 있도록 한다.
반면 어떤 제품들은 개별적으로 조립하여(예를 들어 뷰 앵글 고정) 제공하는데 이 경우 제품의 유연성은 떨어지지만 사용은 편리하다. 예를 들면 다음과 같다.
① SICK/IVP 레인저 : 모든 것이 개별적으로 구성.
② SICK/IVP 룰러 : 고정 기하학을 위해 카메라와 레이저가 내장됨.
③ SICK/IVP IVC-3D : 고정 기하학을 위해 카메라와 레이저가 내장됨.
추가로 이미지 프로세싱을 위한 하드웨어와 개별적으로(stand alone) 사용되기 위한 소프트웨어 포함.
좋은 환경광
레이저는 한정된 단색 라이트(emits monochro matic light)이다. 이 말은 오직 한 가지의 파장만을 갖는다는 뜻이다. 센서 앞 단에 한정된 밴드 패스 필터를 사용하여 외부 빛의 다른 파장 성분을 억제 할 수 있다. 결과적으로 시스템이 외부 빛의 변화에 영향을 받지 않게 되는 것. 그렇다고 해도 외부 빛에 레이저와 가까운 파장 성분이 포함되어 있다면 필터를 통과하여 이미지에 영향(disturbing reflection)을 주게 된다. 이런 경우 커버를 씌우거나 덮개로 가려야 한다. 일반적으로 이러한 영향은 태양광 혹은 인공적인 스폿라이트에서 나타난다.
Ⅴ가공 및 분석
이미지를 획득했다면 다음 단계로 이미지를 분석해야 한다. 이는 알고리즘과 획득된 이미지에 의해 자동으로 원하는 특징을 얻어 내는 것을 말한다. 그리고 특징이란 이미지의 일반적인 정보(Dimen sion, Pattern)를 의미한다. 알고리즘이란 분석을 위한 툴 혹은 기능의 역할을 한다.
가끔 이미지의 특징을 얻어 내기 전에 가공(프로세싱)이 필요한 경우가 발생한다. 프로세싱이란 입력된 데이터로 원하는 결과를 얻기 위해 영상에 있는 잡음을 제거하는 등의 과정을 말한다.
예)디지털 필터를 통해 이미지를 향상 시키는 경우 등.
선택의 영역
ROI(Region of Interest)란 이미지에서 중요한 부분을 선택하는 것을 말한다. 이 기능은 이미지를 분석할 때 영역의 제한을 할 수 있으며 이를 통해 분석 시간을 줄이고 데이터 양을 줄일 수 있다. 또한 다른 영역에 대해 다른 분석을 할 수 있게 해준다. 이미지에 대해 여러 개의 ROI 설정도 물론 된다.
일반적으로 이미지 간의 검사 위치가 일정 하지 않을 때 계속 관심 영역을 검사 하기 위해서는 동적인 ROI를 이용하며 이는 대상물과 함께 이동하면서 ROI를 검사하는 것을 뜻한다.
또한, 동적인 ROI는 앞단의 이미지 결과를 이용하여 이미지의 치수를 조절할 수 있다.
픽셀 계산
픽셀 계산은 가장 기본적인 분석 방법으로 ROI 안에 확실한 그레이 레벨 간격의 명암을 갖는 픽셀 수를 세는 알고리즘이다.
픽셀 계산은 대상물의 외관에서 특정 영역의 측정 혹은 편차 값을 찾는데 사용된다.(유실 구획, 스폿, 크랙 등)
디지털 필터 및 조작
디지털 필터와 조작은 이미지를 분석하기 전에 이미지의 특정 부분을 없애거나 특징을 부각 시키는 처리를 말한다.(노이즈 제거, 에지 증가 등)
한계값
한계값으로는 다음의 두 가지 방식이 존재한다.
①절대적인 한계값 : 그레이 스케일의 값(0~255)으로 한계를 정하는 방식
②상대적인 한계값 : 그레이 값의 차이로 한계를 정하는 방식
한계값은 이미지의 이진화(binarization)에 자주 사용되는데, 절대적인 한계값으로 이미지의 그래프를 2개 구역으로 나누어 한계값 보다 아래 값은 검정 그리고 한계값 보다 위 값은 흰색으로 만드는 방식이 그것이다.
예 ; 이중 절대 한계값
다음의 그림과 같이 A부터 E까지의 대상물이 구분되어 있고 바탕을 E라 하고, A부터 E까지의 그레이 스케일을 그래프로 구분지어 표시했다. 각각의 구역은 그레이 로우 값과 그레이 하이 값으로 정의 할 수 있다. 
앞의 그림에서 빨갛게 표시되어 있는 대상물 B는 그레이 로우 T1과 그레이 하이 T2에 의해 선택되어 표시될 수 있다.
예 ; 상대적인 한계값
절대적인 한계값이 정해진 그레이 스케일의 구역을 찾는데 유용하다면 상대적인 한계값은 그레이 스케일의 변화를 찾거나 에지를 찾는데 유용하다.
아래의 그림에서는 최소 비교 한계값 보다 큰 그레이 스케일의 변화가 붉은색으로 표시 되어 있다.
만일 한계 값이 너무 낮다면 알고리즘은 노이즈의 변화 같이 필요 하지 않은 변화까지도 찾아낸다.
에지(모서리) 찾기
에지란 채도의 변화(2D) 혹은 높이의 변화(3D)로 정의된다.
에지는 영상의 밝기가 낮은 값에서 높은 값으로 또는 높은 값에서 낮은 값으로 변하는 경계선을 말한다. 이 에지를 추출함으로써 이미지로부터 얻고자 하는 정보를 찾을 수 있다. 
에지를 검출하기 위해 에지 검출기를 사용하며 이는 미분 필터의 일종이다.
영상에서 가로축 및 세로축을 따라 밝기 값의 변화율 즉, 미분 값이 큰 화소가 경계선이 된다.
에지 찾기 기능은 에지가 나타나는 부분의 좌표를 얻어 내는 동작을 한다.(X/Y 값으로 표시)
에지 찾기는 특징 찾기, 치수의 크기 등에 사용된다.
블랍(Blob) 분석
블랍 분석은 이미지의 하나 혹은 그 이상의 기준(특징)에 적합한 픽셀과 관련된 어떤 영역을 찾는데 적합하다.
블랍 분석은 대상물을 찾고, 카운트하고 대상물의 특징에 대해 기본적인 측정을 하는데 사용된다.
블랍 분석 툴은 여러 가지 다양한 결과를 낼 수 있는데 예를 들어,
① 무게중심 : 센트로이드(중심)
② 픽셀 계산 : 영역
③ 주변 길이 : 블락 영역을 둘러싼 라인의 길이
④ 방향측정 : 회전 앵글
패턴 매칭
패턴 매칭이란 이미지 안에 이미 인지된 패턴을 인식하는 것으로, 참조할 대상물이 꼭 존재 해야 하며 검사 하고자 하는 대상물은 참조 대상물과 비슷해야 한다. 위치 확인, 형태 증명, 정렬 등에 사용된다.
대상물의 위치는 일정한 위치를 갖는 참조 대상물에 의해 상대적으로 정의된다. 패턴 매칭 알고리즘은 2D의 경우 그레이 스케일(절대적인)과 기울기(상대적인)로, 3D의 경우 높이와 기울기로 가능하다.
패턴 매칭은 일반적으로 다음과 같은 결과를 얻을 수 있다.
① X와 Y의 참조 지점(선택 지점)
② 방향측정(회전)
③ 매치 소스
④ 발견된 대상물의 수
보정
보정이란 서로 다른 좌표 시스템을 변환하는 것으로 예를 들면, 이미지의 X/Y 좌표를 외부의 실제 좌표(로봇에 사용되는 X/Y/Z 좌표 mm)로 변환 하는 것 등이다.
좌표의 변환은 교정(Calibration)으로도 사용된다. 이는 대상물의 회전·해석·원근 그리고 렌즈의 왜곡 등을 보정하는데 사용할 수 있다.
코드 판독
코드는 제품 혹은 포장 등에 인쇄되어 자동으로 빠르게 제품의 내용을 확인 할 수 있게 한다. 가장 널리 쓰이는 코드에는 바코드와 메트릭스 코드가 있다.
바코드 : 바코드는 1D 코드로, 블랙과 화이트의 수직선을 이용하여 숫자 정보를 표현 할 수 있다. 포장 및 물류 시스템에 광범위하게 사용된다.
[바코드의 종류]
① EAN-8 and EAN-13
② Code 39 and Code 128
③ UPC-A and UPC-E
④ Interleaved 2 of 5
메트릭스 코드 : 메트릭스 코드는 사각형과 점으로 이루어진 2D 어레이 코드로 숫자와 글자 정보를 표현할 수 있다.
정보의 양이 커질수록 메트릭스의 크기가 커지게 된다.
중요한 정보는 반복적으로 표시하여 제품의 손상으로 메트릭스 코드가 뭉개져도 보정시킬 수 있다.
[메트릭스 코드의 종류]
① Datamatrix
② PDF17
③ Maxicode
글자 확인과 읽기
자동화된 글자 읽기는 포장 혹은 물류 시스템에서 프린트 상태를 검사 혹은 확인 하거나 프린트 된 메시지를 읽는다.
OCV(Optical Character Verification) : OCV는 예상된 문장을 확인하는 알고리즘으로 True(정확한 문장이 발견) False(발견 되지 않음) 등 두 가지로 결과 값을 출력한다.
OCR(Optical Character Recognition) : OCR 알고리즘은 폰트에 대해 글씨를 읽거나 확인되지 않은 글자를 식별한다. OCR 기능은 다음과 같은 출력을 한다.
① The read string
② True or false
OCR에는 특별히 디자인된 폰트만을 읽는 고정된 폰트 리더기와 어떤 폰트의 글씨라도 읽을 수 있는 유연한 폰트 리더기 등 두 가지 타입이 있다. OCR 알고리즘을 더욱 정확하게 실행하기 위해서는 각각의 글자가 혼동되지 않도록 디자인 된 폰트를 선택하는 것이 중요하다.
사이클 타임
준비 시간(부트 시간)이란 카메라에 전원이 들어가고 이미지를 잡거나 분석할 수 있도록 하는 그 시간이다.
사이클 타임이란 두 개의 연속적인 검사 간의 시간이다.
프로세싱 시간 혹은 실행시간(Processing time, execution time)은 분석 후 결과가 보내지기 전까지의 시간이다.
일반적인 비전 시스템의 처리 시간은 수 ms이며 대개 10에서 500ms 정도이다.
처리 방법 중 사이클 타임을 최소화 하는 방법으로는 최초 사이클 타임을 최소화한 후 프로세서 시간과 동일하게 하여 이미지 가공과 포착을 병렬로 처리하는 방법이 있다.
이를 더블 버퍼링(Double buffering) 혹은 핑퐁 그래빙(ping-pong Grabbing)이라고 한다. 
카메라 프로그래밍
지금까지는 연산과 방법이 개별적으로 어떤 일을 하는지 알아 보았다. 하지만 대부분의 애플리케이션에서는 조금 더 복잡하며 알고리즘과 알고리즘을 조합하여 사용하거나 하나의 알고리즘을 통해 얻은 결과를 통해 또 다른 계산을 해야 하는 경우도 있다.
이러한 환경을 위해 IVC Studio 처럼 특별히 준비 된 소프트웨어 혹은 마이크로소프트의 비주얼 스튜디오(C++ or Visual Basic) 같은 프로그램이 필요하다.
프로그램은 중간개체 혹은 최종 결과에 의존하여 여러 가지로 동작을 할 수 있다. 이러한 동작은 조건 동작을 통해 이루어 진다.
예를 들어 ‘IF’ 명령문을 이용하여 패스/페일(pass/fail)을 처리할 수 있다.
프로그램에서 계산 혹은 스트링 오퍼레이션(string operation)은 표현의 진화에 의해 이루어지며, 표현은 숫자·변수(함수)·스트링을 포함할 수 있는 공식에 의해 쓰여져 있다.
① Boolean : 1 or 0, true or false, good or bad
② Numeric : a number(3.1415)
③ String : text, for example “best before May 2010”
프로그램에서 자주 반복적으로 사용되는 부분의 코드를 복사하는 대신 매크로에 집어넣어 컴퓨터에 보내는 일 등…
예시 : 알약 용기를 메탈 용기로 봉하기 전 알약의 유무를 검사하는 애플리케이션으로 이 경우 하나라도 실패가 나면 실패로 인식하여 거절해야 한다.
백라이트를 사용하여 대상물의 윤곽을 강조.
애플리케이션의 사이클 타임과 정확도에 따라 픽셀, 카운팅, 패턴 매칭, 블랍 분석 등의 알고리즘을 선택하여 해결할 수 있다.
위의 흐름도는 블랍 분석을 활용했다. 


