이번 기사에서는 기본적인 이미지 획득 및 처리 작업 방법을 보여준다. 셜록의 전반적인 기능을 다루지만 모든 세부 사항까지 설명하지는 않는다. 이번 기사와 온라인 도움말을 참고하면 셜록을 쉽게 사용하는 방법을 마스터할 수 있다. 셜록은 별도의 라이선스 없이 데모 모드에서도 실행이 가능하다. 이러한 경우 몇 가지 기능적 제약이 동반된다.
반 상 현 AK정보통신 비전사업부 SW팀장
간단한 탐색 루프
셜록 시작하기
바탕화면 또는 시작-프로그램에서 셜록 아이콘을 더블 클릭해 셜록을 시작한다(그림 1). 셜록 스플래시 화면이 뜨고 이미지 수집 및 처리 환경, 기본 도구 모음, 이미지 창, 프로그램 창이 그림 1과 같이 뜬다. 기본 설정으로 상단에 흑백 바둑판 이미지가 보인다.
이미지 창 만들기
옵션 항목에 이미지 창이 비활성화돼 있지 않는 한 새로운 탐색시 창은 자동으로 생성된다. 이미 이미지 창이 있는 경우엔 다음 이미지 불러오기 단계로 넘어가고, 만약 이미지 창이 없다면 프로그램 창 도구 모음의 ACQ 버튼을 클릭한다.
이미지 불러오기
이미지 창 도구 모음에서 이미지 불러오기 단추를 클릭해 C:Users사용자
AppDataLocalTeledyne DALSASherlockImages 폴더에 있는 MARK1.BMP 파일을 불러온다(그림 3).
보기 설정 바꾸기
·메뉴 표시 줄의 View 메뉴를 연다.
·Instructions를 클릭한다.
·View 메뉴를 다시 열고 Variables를 클릭하면 그림 3과 같은 화면이 된다. 변수 창과 명령 창은 오른쪽 하단에 탭으로 생성된다.
ROI 그리기
·ROI를 그리기 위해 이미지 창 도구 모음에서 사각형 버튼을 클릭한다.
·숫자 92/10 주위에서 마우스 왼쪽 버튼을 한 번 클릭한 후 원하는 크기의 상자를, 그리고 다시 왼쪽 마우스 버튼을 클릭하면 된다. 셜록은 생성된 사각형을 빨간색(선택) 또는 녹색(선택 안함)으로 표시하고 왼쪽 상단에 기본 이름을 배치한다. 다음 그림 4와 같은 화면이 보인다.
ROI 방향과 위치, 크기
ROI의 위치와 크기는 조절이 가능하며 사각형과 레이크 ROI는 방향 조절(회전)도 가능하다. 사각형 ROI의 네 모서리에 있는 작은 정사각형을 이용해 크기를 조절할 수 있다.
사각형 ROI를 회전하려면 상단의 마젠타 정사각형에 마우스 커서를 올려 오른쪽으로 이동한다. 그러면 양방향 화살표가 표시된다. 마우스 왼쪽 버튼을 클릭한 상태로 원하는 만큼 회전한 후 마우스 단추를 놓는다.
ROI를 이동하기 위해 ROI 중앙에 마우스 커서를 올려놓으면, 십자형 화살표가 표시되고 이 때 마우스 왼쪽 버튼을 누른 채 잠복 이미지의 다른 부분으로 ROI를 이동한다.
ROI 크기를 조절하려면 ROI 경계선에 마우스 커서를 올려놓도록 한다. 양방향 화살표가 표시되고 마우스 왼쪽 버튼을 누른 채 경계선을 끌어 크기를 변경할 수 있다.
ROI 옵션
·ROI 옵션 대화 상자를 열려면 ROI 내부를 더블 클릭하거나 프로그램 창에서 ROI 이름을 더블 클릭, 또는 ROI 내부에서 마우스 오른쪽 버튼을 클릭하고 edit를 선택한다. ROI 처리 작업 옵션 대화 상자를 통해 전처리 및 알고리즘 연산을 할당할 수 있다. 그림 5는 ROI 옵션 대화 상자의 모습이다.
전처리 연산(Preprocessors)
셜록은 ROI 한 개당 invert, dilate, 1×11, 3×3 등 최고 7개의 전처리 연산을 지원한다.
·전처리 연산을 지정하려면 전처리 목록 상자(드롭다운 목록, 목록 상자 또는 콤보 상자)에서 전처리 항목을 선택한다. 이번 예제에서는 첫 번째 목록에 있는 Invert를 선택해 보도록 한다.
알고리즘 연산(Algorithms)
ROI에 알고리즘 연산자도 할당할 수 있다.
·알고리즘을 지정하려면 마지막 전처리 목록 상자 아래에 위치한 알고리즘 목록 상자에서 알고리즘 항목을 선택한다. 여기서는 Average를 선택해 보겠다. 이 외에도 다양한 ROI 옵션이 있으며 여기에 대해서는 셜록 Help 메뉴를 클릭하면 자세한 설명을 볼 수 있다.
·닫기 버튼을 클릭한다.
수식 만들기
·명령 창을 아래로 스크롤해 Numeric 폴더를 더블 클릭하면 사용 가능한 숫자 수식 목록을 볼 수 있다.
·그림 7처럼 Sqrt를 선택해 프로그램 창의 RectA로 끌어다 놓는다.
·그림 8과 같이 ROI 및 이미지 처리(속성) 아래에 수식이 생성된다. F( ) SqrtA 아래 두 개의 항목 중 첫 번째는 N 0.00이고 두 번째는 N sqrt of n이다. N은 숫자 값을 가리킨다. N 0.00의 왼쪽 상단에 아래쪽으로 향하는 빨간색 화살촉 모양은 ‘입력’을 의미하며, N sqrt of n에 보이는 위쪽으로 향하는 초록색 화살촉 모양은 ‘출력’을 뜻한다. 참고로 프로그램 창 버튼을 사용해 프로그램 항목을 만들 때 새 항목은 항상 선택된 프로그램 항목 아래에 생성된다. 다른 창에서 프로그램 창으로 항목을 끌어다 놓을 때에도 마찬가지로 항목을 끌어다 놓은 곳 아래에 항목이 들어간다. 반면 프로그램 창 안에서 항목들을 이동시켜 순서를 재배열 할 때에는 옮겨 놓은 곳 위에 위치한다.
판독 값
판독 값은 셜록 명령의 출력 값을 저장한다. 수식 및 입출력 명령에 판독 값을 사용할 수 있다. 모든 판독 값은(변수 할당 유무에 상관 없이) 감시창에 끌어다 놓을 수 있다. 변수에 할당된 판독 값은 변수 창에 보인다.
변수 만들기
변수는 변수 창에서만 생성할 수 있다.
· 명령 창 하단의 Variables 탭을 클릭한다.
· 변수 도구 모음에서 N 버튼을 두 번 클릭해 두 개의 변수를 만든다.
변수 지정하기
다음 방법으로 변수를 지정할 수 있다.
·변수 창의 varA를 프로그램 창의 Rect
A.Average 아래에 있는 N average 위에 끌어다 놓는다.
·프로그램 창의 N sqrt of n을 마우스 오른쪽 버튼으로 클릭한 후 connect vari
able varB를 선택한다.
·프로그램 창의 N 0.00을 더블 클릭해 입력 판독 값 편집 대화 상자(Edit Input Reading)를 연다.
·Variable 옆의 선택 버튼을 클릭하고 드롭다운 목록에서 varA를 선택한다(그림 10). 참고로 drop 목록을 통해 다른 변수 및 판독 값을 입력 값에 지정할 수 있다.
·OK를 클릭해 대화 상자를 닫는다.
프로그램 창은 그림 11과 같이 보여야 한다. 변수A와 B는 Average(평균)와 Square Root(제곱근)에 의해 생성된 출력 판독 값에 할당돼 있다. 변수A는 Square Root의 입력 판독 값에도 할당돼 있다. 변수 창에서 varA와 varB 값은 아직 0.00이다. 값을 얻기 위해선 탐색을 실행해야 한다.
기본 탐색 작업 실행 및 저장하기
· F9 키를 누르거나 메뉴에서 Run | Once를 클릭한다. 셜록은 사각형 내부의 평균 밝기와 그 수의 제곱근을 계산해 변수 창에 값을 표시한다. 상태 표시줄은 탐색에 걸린 시간을 보여주며 보통 한 번 탐색 작업을 하는데에 8~19m/s 정도 소요된다. 메뉴 표시줄에서 File | Save를 선택해 지금까지의 작업 내용을 저장한다. 솔루션 파일명을 지정하고 확장자명은 ivs로 한다.
· 예로 tut_1를 입력하고 Save를 클릭한다. 참고로 셜록은 자동 저장 기능이 있어 기본으로 매 20분마다 수정된 솔루션 작업을 저장한다. 수정사항이 없을 경우엔 저장하지 않는다. 저장 시간 간격은 프로그램 옵션(Application Options)에서 변경할 수 있다.
변경된 프로그램 루프
읽기, 수식, 서브루틴, 흐름 제어 및 입출력 제어 기능으로 이미지 검사 프로그램을 손쉽게 작성할 수 있다.
·변수 창 도구 모음에서 N 버튼을 클릭해 변수를 두 개 더 만든다.
·varC를 더블 클릭해 변수 편집 대화 상자를 연다.
·Number Passed로 이름을 변경하고 OK를 클릭한다.
·varD를 더블 클릭한다.
·Number Failed로 이름을 변경하고 OK를 클릭한다.
서브루틴 만들기
·프로그램 창 도구 모음에서 서브루틴(Subroutine) 버튼을 클릭한다.
·subA를 클릭한 후 F2를 누르거나 subA를 한 번 더 클릭해 이름을 PASS로 변경한다.
·서브루틴 버튼을 또 다시 클릭해 생성된 subA를 이번에는 FAIL로 이름을 변경한다. 프로그램 창 하단에 Main, PASS, FAIL이라는 탭이 생긴다.
·프로그램 창 하단의 Main 탭을 클릭하고 변수 창 하단의 Instructions 탭을 클릭한다.
조건문
·프로그램 창에서 F( ) SqrtA를 클릭한다.
·프로그램 창 도구 모음에서 IFE 버튼(버튼이 보이지 않을 경우 >> 사용)을 클릭하거나 명령 창 상단의 If-Else 명령을 끌어와 프로그램 창의 Sqrt 수식 위에 올려놓는다.
·ifelseA 명령을 더블 클릭해 그림 12와 같이 조건문 편집 대화 상자를 연다.
·FALSE를 선택해 삭제한다.
·왼쪽 괄호 버튼을 클릭한다.
·varA를 Logical expression 영역으로 끌어온다.
·>= 버튼(크거나 같음)을 클릭한다.
·숫자 50을 입력한다.
·오른쪽 괄호 버튼을 클릭한다.
·AND 버튼을 클릭한다.
·왼쪽 괄호 버튼을 클릭한다.
·varA를 Logical expression 영역으로 끌어온다.
·<= 버튼(작거나 같음)을 클릭한다.
·숫자 170을 입력한다.
·오른쪽 괄호 버튼을 클릭한다. 입력한 논리문 : ([VARA]> = 50) AND ([VARA] <= 170)
·Evaluate버튼을 클릭해 TRUE임을 확인한다.
· OK를 클릭한다.
· 프로그램 창에서 If를 클릭한다.
· Call버튼을 클릭하거나 Call 명령을 If로 끌어온다.
·Call을 더블 클릭해 Call 대화 상자를 연다.
·드롭다운 목록에서 PASS를 선택하고 OK를 클릭한다.
·프로그램 창에서 Else를 클릭한다.
·Call 버튼을 클릭하거나 Call 명령을 Else로 끌어온다.
·Call을 더블 클릭해 Call 대화 상자를 연다.
·드롭다운 목록에서 FAIL를 선택하고 OK를 클릭한다.
출력 추가하기
·프로그램 창 하단에 있는 PASS탭을 클릭한다.
·명령 창에서 Numeric 폴더로 스크롤 한다. 보이지 않을 경우 내용을 표시할 폴더를 더블 클릭한다.
·Add 명령을 프로그램 창으로 끌어와 Pass 서브루틴 위에 놓는다. 참고로 프로그램 창 하단의 탭 위로 커서를 이동하면 다른 서브루틴을 열 수 있다. Pass 탭 위에 커서를 이동해 Pass 서브루틴을 다시 열도록 한다.
·N number(0.00)를 더블 클릭해 판독 값 편집 대화 상자를 연다.
·Value 영역의 값 0.00을 1로 변경하고 OK를 클릭한다.
·N[add input]을 마우스 오른쪽으로 클릭한다.
·Connect 값 팝업에서 변수들을 선택하고 Number Passed를 선택한다.
·N sum을 오른쪽 마우스로 클릭한다.
·Connect 값 팝업에서 변수들을 선택하고 Number Passed를 선택한다.
·Instructions window에서 IO:Reporter 폴더를 더블 클릭한다.
·Print 명령을 프로그램 폴더로 끌어와 AddA 수식 위에 놓는다.
·S **Reporter note**를 더블 클릭한다.
·Value 항목 옆에 Passed라고 입력한 후 OK를 클릭한다.
·프로그램 창 하단의 FAIL 탭을 클릭한다.
·프로그램 창에서 Fail 서브루틴을 마우스 오른쪽 버튼으로 클릭한다.
·팝업 메뉴에서 Numeric으로 커서를 이동한다. 하위 메뉴에서 Add를 클릭한다. AddB 명령이 Fail아래에 나타난다.
·N number(0.00)을 더블 클릭해 입력 판독 편집 대화 상자를 연다.
·Value 칸에 1을 입력하고 OK를 클릭한다.
·N[add input]을 오른쪽 마우스 버튼으로 클릭한다.
·Connect 값 팝업에서 변수를 선택하고 Number Failed를 선택한다.
·N sum을 마우스 오른쪽 버튼으로 클릭한다.
·Connect 값 팝업에서 변수를 선택하고 Number Failed를 선택한다.
·프로그램 창에서 AddB를 마우스 오른쪽 버튼으로 클릭한다.
·팝업 메뉴에서 IO : Reporter로 커서를 이동한다. 하위 메뉴에서 Print를 클릭하면 printB 명령이 AddB 아래에 나타난다.
·S **Reporter note**를 더블 클릭한다.
·Value 항목 옆에 Failed라고 입력한 후 OK를 클릭한다.
탐색 실행하기
·메뉴모음에서 View-Reporter를 클릭한다.
·기본 창 도구 모음에서 초록색 화살표(한 번 실행)를 클릭하거나 F9 키를 누르거나 Run 메뉴에서 탐색 작업을 한 번 실행한다.
·변수 창에서 Number Passed 값은 1로 변하고 보고서 창에는 Passed라는 문구가 표시된다.
·이미지 창에서 사각형 ROI의 한 모서리크기를 늘린다.
·초록색 화살표를 클릭하거나 F9 키를 다시 누른다.
·변수 창에서 Number Failed 값은 1로 변하고 보고서 창에는 Failed라는 문구가 뜬다.
완성된 탐색 저장하기
·이미지 창에서 프로그램을 다시 패스시키기 위해 ROI의 크기를 줄인다.
·초록색 화살표를 클릭하거나 F9 키를 눌러 탐색을 시작하고 PASS를 확인한다.
·검사 솔루션 작업을 Tut2.ivs로 저장한다.
FA Journal 편집국 (Tel. 02-719-6931 / fa@infothe.com)
<저작권자 : FA저널 (http://www.fajournal.com/) 무단전재-재배포금지>