인쇄 검사 예제 - Blob 기반 Template Matching을 사용한 위치 보정 및 결함 검출

간략한 설명

파일: \examples\Processing\ObjectFeatures\PrintInspection\PrintInspection_Blob.vad

기본 플랫폼: imaFlex CXP-12 쿼드

요약 설명

Blob 기반 위치 보정 및 결함 검출

이 디자인에서는 객체의 위치 및 회전 각도를 보정한 후 이미지에서 결함을 검출합니다. 이 예제는 템플릿으로 사용할 수 있는 최소 두 개의 각인이 있는 객체에 적합합니다. 특정 각인은 객체 상에 한 번만 나타나야 합니다. 예제 이미지 "TestImage.tif"에서는 문자 "K"와 "g"가 29x38 픽셀 크기의 템플릿 1 및 2로 선택됩니다. 디자인 상단 레이어의 주석 상자에는 디자인을 예제 이미지에 맞게 조정하는 단일 단계가 설명되어 있습니다. 디자인에서는 객체 상의 두 템플릿을 인식하기 위한 Blob 검출을 기반으로 객체의 위치와 회전 각도를 결정합니다. 두 템플릿의 좌표를 통해 객체의 무게 중심이 계산됩니다. 템플릿 1과 2의 상대적 위치로부터 객체의 회전 각도 Phi가 계산됩니다. 이러한 정보를 바탕으로 에 설명된 대로 기하학적 변환이 수행됩니다. 이 변환의 구현은 에 설명된 디자인 예제 "Geometric Transformation_ImageMoments.va"와 동일합니다. 위치 및 회전이 보정된 객체의 결함은, 계산되어 보정된 객체에서 객체의 "골든 마스터(golden master)" 템플릿을 빼서 찾습니다. 남은 것은 가능한 결함입니다. Blob 검출을 통해 이러한 결함의 위치가 결정되며, 위치 및 회전이 보정된 객체의 이미지에 추가됩니다. 사용자는 결함이 있는 이미지를 전송할지, 아니면 위치가 보정된 객체 이미지에 결함 위치가 추가된 이미지를 PC로 전송할지 선택할 수 있습니다. 다음에서는 기본 설계 구조와 단일 모듈의 기능에 대해 설명합니다. 그림 380에서 기본 설계 구조를 확인할 수 있습니다.

VA 디자인 "PrintInspection_Blob.vad"의 기본 설계 구조

그림 380. VA 디자인 "PrintInspection_Blob.vad"의 기본 설계 구조


HierarchicalBox FindPatterns(그림 381 참조)에서는 획득한 이미지( ImageAcquisition 상자에서 가져옴)가 HierarchicalBox Binarization 내에서 단순 임계값으로 이진화됩니다. 예제 이미지를 변경할 때는 이 임계값을 이미지에 맞게 조정할 수 있습니다. HierarchicalBox BlobDetection에서는 이진화된 이미지의 객체가 연산자 Blob_Analysis_2D를 통해 검출됩니다. 이 연산자의 출력은 각 검출된 객체를 둘러싸는 바운딩 박스의 x 및 y 좌표와 면적입니다. 디자인의 주석 상자에서 이러한 파라미터에 대한 더 자세한 정보를 확인할 수 있습니다. 그런 다음 검출된 객체는 BlobSelection 상자에서 크기와 위치를 기준으로 선택됩니다. 템플릿과 관련된 객체의 좌표 및 크기 정보만 남게 됩니다. 템플릿의 유효한 크기 및 위치에 대한 파라미터 IS_InRange를 템플릿에 맞게 조정하십시오(FindPatterns 상자에서 마우스 우클릭). 좌표 및 크기 정보는 HierarchicalBox ExtractCandidates의 입력이 됩니다. 그림 382에서 그 내용을 참조하십시오.

HierarchicalBox FindPatterns의 내용

그림 381. HierarchicalBox FindPatterns의 내용


HierarchicalBox ExtractCandidates의 내용

그림 382. HierarchicalBox ExtractCandidates의 내용


여기서 각 객체(Blob 분석으로 검출됨)는 연산자 ImageBufferMultiROIDyn_CutROIs를 사용하여 원본 이미지에서 관심 영역(ROI)으로 잘려나간 후 단일 프레임으로 전달됩니다. HierarchicalBox DeterminingCOGTemplates(그림 383 참조) 에서는 Template Matching과 그에 따른 이미지 내 좌표 결정이 수행됩니다.

HierarchicalBox DetermingCOGTemplates의 내용

그림 383. HierarchicalBox DetermingCOGTemplates의 내용


TemplateMatching 상자(그림 384의 내용 참조) 에서는 선택된 객체와 템플릿 1 및 2(29x38 픽셀 크기의 문자 "K" 및 "g")의 매칭이 수행됩니다. Templates에서 템플릿 1과 2는 16비트 값(각 템플릿당 8비트)으로 룩업 테이블 LUT_Values에 기록됩니다. 이미지에서 검출된 객체와 템플릿 1 및 2의 매칭은 Match 상자에서 간단한 3x3 커널 뺄셈으로 수행됩니다. TemplateMatch에서는 가장 일치하는 결과를 제공하는 커널 구성 요소가 선택됩니다. 다시 DeterminingCOGTemplates의 내용으로 돌아가서, 가장 일치하는 템플릿은 연산자 RowMin_Template1 및 RowMin_Template2를 통해 선택되며, 템플릿 1 및 2의 해당 좌표는 레지스터 Register_COG_Template1, Register_COG_Template2 및 SelectLastPixel 상자에서의 마지막 픽셀 선택을 통해 결정됩니다. DeterminingCOGTemplates 상자의 출력은 템플릿 1과 2의 좌표입니다.

HierarchicalBox TemplateMatching의 내용

그림 384. HierarchicalBox TemplateMatching의 내용


기본 설계 구조로 돌아가서, 이제 템플릿 1과 2의 좌표를 통해 객체의 무게 중심 좌표와 회전 각도가 결정되는 HierarchicalBox COG_Angle을 살펴보겠습니다. 그림 385에서 COG_Angle의 내용을 참조하십시오.

HierarchicalBox COG_Angle의 내용

그림 385. HierarchicalBox COG_Angle의 내용


회전 각도 물체의 위치는 상자 내에서 계산됩니다. RotationAngle 에 따라

식 51.


여기서 는 템플릿 1과 2의 x 및 y 방향 좌표 차이입니다.

물체의 무게 중심 좌표는 다음 식에 따라 계산됩니다.

식 52.


여기서 은 물체의 무게 중심, 템플릿 1 및 템플릿 2 사이의 각도이며, 은 물체가 회전하지 않았을 때 템플릿 2, 템플릿 1과 수평선 사이의 각도이고, 은 물체의 무게 중심과 템플릿 1 사이의 거리입니다. 예제 이미지를 변경할 때는 상자에서 마우스 우클릭을 통해 이러한 값을 조정해야 합니다. COG_Angle "properties" 아래에서.

이러한 정보를 바탕으로 , 기하학적 변환이 상자에서 수행됩니다. GeometricTransformation" (그림의 기본 설계 구조 참조 380) 섹션에 설명된 VA 예제 "GeometricTransformation_ImageMoments.va"와 동일합니다. .

GeometricTransformation 상자의 출력인 위치 및 방향이 보정된 이미지의 잠재적 결함은 FindDefects 상자에서 감지되며, 여기서 이미지의 "골든 마스터(golden master)" 템플릿이 처리된 이미지에서 차감됩니다. 기하학적 변환 후 쌍선형 보간(bilinear interpolation)으로 인해 발생한 잔여물을 제거한 후, FindDefects 상자의 출력은 객체에서 발견된 순수한 결함이 됩니다. 연산자 Blob_Analysis_2D를 사용하는 FindDefectPosition 상자의 블롭 분석(blob analysis)을 통해 이러한 결함의 좌표가 결정됩니다. AppendDefectPositionsToImage 상자에서 이 좌표들은 위치 및 방향이 보정된 이미지에 추가됩니다. 사용자는 SourceSelector 연산자의 "SelectSource" 파라미터를 0 또는 1로 설정하여, 순수 결함이 포함된 이미지 또는 결함 좌표가 표시된 보정된 이미지 중 어떤 것을 DMA를 통해 PC로 전송할지 선택할 수 있습니다.