Operator Library: Blob
BlobDetector2D operator는 이진 이미지에서 객체를 감지하고 그 속성을 결정합니다. 이 오퍼레이터의 출력은 각 객체의 속성을 나타내는 여러 데이터 스트림입니다.
이 오퍼레이터의 기능은 VisualApplets에서 완벽하게 시뮬레이션할 수 있습니다.
Library Blob 소개도 함께 참조하세요.
BlobDetector2D는 BoundingBox, Area, 그리고 Center of Gravity X 및 Y 기능을 지원합니다.
![]() |
Center of Gravity X 및 Y는 오퍼레이터의 직접 출력이 아님 |
|---|---|
|
출력 포트 CenterX 및 CenterY는 실제로 이미지 모멘트 M10 (CenterX)과 M01(CenterY)을 제공합니다. 객체의 무게 중심을 추출하려면 모멘트를 추출된 면적으로 나누어야 합니다:
|
입력된 이미지는 오퍼레이터에 의해 라인 단위로 처리됩니다. 오퍼레이터는 미래를 예측할 수 없으므로, 나중에 연결되는 영역은 처음에는 독립적으로 보일 수 있습니다. 따라서 이 텍스트에서는 단일 라인 내의 연결된 픽셀을 객체 아티팩트(object artifacts)라고 부릅니다. BlobDetector2D 오퍼레이터는 이러한 객체 아티팩트가 다음 라인의 다른 객체 아티팩트와 겹치는지 확인합니다. 이는 객체가 실제로 독립적인지 아니면 더 큰 객체의 일부인지 확인하기 위한 것입니다. 오퍼레이터가 처리할 수 있는 객체 아티팩트의 최대 수는 LabelCount 파라미터로 정의됩니다. 객체 아티팩트 수가 LabelCount 값을 초과하면 데이터가 손실되고 객체 결과의 무결성이 더 이상 보장되지 않습니다. 이를 컨텍스트 손상(context corruption)이라고 합니다. 데이터가 손실된 라인은 Line Error 더미 객체로 표시되며, ErrorFlag로 식별할 수 있습니다. 손상된 컨텍스트 내의 모든 후속 객체는 그렇게 플래그가 지정됩니다. 컨텍스트 손상은 프레임 종료 시 또는 applet 재시작에 의해 컨텍스트가 자동으로 재설정되면 종료됩니다. 모든 오류 플래그는 'Output Ports' 섹션에 나열되어 있습니다.
대부분의 경우 컨텍스트 손상을 방지하는 데 필요한 레이블 수는 라인 내의 객체 아티팩트 최대 수와 같습니다. neighborhood = 4 및 neighborhood = 8의 경우 필요한 정확한 레이블 수는 약간 다릅니다:
-
neighborhood = 4인 경우, 컨텍스트 손상을 방지하는 데 필요한 레이블 수는 N 라인의 X 위치에 있는 픽셀과 N+1 라인의 X 위치에 있는 픽셀 간의 객체 아티팩트 최대 수와 같습니다.
-
neighborhood = 8인 경우, 컨텍스트 손상을 방지하는 데 필요한 레이블 수는 N 라인의 X 위치에 있는 픽셀과 N+1 라인의 X+1 위치에 있는 픽셀 간의 객체 아티팩트 최대 수와 같습니다.
선택한 레이블 양이 사용 사례에 충분한지 확실하지 않은 경우, 시뮬레이션에서 확인하세요.
BlobDetector2D 모듈을 인스턴스화할 때 생성할 출력 포트를 정의할 수 있습니다. 포트를 활성화/비활성화하면 해당 기능도 자동으로 활성화/비활성화됩니다. 이러한 포트를 확인한 후에는 더 이상 변경할 수 없습니다. 다른 출력 포트가 필요한 경우 다른 BlobDetector2D 모듈을 인스턴스화해야 합니다.
블롭 검출기 오퍼레이터는 처리 속도(즉, 대역폭)가 이미지 콘텐츠에 따라 달라지는 몇 안 되는 오퍼레이터 중 하나입니다. 이 오퍼레이터는 응집력 있는 라인 내에서 전경 픽셀과 배경 픽셀 간의 변화가 거의 없는 이미지에서 가장 잘 작동합니다. 따라서 여러 라인에 노이즈나 많은 수의 객체 아티팩트가 있는 경우 데이터 처리량이 눈에 띄게 느려집니다. 그러나 이는 노이즈가 매우 심한 이미지만 해당됩니다.
이 오퍼레이터는 입력 이미지를 라인 단위로 처리하여 최소한의 지연 시간으로 작동합니다. 객체의 끝이 명확해지면 오퍼레이터가 즉시 객체 기능을 출력으로 제공합니다. 따라서 객체 출력은 해당 객체가 끝나는 동일한 라인에서 발생합니다. 이를 통해 이미지 자체가 오퍼레이터에 의해 계속 처리되는 동안 완료된 객체 기능을 후처리할 수 있습니다.
DMA 및 기타 일부 오퍼레이터는 완료를보고하기 전에 프레임 종료 신호를 기다립니다. 프레임 종료 신호는 입력 이미지의 마지막 라인이 처리되면 생성됩니다.
오퍼레이터의 리소스 소비는 활성화된 기능, 기능에 사용되는 비트 수, 선택한 레이블 수에 따라 다릅니다. 따라서 Basler는 필요하지 않은 기능을 비활성화하고 LabelCount 파라미터를 설정할 때 주의할 것을 권장합니다.
![]() |
Bounding Box 포트를 부분적으로 비활성화해도 리소스가 절약되지 않음 |
|---|---|
|
바운딩 박스에는 여러 출력 포트가 있으므로 모든 포트가 비활성화된 경우에만 기능이 비활성화됩니다. 바운딩 박스 포트를 부분적으로 비활성화해도 리소스는 절약되지 않습니다. |
![]() |
최대값을 수동으로 설정하면 리소스가 절약됨 |
|---|---|
|
리소스 절약 및 디자인 처리 개선을 위해, 감지할 객체의 최대값을 알고 있는 경우 링크의 Bit Width를 수동으로 설정하는 것이 좋습니다. |
블롭 검출기의 ImageI 입력은 이진(pixel bit width 1), 2D 이미지를 예상합니다. 이 오퍼레이터는 이미지 내의 서로 다른 라인 길이뿐만 아니라 빈 라인 및 빈 프레임의 입력도 지원합니다.
오퍼레이터는 전경 값이 ONE이고 배경 값이 ZERO라고 가정합니다. 예비 이진화 프로세스에서 이 요구 사항을 충족하는지 확인하세요.
출력은 VALT_IMAGE2D 이미지 형식으로 표시됩니다. 각 출력 포트는 하나의 객체 기능/객체 속성을 나타냅니다. 이들은 동기식이며 함께 하나의 단일 객체를 설명합니다. 각 출력 픽셀은 완료된 객체 또는 오류 상태 객체의 값을 제공합니다. 이 출력이 추출된 객체인지 오류 상태 객체인지는 ErrorFlagsO 출력 포트로 표시됩니다. 객체를 나타내는 픽셀은 객체가 완료된 동일한 라인에 나타납니다. 완료된 순서대로 출력됩니다. 예를 들어, 두 객체가 10번 라인에서 끝납니다. 객체 A의 마지막 픽셀은 X 좌표 42를 가지고, 객체 B의 마지막 픽셀은 X 좌표 97을 가집니다. 따라서 객체 A는 오퍼레이터의 출력 포트에서 첫 번째 픽셀이고 객체 B는 두 번째 픽셀입니다. 객체가 완료되지 않고 오류가 발생하지 않은 라인은 비어 있습니다.
출력 포트의 너비는 기능 데이터의 오버플로를 방지하기 위해 제공된 입력 형식에 따라 자동으로 조정됩니다. 또는 출력 포트의 너비를 수동으로 구성할 수도 있습니다. 링크 Bit Width의 수동 구성은 오퍼레이터 속성에서 활성화한 경우 Area/ CenterX/ CenterY에 대해 사용할 수 있습니다.
ErrorFlagsO 포트는 오버플로우 또는 추가 정보 태그에 대한 여러 오류 플래그를 출력합니다. 각 비트는 특정 플래그에 할당되어 있습니다. 이러한 오류 플래그는 하드웨어의 런타임 환경 또는 시뮬레이션에서 확인할 수 있습니다. 시뮬레이션에서 이러한 오류 플래그를 확인하려면 다음을 수행하십시오.
-
BlobDetector2D의 ErrorFlagsO 포트에 시뮬레이션 프로브를 추가합니다.
-
오버플로우를 유발하는 이미지를 시뮬레이션에 추가합니다.
-
시뮬레이션을 실행합니다.
-
출력 포트의 를 엽니다.
-
확인하려는 픽셀로 스크롤하여 확대하고 픽셀 값을 확인한 후 픽셀 값을 다음과 같이 설정합니다. :
-
Hex 값 내의 활성화된 비트는 블롭 객체와 관련된 다양한 오류 또는 상태 정보를 나타냅니다. 자세한 내용은 아래 표를 참조하십시오.
오류 플래그에 대한 자세한 설명은 아래의 파라미터 설명에서 확인할 수 있습니다. 요약은 다음 표와 같습니다.
| Bit # | 설명 | 참고 |
|---|---|---|
| 0 | Area Overflow |
객체의 Area 값이 처리 과정 중 지정된 출력 bit width를 초과했습니다. |
| 1 | CenterX Overflow |
객체의 CenterX 값(이미지 모멘트 M10)이 처리 과정 중 지정된 출력 bit width를 초과했습니다. |
| 2 | CenterY Overflow |
객체의 CenterY 값(이미지 모멘트 M01)이 처리 과정 중 지정된 출력 bit width를 초과했습니다. |
| 3, 4 | Reserved |
향후 확장을 위해 예약되어 있습니다. |
| 5 | Line Error |
선택한 레이블 수로 처리할 수 있는 것보다 더 많은 객체 아티팩트가 발생한 라인을 표시하는 더미 객체를 나타냅니다. 추가 들어오는 데이터를 처리하기에 사용 가능한 메모리가 부족합니다. 이것은 더미 객체이므로 다른 포트의 피처 데이터 값에는 유용한 데이터가 포함되어 있지 않습니다. 시뮬레이션에서는 피처 값이 0으로 표시되지만 하드웨어에서는 어떤 값일 수도 있습니다. 하위 ErrorBits 7-0이 활성화된 피처 및 해당 값에 연결되어 있으므로, 이러한 플래그는 하드웨어와 시뮬레이션 간에 다를 수 있습니다. 이 오류 플래그가 존재하는 경우, 항상 라인의 첫 번째 객체 출력입니다. |
| 6 | ContextCorruption |
선택한 레이블 수로 처리할 수 있는 것보다 더 많은 객체 아티팩트가 발생했습니다. 모든 들어오는 데이터를 처리하기에 사용 가능한 메모리가 부족합니다. 플래그가 지정된 객체의 무결성은 보장할 수 없습니다. 본 오퍼레이터는 프레임이 종료되거나 취득을 재시작하면 정상적인 기능으로 복구됩니다. 다음 이미지는 이전 컨텍스트 손상의 영향 없이 처리됩니다. |
표 37. Blob Error Flags 설명
| Property | Value |
|---|---|
| Operator Type | M |
| 입력 링크 | ImageI, 데이터 입력 |
| Output Links | BoundingX0O, 데이터 출력 BoundingX1O, 데이터 출력 BoundingY1O, 데이터 출력 BoundingHeightO, 데이터 출력 AreaO, 데이터 출력 CenterXO, 데이터 출력 CenterYO, 데이터 출력 ErrorFlagsO, 데이터 출력 |
|
Bit Width는 ImageI 링크의 들어오는 최대 이미지 너비를 기반으로 합니다. 다음과 같이 계산됩니다. |
|
|
Bit Width는 ImageI 링크의 들어오는 최대 이미지 높이를 기반으로 합니다. 다음과 같이 계산됩니다. |
|
|
Bit Width는 ImageI 링크의 들어오는 최대 이미지 높이를 기반으로 합니다. 다음과 같이 계산됩니다. |
|
|
AreaBitWidthMode, CenterXBitWidthMode, CenterYBitWidthMode 파라미터를 통해 링크를 수동으로 구성할지 자동 모드를 사용할지 선택할 수 있습니다. 링크를 수동으로 편집하는 경우 허용되는 범위는 [1, 48]입니다. |
|
|
최대 이미지 너비는 LabelCount + 1 파라미터와 같습니다. |
| LabelCount | |
|---|---|
| Type | static parameter |
| Default | 100 |
| Range | [1, (최대 이미지 너비(입력 링크 I) / 2 + 2] |
|
이 파라미터는 부분 객체를 내부적으로 추적하기 위해 사용 가능한 레이블 수를 설정합니다. 또한 한 라인에서 출력될 수 있는 최대 객체 수에도 영향을 미칩니다. BlobDetector2D 오퍼레이터에 필요한 리소스는 레이블 수에 따라 다릅니다. 이 파라미터의 권장 값 범위는 100에서 500 사이이며, 이는 대부분의 애플리케이션에 충분합니다. 선택된 레이블보다 더 많은 부분 객체가 발생하면 데이터가 손실되고 프레임의 컨텍스트가 손상됩니다. 이 경우, 출력 링크 ErrorFlagsO의 6번째 비트가 '1'이 되어 제공된 데이터가 더 이상 신뢰할 수 없음을 나타냅니다. 이 오류 비트는 데이터 손실이 감지되면 설정되며, 출력 프레임이 종료되면 재설정됩니다. |
|
| Neighborhood | |
|---|---|
| Type | static parameter |
| Default | EightConnected |
| Range | {FourConnected, EightConnected} |
|
이 파라미터는 Object Detection에 필요한 이웃 픽셀을 선택합니다. 픽셀 이웃에 대한 자세한 설명은 'Definition'을 참조하십시오. |
|
| AreaBitWidthMode | |
|---|---|
| Type | static parameter |
| Default | AutomaticFrameMaximum |
| Range | {AutomaticFrameMaximum, LinkManuallyEditable} |
|
객체의 면적은 모든 객체 전경 픽셀의 합으로 정의됩니다. AutomaticContextMaximum을 선택하면 오퍼레이터가 객체의 최대 크기에 필요한 비트를 자동으로 설정합니다. 객체의 최대 가능한 크기는 입력 링크 I의 최대 너비와 높이에 따라 달라집니다. 객체의 이론상 최대 면적은 이미지의 모든 픽셀이 전경 값으로 구성된 경우, 즉 하나의 큰 객체인 흰색 입력 이미지일 때 달성됩니다. 최대 가능한 CenterX(이미지 모멘트 M10) 값을 알고 있거나 특정 X 좌표의 객체만 중요한 경우, Basler는 LinkManuallyEditable 모드를 사용할 것을 권장합니다. 이렇게 하면 리소스가 절약되고 전체 디자인의 빌드 시간이 단축됩니다. LinkManuallyEditable 모드에서는 허용 범위 [1, 48] 내에서 링크의 Bit Width 속성을 편집할 수 있습니다. 링크의 Bit Width는 Area 기능을 계산하는 데 내부적으로 사용되는 Bit Width로 직접 변환되므로 전체 리소스 소비에 영향을 미칩니다. 비트 폭이 객체의 Area 값에 충분하지 않은 경우 ErrorFlagO 링크(비트 0)를 통해 표시됩니다. |
|
| CenterXBitWidthMode | |
|---|---|
| Type | static parameter |
| Default | AutomaticFrameMaximum |
| Range | {AutomaticFrameMaximum, LinkManuallyEditable} |
|
Center of Gravity 기능에 대한 설명은 'Center of Gravity'를 참조하십시오. 출력은 이미지 모멘트 M10입니다. Center of Gravity X에 대한 픽셀 좌표를 얻으려면 DIV 오퍼레이터를 사용하거나 호스트 PC에서 값을 면적으로 나누십시오. AutomaticContextMaximum을 설정하면 오퍼레이터가 출력 비트를 자동으로 설정합니다. 객체의 최대 가능한 크기는 입력 링크 I의 최대 너비와 높이에 따라 달라집니다. 객체의 이론상 최대 CenterX 값은 이미지의 모든 픽셀이 전경 값으로 구성된 경우, 즉 하나의 큰 객체인 흰색 입력 이미지일 때 달성됩니다. 큰 입력 이미지를 사용하는 경우 CenterXO 링크의 Bit Width가 매우 높아질 수 있습니다. 최대 가능한 CenterX(이미지 모멘트 M10) 값을 알고 있거나 특정 X 좌표의 객체만 중요한 경우, Basler는 LinkManuallyEditable 모드를 사용할 것을 권장합니다. 이렇게 하면 리소스가 절약되고 전체 디자인의 빌드 시간이 단축됩니다. LinkManuallyEditable 모드에서는 허용 범위 [1, 48] 내에서 링크의 Bit Width 속성을 편집할 수 있습니다. 링크의 Bit Width는 CenterX 기능을 계산하는 데 내부적으로 사용되는 Bit Width로 직접 변환되므로 전체 리소스 소비에 영향을 미칩니다. 비트 폭이 객체의 CenterX 값에 충분하지 않은 경우 ErrorFlagO 링크(비트 1)를 통해 표시됩니다. |
|
| CenterYBitWidthMode | |
|---|---|
| Type | static parameter |
| Default | AutomaticFrameMaximum |
| Range | {AutomaticFrameMaximum, LinkManuallyEditable} |
|
Center of Gravity에 대한 설명은 'Center of Gravity'를 참조하십시오. 출력은 이미지 모멘트 M01입니다. Center of Gravity Y에 대한 픽셀 좌표를 얻으려면 DIV 오퍼레이터를 사용하거나 호스트 PC에서 값을 면적으로 나누십시오. AutomaticContextMaximum을 설정하면 오퍼레이터가 출력 비트를 자동으로 설정합니다. 객체의 최대 가능한 크기는 입력 링크 I의 최대 너비와 높이에 따라 달라집니다. 객체의 이론상 최대 CenterY 값은 이미지의 모든 픽셀이 전경 값으로 구성된 경우, 즉 하나의 큰 객체인 흰색 입력 이미지일 때 달성됩니다. 큰 입력 이미지를 사용하는 경우 CenterYO 링크의 Bit Width가 매우 높아질 수 있습니다. 최대 가능한 CenterY(이미지 모멘트 M10) 값을 알고 있거나 특정 Y 좌표의 객체만 중요한 경우, Basler는 LinkManuallyEditable 모드를 사용할 것을 권장합니다. 이렇게 하면 리소스가 절약되고 전체 디자인의 빌드 시간이 단축됩니다. LinkManuallyEditable 모드에서는 허용 범위 [1, 48] 내에서 링크의 Bit Width 속성을 편집할 수 있습니다. 링크의 Bit Width는 Area 기능을 계산하는 데 내부적으로 사용되는 Bit Width로 직접 변환되므로 전체 리소스 소비에 영향을 미칩니다. 비트 폭이 객체의 CenterY 값에 충분하지 않은 경우 ErrorFlagO 링크(비트 2)를 통해 표시됩니다. |
|
BlobDetector2D 오퍼레이터의 사용법은 다음 예시에 나와 있습니다.
-
예시 - 영역 스캔 응용 프로그램에서 BlobDetector2D 오퍼레이터의 사용법을 보여줍니다.

![[참고]](../common/images/admon/note.png)






이전

