인쇄 검사 예제 - Blob Based Template Matching을 사용한 위치 보정 및 결함 감지

간략한 설명

Files: \examples\Processing\ObjectFeatures\PrintInspection\PrintInspection_Blob.vad

기본 플랫폼: imaFlex CXP-12 Quad

간단한 설명

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

디자인 "PrintInspection_Blob.vad"에서는 이미지 내 객체의 위치 및 방향 보정과 그에 따른 결함 검출이 수행됩니다. 이 예제는 템플릿으로 사용할 수 있는 최소 두 개의 각인이 있는 객체에 적합합니다. 특정 각인은 객체 상에 한 번만 나타나야 합니다. 예제 이미지 "TestImage.tif"에서는 문자 "K"와 "g"가 29x38 픽셀 크기의 템플릿 1 및 2로 선택되었습니다. 디자인 최상위 레이어의 주석 상자에는 디자인을 사용자의 예제 이미지에 맞게 조정하기 위한 단일 단계들이 설명되어 있습니다. 디자인에서는 객체 상의 두 템플릿에 대한 Blob 기반 인식을 통해 객체의 위치와 방향이 결정됩니다. 두 템플릿의 좌표로부터 객체의 무게 중심이 계산됩니다. 템플릿 1과 2의 상대적 위치로부터 객체의 회전 각도 Phi가 계산됩니다. 이러한 정보를 바탕으로 아래에 설명된 기하학적 변환이 수행됩니다. 이 변환의 구현은 아래에 설명된 디자인 예제 "Geometric Transformation_ImageMoments.va"와 동일합니다. 위치 및 방향이 보정된 객체의 결함은 계산된 보정된 객체에서 객체의 "골든 마스터" 템플릿을 차분하여 발견됩니다. 남은 것은 잠재적인 결함들입니다. 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 참조) 내에서 템플릿 매칭과 이미지 내 좌표의 후속 결정이 수행됩니다.

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를 통해 최적의 템플릿 매칭이 선택되며, 레지스터 Register_COG_Template1, Register_COG_Template2와 SelectLastPixel 상자에서의 마지막 픽셀 선택을 통해 템플릿 1과 2의 해당 좌표가 결정됩니다. DeterminingCOGTemplates 상자의 출력은 템플릿 1과 2의 좌표입니다.

HierarchicalBox TemplateMatching의 내용

그림 384. HierarchicalBox TemplateMatching의 내용


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

HierarchicalBox COG_Angle의 내용

그림 385. HierarchicalBox COG_Angle의 내용


회전 각도 객체의 위치가 box에서 계산됩니다. RotationAngle 다음을 따릅니다

식 51.


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

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

식 52.


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

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

box GeometricTransformation의 출력인 위치 및 방향이 보정된 이미지에서 가능한 결함은 box FindDefects에서 발견되며, 여기서는 이미지의 "골든 마스터" 템플릿이 처리된 이미지에서 차감됩니다. 기하학적 변환 후 쌍선형 보간으로 인해 발생하는 잔여물을 제거한 후, box FindDefects의 출력은 객체에서 발견된 순수 결함입니다. operator Blob_Analysis_2D를 사용하는 box FindDefectPosition의 블롭 분석을 통해 이러한 결함의 좌표가 결정됩니다. box AppendDefectPositionsToImage에서 이러한 좌표가 위치 및 방향이 보정된 이미지에 추가됩니다. operator SourceSelector의 parameter "SelectSource"를 0 또는 1로 설정하여 순수 결함이 있는 이미지 또는 결함 좌표가 포함된 보정된 이미지를 DMA를 통해 PC로 보낼지 여부를 사용자가 선택할 수 있습니다.