# DetectBlobs

DetectBlobs 함수는 관심 영역(ROI) 상에서 "연결성 분석"이라고 하는 미확인 개체 분석의 한 형태를 수행합니다. "연결성 분석"에서는 ROI 내의 픽셀들은 미확인 개체와 배경으로 분리되며, 이는 회색조 임계값에 따르는데 임계값 미만의 픽셀은 검은색 범주에 포함되고 임계값 초과 픽셀은 모두 흰색 범주에 포함됩니다.

이처럼 값이 유사한 픽셀들은 "색상" 및 이웃 픽셀을 "터치"하는지 여부에 따라 그룹화됩니다. 배경 픽셀들은 양 옆, 위, 아래를 터치하면 이웃에 연결될 수 있으며 미확인 개체 픽셀들은 양 옆, 위, 아래, 대각선으로 터치하면 이웃에 연결될 수 있습니다.

이미지가 처리된 후라면 이미 미확인 개체 픽셀과 배경 픽셀 값들로 분할되었을 것입니다. ROI에서 발견되는 미확인 개체는 이미지내 개체의 위치(행, 열의 좌표), 면적, 둘레, 확산, 신장 등의 물리적 특성 및 할당된 값에 따라 식별됩니다. 추출된 미확인 개체의 데이터는 Blobs 데이터 구조에 저장되고 보고됩니다.

이 함수는 미확인 개체 분석의 첫 번째 단계이며 궁극적으로는 FindBlobs 및 SortBlobs가 직접 또는 감사를 통해 DetectBlobs 함수의 Blobs 데이터 구조에 대한 셀 참조를 사용합니다.

## DetectBlobs 입력

매개 변수 | 설명
이미지 | This parameter must reference a spreadsheet cell that contains an 이미지 data structure; by default, this parameter references A0, the cell containing the data structure. This parameter can also reference other Image data structures, such as those returned by the 이미지 Vision Data Access functions or 좌표 변환 함수.
Fixture | Fixture 입력 또는 비전 도구 함수의 결과 이미지 좌표계를 기준으로 관심 영역(ROI)을 정의합니다. ROI를 Fixture 기준으로 설정하면 Fixture가 회전하거나 변환된 경우에도 ROI가 Fixture 기준으로 회전하거나 변환됩니다. 기본 설정은 이미지의 왼쪽 상단 모서리인 (0, 0, 0)입니다.
X | 이미지 좌표계에서의 X 오프셋.
Y | 이미지 좌표계에서의 Y 오프셋.
세타 | 이미지 좌표계 내에서 이미지 X축으로부터의 회전(+/-360도 시계 방향).
영역 | 관심 영역(ROI)이라고도 하며, 이미지 중 분석 대상이 되는 영역을 지정합니다. 영역 매개 변수를 두 번 클릭하면 변환하고 회전할 수 있는 대화형 그래픽 모드를 만듭니다. 이 매개 변수를 선택하고 속성 시트의 작업 편집 도구 모음에서 영역 최대화 버튼을 누르면 영역이 자동으로 확대되어 전체 이미지가 포함됩니다.
X | Fixture 좌표에서 원점으로부터의 x 오프셋.
Y | Fixture 좌표에서 원점으로부터의 y 오프셋.
폭 | 영역의 x 축 방향 크기.
높이 | 영역의 y 축을 방향 크기.
각도 | Fixture 좌표에서의 방향.
곡률 | 영역의 x 축과 반대 가장자리선 사이의 각 편차.
참고 : Fixture 및 영역 매개 변수는 이미지의 경계 내에서 정의되어야 합니다. 그렇지 않으면 함수가 #ERR을 반환됩니다.
외부 영역 | 이 매개 변수는 Annulus, Circle, Region, EditAnnulus, EditCircle, EditCompositeRegion, EditPolygon, EditRegion에 대한 셀 참조를 사용합니다. 이 매개 변수를 사용하면 함수는 영역 및 Fixture 설정을 무시하고 참조된 영역에서 지정한 이미지 영역을 검사합니다. EditCompositeRegion 컨트롤을 참조하는 경우, 검사 영역에는 다수 도형이 혼합될 수 있습니다. 복합 영역의 각 도형은 검사 영역에 추가되거나 검사 영역에서 뺄(마스킹) 수 있습니다. 참고 : 이 매개 변수가 외부 영역에 대한 참조로 설정된 경우 함수의 내부 영역을 사용하려면 셀 참조 대신 0 값을 입력하여 수동으로 이 매개 변수를 0으로 설정해야 합니다. 그렇지 않으면 함수가 외부 영역을 계속 참조합니다.
정렬할 개수 | 정렬할 미확인 개체 수를 지정합니다.
0 | 색상 미확인 개체/색상 배경 및 면적 한계: 최소/면적 한계: 최대 매개 변수에 지정된 색상 및 크기 설정을 충족하는 미확인 개체를 모두 반환합니다.
1 - 4096(기본값 = 1) | 색상 미확인 개체/색상 배경 및 면적 한계: 최소/면적 한계: 최대 매개 변수에 지정된 색상 및 크기 설정을 충족하는 미확인 개체를 지정된 숫자까지 반환합니다. 발견된 미확인 개체가 더 많으면 면적이 큰 미확인 개체가 선택됩니다.
참고 : 정렬할 개수 매개 변수값이 0보다 큰 경우 DetectBlobs는 Blobs 데이터 구조의 처음 10개의 미확인 개체에 해당하는 최대 10개의 항목이 포함된 결과표를 자동으로 삽입합니다. 더 많은 항목을 표시하려면 표의 마지막 행을 복사하고 표의 끝에 붙여넣기하여 확장할 수 있습니다. 적절한 미확인 개체가 인덱싱될 수 있도록 새로 붙여넣은 행의 인덱스 수를 증가해야 합니다.
임계값 | 배경에서 미확인 개체를 분리하는 데 사용되는 회색조 값을 지정합니다. 이 값은 DetectBlobs 함수의 자동 설정(기본 설정)을 사용하여 결정하거나, 시행착오를 통해 수동으로 구성하거나, 히스토그램 함수에서 계산된 결과에 대한 셀 참조로 설정할 수 있습니다.
-1(기본값) | 함수가 이미지의 회색조 통계를 기반으로 임계값을 자동으로 평가하고 계산합니다.
0 - 255 | 0에서 255까지의 회색조 값을 지정합니다.
구멍 메우기 | 구멍에 누적된 통계를 처리하기 위한 두 가지 방법 중 하나를 지정합니다.
0 = 꺼짐(기본값) | 전체 미확인 개체 통계에 구멍이 기여하게 합니다. 예를 들어, 미확인 개체에 구멍을 추가하면 면적이 감소됩니다. 참고 : 꺼짐으로 설정되면, 다른 미확인 개체 내에서 구멍인 미확인 개체가 보고됩니다. 아래의 예에서, 미확인 개체 0 내의 구멍인 미확인 개체 1이 보고됩니다. 미확인 개체 통계에서 미확인 개체 0의 면적 값(상단 행)의 값에는 미확인 개체 1의 면적(하단 행)이 포함되지 않습니다.
1 = 켜짐 | 전체 미확인 개체 통계에 구멍이 기여하지 않도록 합니다. 예를 들어, 미확인 개체에 구멍을 추가해도 면적에 영향이 없습니다. 참고 : 꺼짐으로 설정되면, 다른 미확인 개체 내에서 구멍인 미확인 개체는 무시됩니다. 아래의 예에서, 미확인 개체 0 내의 구멍이 무시되고 미확인 개체 0만 보고됩니다. 미확인 개체 통계에서는 미확인 개체 0의 면적에는 구멍을 포함한 전체 면적이 포함됩니다.
경계 미확인 개체 | ROI 경계와 겹치는 미확인 개체를 관리하는 두 가지 방법 중 하나를 지정합니다.
0 = 꺼짐 | ROI 경계와 겹치는 미확인 개체는 제외합니다. ROI 경계와 겹치는 미확인 개체는 최종 Blobs 데이터 구조에 포함되지 않습니다.
1 = 켜짐(기본값) | ROI 경계와 겹치는 미확인 개체도 포함됩니다. ROI 가장자리와 겹치는 미확인 개체도 최종 Blobs 데이터 구조에 포함됩니다(색상 미확인 개체b/색상 배경 및 면적 한계: 최소/면적 한계: 최대 매개 변수에 지정된 설정을 충족하는 경우).
색상: 미확인 개체 | 미확인 개체의 색상을 지정합니다.
0 = 검은색 | 지정된 회색조 값 미만의 미확인 개체만 반환합니다.
1 = 흰색 | 지정된 회색조 값을 초과하는 미확인 개체만 반환합니다.
2 = 둘 중 하나(기본값) | 미확인 개체의 색상에 대한 요구 사항이 없습니다.
참고 : 색상: 미확인 개체 및 색상: 배경을 동일한 색상으로 설정하면 미확인 개체가 보고되지 않습니다. 예를 들어 색상: 미확인 개체가 검은색으로 지정되고 색상: 배경 역시 검은색으로 설정되면 미확인 개체가 보고되지 않습니다.
색상: 미확인 개체 = 검은색 색상: 배경 = 검은색 | 색상: 미확인 개체 = 둘 중 하나 또는 흰색 색상: 배경 = 검은색
그러나 색상: 미확인 개체 및 색상: 배경이 동일한 색상으로 설정된 경우에도 미확인 개체가 반대쪽 색상의 면적에 포함되는 경우 이는 보고됩니다(아래 예 참조). 미확인 개체의 일부가 반대 색상에 포함되지 않으면, 해당 미확인 개체는 보고되지 않습니다.
색상: 미확인 개체 = 검은색 색상: 배경 = 검은색 | 색상: 미확인 개체 = 흰색 색상: 배경 = 흰색
색상: 배경 | 촬상된 이미지의 배경 색을 지정합니다. 전경에서는 8방향 연결 분석이 수행되고 배경에서는 4방향 연결 분석이 수행됩니다.
0 = 검은색
1 = 흰색(기본값)
면적 한계: 최소 | 반환되는 모든 미확인 개체의 최소 면적 제한을 지정합니다(단위: 픽셀. 기본값 = 100). 면적 한계: 최소보다 큰 미확인 개체만 반환됩니다. 매개 변수 범위는 다음과 같습니다. 하한: 0 상한: 연결된 비전 시스템의 해상도(폭 x 높이). 예를 들어, In-Sight D902 비전 시스템에 연결한 경우 매개 변수 범위는 0 - 2,304,000 (1920x1200)입니다.
면적 한계: 최대 | 반환되는 모든 미확인 개체의 최대 면적 제한을 지정합니다(단위: 픽셀. 기본값 = 100000). 면적 한계: 최대보다 작은 미확인 개체만 반환됩니다. 매개 변수 범위는 다음과 같습니다. 하한: 0 상한: 연결된 비전 시스템의 해상도(폭 x 높이). 예를 들어, In-Sight D902 비전 시스템에 연결한 경우 매개 변수 범위는 0 - 2,304,000 (1920x1200)입니다.
표시 | 이미지에서 DetectBlobs 그래픽 오버레이를 표시하는 모드를 지정합니다.
0 = 모두 숨기기(기본값) | DetectBlobs 함수를 포함하는 셀이 스프레드시트에 강조 표시되는 경우를 제외하고 점이 표시되지 않습니다.
1 = 결과 그래픽만 | 미확인 개체 윤곽선이 항상 표시됩니다.
2 = 입력 및 결과 그래픽 | 입력 이미지 영역과 추출된 미확인 개체의 윤곽선이 항상 표시됩니다.

## DetectBlobs 출력

반환 | 이미지에서 추출된 미확인 개체를 포함하는 Blobs 데이터 구조. 입력 매개 변수 중 하나라도 유효하지 않은 경우 #ERR.
결과 | DetectBlobs가 처음으로 셀에 삽입되면 다음 미확인 개체 Vision Data Access functions를 사용하여 스프레드시트에 결과표가 만들어집니다. 참고 : 정렬할 개수가 0이면 이 표는 GetNFound 함수만으로 구성됩니다. 정렬할 개수 매개 변수값이 0보다 큰 경우 DetectBlobs는 Blobs 데이터 구조의 처음 10개의 미확인 개체에 해당하는 최대 10개의 항목이 포함된 결과표를 자동으로 삽입합니다. 더 많은 항목을 표시하려면 표의 마지막 행을 복사하고 표의 끝에 붙여넣기하여 확장할 수 있습니다. 적절한 미확인 개체가 인덱싱될 수 있도록 새로 붙여넣은 행의 인덱스 수를 증가해야 합니다.
레이블 | 함수 이름 | 설명
X | GetX(Blobs, 미확인 개체 인덱스) | 미확인 개체 무게 중심의 x 좌표를 반환합니다.
Y | GetY(Blobs, 미확인 개체 인덱스) | 미확인 개체 무게 중심의 y 좌표를 반환합니다.
각도 | GetAngle(Blobs, 미확인 개체 인덱스) | Y축에 대한 미확인 개체의 주축의 각도를 반환합니다.
색상 | GetColor(Blobs, 미확인 개체 인덱스) | 미확인 개체의 색상 값(0 = 검정, 1 = 흰색)을 반환합니다.
점수 | GetScore(Blobs, 미확인 개체 인덱스) | 미확인 개체가 FindBlobs 함수의 기준과 얼마나 일치하는지 측정합니다.
면적 | GetArea(Blobs, 미확인 개체 인덱스) | 미확인 개체의 면적을 반환합니다(단위: 픽셀). 참고 : 미확인 개체에 구멍이 있는 경우 구멍 메우기 확인란이 활성화되어 있는지 여부에 따라 면적 값이 달라집니다.
신장 | GetElongation(Blobs, 미확인 개체 인덱스) | 미확인 개체의 픽셀이 미확인 개체의 무게 중심에서 어떻게 뻗어 나가는지를 나타내는 값을 반환합니다. 예를 들어, 원은 신장 값이 0이지만 신장 값이 큽니다.
구멍 | GetHoles(Blobs, 미확인 개체 인덱스) | 미확인 내에 포함된 구멍의 수를 반환합니다. 참고 : 면적 한계: 최소보다 큰 미확인 개체만 반환됩니다.
둘레 | GetPerimeter(Blobs, 미확인 개체 인덱스) | 미확인 개체를 에워싼 경계의 길이를 반환합니다. 둘레는 미확인 개체 경계를 구성하는 픽셀의 외부 가장자리를 센 값입니다.
확산 | GetSpread(Blobs, 미확인 개체 인덱스) | 미확인 개체의 픽셀이 미확인 개체의 무게 중심에서 어떻게 분포하는지를 나타내는 값을 반환합니다. 예를 들어, 원형 형상의 개체는 타원 형상의 개체보다 확산 값이 낮을 것입니다.

## DetectBlobs 예

DetectBlobs 함수는 다양한 모양과 크기로 구성될 수 있으며 서로 연결된 픽셀의 미확인 개체를 식별하고 찾는 데 사용됩니다. 이 예제에서는 DetectBlobs 데이터 구조 결과표에서 반환되는 정보가 발견된 미확인 개체와 관련되는 방식과 해당 정보를 이용해 나중에 해당 특성에 따라 미확인 개체를 정렬하고 필터링하는 방법을 보여 줍니다.

이 예에서는 DetectBlobs 함수의 결과표에서 반환되는 값의 의미를 설명하기 위해 다음 이미지를 사용했습니다.

DetectBlobs 함수가 스프레드시트의 빈 셀에 삽입되었습니다. 이미지의 도형에 따라 DetectBlobs 속성 시트의 매개 변수를 다음과 같이 구성했습니다.

- 이미지: 이 예에서는 기본 설정을 사용했지만 이 매개 변수는 미확인 개체를 검사하기 전에 과도한 이미지 노이즈를 없애기 위해 이미지를 처리하는 Filter 함수에서 생성된 Image 데이터 구조처럼 어떠한 이미지 데이터 구조라도 참조할 수 있습니다.
- Fixture: 이미지가 고정되어 있고 회전하거나 이동하지 않기 때문에 기본 설정을 사용했습니다. 하지만 움직임이 있을 이미지라면 Fixture에 이미지의 영역을 할당하는 것이 좋습니다.
- 영역: 이미지 영역은 분석 시 모든 도형을 포함하도록 최대화했습니다. 영역 매개 변수를 클릭한 다음 속성 시트의 도구 모음에서 영역 최대화 버튼을 누르면 전체 이미지를 덮도록 영역이 자동으로 늘어납니다.
- 정렬할 개수: 정렬할 개수는 6으로 설정되었습니다. 이 매개 변수를 0으로 설정하여도 됩니다. 이 경우 도구는 색상 미확인 개체/색상 배경 및 면적 한계: 최소/면적 한계: 최대 매개 변수에 지정된 색상 및 크기 설정을 충족하는 미확인 개체를 모두 반환할 것입니다.
- 임계값: 기본 설정이 사용되었으며, 따라서 회색조 임계값은 자동으로 계산됩니다. 이 이미지에서는 회색조 값 차이가 매우 두드러지며 어두운 픽셀과 밝은 픽셀이 명확합니다. 그라데이션이 미묘하거나 자동 임계값 설정으로 값이 잘 분리되지 않는 경우에는 HistHead 또는 HistTail 함수와 같은 히스토그램 함수를 사용하여 이미지의 다양한 영역에서 회색조 강도를 판단하는 것이 매우 유용할 수 있습니다.
- 구멍 메우기: 기본 설정을 사용하여 미확인 개체에 있는 구멍도 기여하게 함으로써 해당 미확인 개체 도형의 전체 면적을 줄였습니다. 구멍 메우기 확인란에 체크하면 미확인 개체 내의 구멍이 보고되고 구멍 내의 면적이 추가되어 구멍이 있는 미확인 개체의 면적이 커집니다.
- 경계 미확인 개체: 이미지 영역의 경계와 겹치는 모든 미확인 개체를 포함하는 기본 설정을 사용했습니다. 이 설정에서 이미지가 왼쪽으로 이동하여 가장 큰 원과 가장 작은 사각형 모양이 이미지 영역의 왼쪽 경계에 겹치게 되면 해당 영역의 경계에 있는 도형의 일부가 미호가인 개체로 추출됩니다. 그러나 확인란을 선택하지 않았다면 해당 미확인 개체는 처리되지 않았을 것입니다.
- 면적 한계: 최소/최대: 기본 설정을 사용했습니다. 이 설정에서는 추출 단계에서 영역의 미확인 개체를 필터링하여 최소 및 최대 면적 한계에 따라 미확인 개체를 평가하여 미확인 개체의 면적 조건에 따라 미확인 개체로 분류할 수 있는지 결정합니다.
- 표시: 기본 설정을 사용했습니다. 따라서 해당 Blobs 데이터 구조를 포함하는 셀을 선택한 경우에만 결과 그래픽이 표시됩니다.

DetectBlobs 속성 시트를 구성하면 Blobs 데이터 구조 및 결과 데이터 표가 만들어집니다.

결과표에 반환되는 값을 사용하여 FindBlobs 및 SortBlobs 함수로 미확인 개체를 필터링하고 정렬할 수 있습니다. 예를 들어 FindBlobs 함수를 스프레드시트에 삽입하고 DetectBlobs 함수를 참조할 수 있습니다. 이어서 FindBlobs 함수를 사용하여 확산을 미확인 개체를 필터링합니다. 다음으로 SortBlobs 함수를 스프레드시트에 삽입할 수 있으며 최근에 만든 FindBlobs 함수를 참조하여 X, Y 위치에 따라 미확인 개체 목록을 정렬할 수 있습니다.