[TwinCAT 3 메뉴얼] TwinCAT Vision Object Detection
TwinCAT Vision Object Detection
이
매뉴얼에서는 이미지에서 Object
검출하기 위한 TwinCAT Vision Functions 사용 방법을 제공합니다.
제공되는 두가 함수 모두 기본 함수 및 전문가 버전 함수를 제공하며 병렬 코드를 실행하기 위한 Job
Task를 사용 할 수 있습니다.
l
Detect
Blobs
l
Find
Contours
해당 Functions 사용을 위해서는 (TF7100) TC3 Vision Base 기본 라이선스가 요구됩니다.
1.
Detect Blobs
2.
Find Contours
1. Detect
Blobs
이미지에서 Blob 은
Binary Large Object의 줄임말로 같은 성질을 가지는 픽셀 Pixel) 들이 연결되어 있는 작은 집합이라고 할 수 있습니다.
TwinCAT Vision에서 제공하는
Detect blobs Functions 은 임계값 (Threshold), 윤곽
(Contour) 검색 방법을 적용하고 Contour를 필터링하기 위한 여러 옵션을
사용하여 Object를 검출할 수 있습니다.
① Blob 검출 방법
(필터링 방법)
이름 |
형식 |
초기 값 |
설명 |
bFilterByArea |
BOOL |
TRUE |
영역(Area)에 의한 필터링 활성화 -
fMinArea <=
area <= fMaxArea -
fMinArea로 노이즈 필터링을 위해 활성화하는 것이 좋다 -
또는 F_VN_ContourArea을 통해 영역을 결정 |
bFilterByCircularity |
BOOL |
FALSE |
원형(Circularity) 필터링 활성화 - fMinCircularity <= circleity(4pi * area /
perimeter^2) <= fMaxCircularity - 또는 F_VN_ContourCircularity을 통해 원형도 결정 |
bFilterByConvexity |
BOOL |
FALSE |
블록성(Convexity) 필터링 활성화 -
fMinConvexity
<= convexity (area / hullArea) <= fMaxConvexity |
bFilterByEccentricity |
BOOL |
FALSE |
편심(Eccentricity) 필터링 활성화 - fMinEccentricity <= eccentricity <=
fMaxEccentricity - 또는 F_VN_ContourEccentricity을 통해 편심 결정 |
bFilterByInertiaRatio |
BOOL |
FALSE |
관성 비율(Inertia ratio)로 필터링 활성화 - fMinInertiaRatio <= inertia ratio <= fMaxInertiaRatio |
fMinArea |
REAL |
10 |
픽셀(pixel)단위의 최소 blob 영역 |
fMaxArea |
REAL |
100000000 |
픽셀(pixel)단위의 최대 blob 영역 |
fMinCircularity |
REAL |
0 |
최소 원형도 -
1.0: 이상적인 원 -
< 1: 덜 원형 (원형에 가깝지 않음) -
0: 전혀
원형이 아님 |
fMaxCircularity |
REAL |
1 |
최대 원형도 |
fMinConvexity |
REAL |
0 |
최소 볼록성 -
1.0: 완전히 볼록함 -
< 1: 덜 볼록함 |
fMaxConvexity |
REAL |
1 |
최대 볼록성 |
fMinEccentricity |
REAL |
0 |
최소 편심 -
0.0: 원형 -
1.0: 선형 |
fMaxEccentricity |
REAL |
1 |
최대 편심 |
fMinInertiaRatio |
REAL |
0 |
최소 관성
비율 -
1.0: 동일한 너비 및 높이 -
0.0: 선형 |
fMaxInertiaRatio |
REAL |
1 |
최대 관성
비율 |
eThresholdType |
ETcVnThresholdType |
TCVN_TT_BINARY |
내부적으로
적용된 임계값(Threshold) 방법의 유형 -
OTSU_XXX: USINT 이미지에 대해서만 지원됨. |
fMinThreshold |
REAL |
30 |
시작할 임계값 -
fThresholdStep
> 0이면 이 임계값만 사용됨 |
fMaxThreshold |
REAL |
225 |
종료되는
임계값 -
fThresholdStep
> 0인경우 적용되고 그렇지 않으면 이 값이 사용되지 않는다. |
fThresholdStep |
REAL |
0 |
1개의 단일
임계값을 사용해야 하는 경우 0으로 설정 -
단일 임계값은
여러 임계값보다 훨씬 빠른 결과 (F_VN_Threshold
사용과 같다) |
fMinBlobDistance |
REAL |
5 |
두 개의
서로 다른 Blob의 중심점 사이의 최소 거리 -
fThresholdStep
> 0인 경우에만 사용 -
distance <
fMinBlobDistance인경우 Blob은 동일하게 처리됨 -
거리에 도달하지
않으면 eBlobCombination에 다라 선택. |
nMinRepeatability |
UDINT |
2 |
동일한 윤곽선이
감지되어야 하는 최소 임계값 단계의 수(윤곽선을
찾아야 하는 빈도 수) -
fThresholdStep
> 0인 경우에만 사용 -
동일은 중심점
거리 < fMinBlobDistance를 의미 |
eBlobCombination |
ETcVnBlobCombination |
TCVN_BC_MEDIAN _THRESHOLD |
다중 임계값 Blob 윤곽 중에 어떤 것이 반환되어야 하는지 선택 |
② Detect Blobs Sample 결과 이미지
2. Find Contours
Contours란 동일한 색 또는 동일한 강도를 가지고 있는 영역의 경계선을 연결한 윤곽선(Contours)을 말합니다.
TwinCAT Vision에서 제공되는 윤곽선 검출 함수(Find Contours)는 Object의 구조를 판단하는데 가장 많이 사용되는 함수입니다.
① 윤곽선 검색 방법
이름 |
설명 |
TCVN_CRM_EXTERNAL |
외부 윤곽만 반환한다. |
TCVN_CRM_LIST |
윤곽 계층(Contour hierarchy) 구조를 고려하지 않고 발견된 모든 윤곽선을
반환한다. |
TCVN_CRM_CONNECTED_COMPONENTS |
2레벨의 계층(Hierarchy) 구조의 모든 윤곽선을 반환한다. - 외부 윤곽선(Contours): Level
0 - 내부 윤곽선(Contours): Level
1 |
TCVN_CRM_TREE |
모든 윤곽과 전체 계층 구조를 반환한다. e.g. Level1(빨간색), Level2(녹색), Level3(파란색), Level4(노란색) |
TCVN_CRM_FLOODFILL |
Floodfill 알고리즘을 사용하여 발견된 윤곽선을 반환한다. - DINT 이미지에서만 사용 가능. |
② 윤곽선 찾기
및 처리 순서
윤곽선 찾기
수(Find
Contour)를 사용하기 위해서는 아래와 같은 순서로 처리합니다.
③ 결과 이미지
이상 자세한 내용은 네이버 카페(TwinCAT Vision Object Detection)의 첨부파일을 참고해주세요.
※ 본 문서의 무단전재 및 재배포를 금지합니다.
※ 본 문서는 Beckhoff Automation 한국 지사에서 교육을 목적으로 제작되었으며, 원문에 대한 잘못된 이해와 해석이 있을 수 있습니다. 정확한 내용은 Beckhoff Automation에서 배포하는 설명서인 Infosys (https://infosys.beckhoff.com/)를 기준으로 하며 불일치하는 내용이 있을 경우 Infosys의 내용을 우선시합니다.
※ 본 문서는 미완성본으로 추후 업데이트 내용이 있을 수 있습니다.
2021.12.10
작성자: Beckhoff Korea / Ivy Park
댓글
댓글 쓰기