Skip to content

물체 검사 예제

그래프 마법사는 사용자가 그래프 모듈에 대해 상세한 파악이 완료되지 않았더라도 가이드 라인을 통해 쉽게 그래프를 구성할 수 있는 기능입니다. 검출 탭의 마법사를 클릭하고 순서에 따라 여러 선택지 중 현재 환경에 맞는 항목을 선택하면 감지하고자 하는 물체에 대한 그래프를 완성할 수 있습니다. 본 튜토리얼에서는 인디아이에서 제공하는 대표적인 어플리케이션 중 하나인 물체 검사 예제를 마법사 사용을 통해 설명합니다.

소개할 물체 검사 예제는 크게 두 부분으로 구성됩니다. 스티커가 부착 된 가공품의 스티커 색상을 먼저 마법사 그래프 구성을 통해 확인한 후, 몇 가지 그래프 모듈을 추가하여 가공품의 구멍 유무를 검사하는 과정에 대해 설명합니다. 튜토리얼에 사용할 예시 가공품처럼 스티커가 부착되어 있고, 구멍이 있는 물체라면 동일한 과정으로 따라해보실 수 있습니다.

색상 및 진원도 검사

우선, 작업 공간 상에 물체를 배치하고 앱 좌측 카메라 영상의 새로고침 버튼을 클릭하여 노출을 자동으로 조절하도록 합니다. 그리고 검출 탭의 마법사를 클릭하고 아래 순서대로 항목을 선택하여 그래프를 구성합니다.

  • 그래프 초기화 ⇒ 새 물체 인식 알고리즘 생성 ⇒ 카메라 영상 ⇒ 선명하게 (다음 단계) ⇒ 특정 색상 인식 ⇒ 감지 영역 안쪽을 채움 ⇒ 진원도 확인 (다음 단계) ⇒ 정렬하지 않음 ⇒ 물체 위치를 작업 평면에 맞추지 않음 (아니오)



그래프 모듈 추가 완료

그래프 추가가 완료되면, 모듈 중 MaskHSV, Fill, Circularity 모듈을 확인할 수 있습니다. MaskHSVCircularity 는 스티커 색상과 모양을 검사하여 구분해내기 위함이며, Fill 은 스티커 재질을 보정해주기 위해 필요한 모듈입니다. 이 중, 스티커 색상을 기록하기 위해 MaskHSV 를 클릭하고 세부 설정 중 TOUCH 를 클릭합니다. TOUCH 는 카메라 영상 중 원하는 부분을 터치하면 해당 영역의 값을 저장하도록 하는 기능입니다. 따라서, TOUCH 선택 후, 스티커 부분을 터치하여 색상 값을 저장합니다.


MaskHSV 모듈 설정

그 다음, 인식된 스티커에 이름을 부여하기 위해 Label 모듈을 클릭합니다. 세부 설정의 NAME 에 텍스트를 입력하여 이름을 지정합니다.


Label 모듈 설정

이제 인식 영역의 진원도를 확인하여 스티커의 모양까지 검사할 수 있도록 Circularity 모듈 설정을 진행합니다. 세부 설정의 CUT 값을 조절하여 해당 값보다 높은 물체를 원으로 인식합니다. 아래 그림과 같이 값을 설정하여 원형 스티커를 인식할 수 있도록 합니다.


Circularity 모듈 설정

위 설정까지 마친 후, 실행 버튼을 클릭하면 아래 결과와 같이 원형 스티커가 정상적으로 인식되며 pass 로 표기되는 것을 확인하실 수 있습니다.


색상 및 진원도 검사 (정상)

만약, 스티커의 원형이 아닐 경우, 아래처럼 검사 결과가 fail 로 나타나게 됩니다.


색상 및 진원도 검사 (불량)

구멍 유무 검사

앞선 검사 그래프에 이어, 이번에는 그래프 모듈을 추가하여 구멍 유무 검사까지 진행하는 과정에 대해 설명합니다. 색상 및 진원도 검사에 사용한 그래프를 먼저 저장합니다. 그리고 비우기를 클릭하여 그래프를 초기화합니다. 구멍 유무 검사를 위한 그래프 모듈을 추가하기 위해 초기화 후, 그래프 수정을 클릭하여 아래와 같이 모듈을 구성합니다.



그래프 추가 구성

각 모듈을 끌어다 놓음으로써 구성할 수 있으며, 모듈을 개별 클릭하여 추가할 수도 있습니다. 그래프 구성이 완료되면, SubGraph 를 클릭하여 미리 저장해둔 색상 및 진원도 검사 그래프를 NAME 에서 선택합니다.


SubGraph 모듈 설정

그 옆의 If 모듈은 색상과 진원도가 정상적으로 인식 된 경우 이후 과정을 수행하도록 하는 브랜치 역할을 합니다. 세부 설정을 아래와 같이 구성하여 스티커 검사가 정상일 때 구멍 검사를 진행하도록 합니다.


If 모듈 설정

만약, 스티커 검사 결과 불량으로 판단될 경우, GoTo 모듈로 이동하고 이는 다시 Join 모듈로 이동하여 그래프를 종료합니다.



Join, GoTo 모듈 설정

본격적으로 구멍 유무 검사를 하기 앞서, 화면 상에 시편이 보이지 않도록 시편을 제거한 후, Background 모듈의 RECORD 를 클릭하여 배경 이미지를 먼저 기록합니다. 이때, 시편이 제거되었으므로 If 모듈의 설정을 passed != True로 수정해 Background로의 진입에 문제가 없도록 합니다. 이미지 기록 후에는 다시 passed == True로 되돌립니다. 향후 과정에서는 기록한 배경 이미지와 다른 부분을 시편으로 인식합니다. 또한, 아래와 같이 Background 의 설정 값을 변경하여 인식된 물체에 맞게 Mask 를 조정합니다. 이를 통해 ROIFromMask 모듈이 관심 영역을 보다 정확하게 설정할 수 있도록 합니다.


Background 모듈 세부 설정

위 단계까지 완료하면 구멍 인식을 위해 MaskRGB 모듈을 설정합니다. 본 예제에서는 구멍 부분의 색상이 매우 어두우므로 아래와 같이 BLUE, GREEN, RED 를 모두 0으로 설정합니다. 하지만, 예제와 다른 배경을 가지거나 시편의 종류가 상이한 경우, 사용하시는 환경에 맞게 미세 조정을 진행하시기 바랍니다.



MaskRGB 모듈 세부 설정

구멍이 여러 개 존재하는 경우, Batch 모듈을 추가해주는 것이 필요합니다. 인식 된 모든 물체에 대해 Batch 아래의 파이프라인을 실행하여 검사를 진행합니다. 먼저, BatchDROP FAIL 을 활성화하여 검사에 탈락한 물체를 삭제할 수 있도록하고, DilateMaskCircularity 설정을 진행할 수 있도록 합니다.


Batch 모듈 DROP FAIL 활성화

MaskRGB 를 통해 인식 된 구멍의 크기에 맞게 Mask 가 조정될 수 있도록 DilateMaskSIZE DILATE 를 조절하여 구멍의 크기게 맞춥니다. 그 다음, 원형 구멍의 좀 더 정확한 인식을 위해 진원도 검사 모듈인 CircularityCUT 을 조절하여 인식율을 높입니다.


DilateMask 모듈 설정


Circularity 모듈 설정

이로써 모든 그래프 구성이 완료되었으며, 실행 버튼을 클릭하면 아래와 같은 결과를 확인할 수 있습니다.


구멍 유무 검사 결과

앞선 예제의 원형 스티커 정상 인식과 더불어, 총 4개의 볼트 구멍 중 정상적으로 구멍이 나있는 3개 구멍에 대해 pass 표시가 나타나는 것을 확인할 수 있습니다.