Blob_Analysis_2D 오퍼레이터

Operator Library: Blob

Blob_Analysis_2D 연산자는 이진 이미지에서 객체를 감지하고 그 속성을 결정합니다. 이 연산자의 출력은 각 객체의 속성을 나타내는 여러 데이터 스트림입니다.

[참고] Blob_Analysis_2D는 레거시 연산자입니다.

Blob_Analysis_2D 연산자는 하위 호환성을 유지하기 위해서만 제공되는 레거시 연산자입니다. 새로운 설계에서는 대신 BlobDetector2D를 사용하십시오.

이 연산자의 기능은 VisualApplets에서 완전히 시뮬레이션할 수 있습니다. 단, 출력 값의 순서가 하드웨어 구현과 일치하지 않을 수 있으므로 주의하십시오.

먼저 블롭 분석 연산자에 대한 일반적인 소개(Library Blob 섹션)를 읽어 보시기 바랍니다.

성능

VisualApplets 블롭 분석 연산자는 처리 속도, 즉 대역폭이 이미지 콘텐츠에 따라 달라지는 몇 안 되는 연산자 중 하나입니다. 이미지에 객체가 많으면 큰 객체 리스트가 생성됩니다. 이로 인해 연산자 입력 속도가 느려질 수 있습니다. 그러나 이는 매우 강한 노이즈가 포함된 이미지에만 적용됩니다. 제어된 조건에서는 연산자가 충분히 빠르게 작동합니다.

Latency

이 연산자는 최소 지연 시간으로 작동합니다. 입력 이미지는 라인 단위로 블롭 분석 라인에 전송됩니다. 객체가 연산자에 완전히 전송되는 즉시 연산자는 객체 완료를 감지하고 객체 피처를 출력합니다. 따라서 이미지 자체가 연산자에 의해 계속 처리되는 동안에도 객체 피처의 후처리를 시작할 수 있습니다.

DMA 및 기타 일부 연산자는 완료를 보고하기 전에 프레임 종료 신호를 기다립니다. 프레임 종료 신호는 입력 이미지가 완료되면 생성됩니다.

Input Ports

블롭 분석의 ImageI 입력은 이진 2차원 이미지, 즉 Bit Width가 1 Bit이고 지정된 이미지 너비와 지정된 이미지 높이를 가진 이미지로 표현됩니다. 최대 32픽셀의 Parallelism을 선택할 수 있습니다.

이 연산자는 전경값이 1, 배경값이 0이라고 가정합니다. 예비 이진화 과정에서 이 요구 사항이 충족되도록 하십시오.

출력 포트

각 출력 포트는 하나의 객체 피처 / 객체 속성을 나타냅니다. 이 포트의 각 출력 값은 하나의 객체를 나타냅니다. 따라서 각 객체 속성은 하나의 데이터 스트림을 생성합니다. 출력 데이터 스트림의 길이는 이미지에서 발견된 객체의 수와 같습니다. 스트림은 여러 하위 프레임으로 중단될 수 있습니다. 각 출력 포트의 데이터는 높이가 1픽셀이고 특정 길이를 가집니다. 출력은 흑백 2D 이미지 형태로 표현됩니다.

출력 포트는 연산자 파라미터와 입력 속성을 사용하여 구성됩니다. 링크 속성을 직접 변경하는 것은 불가능합니다.

포트 ErrorFlagsO는 오버플로의 여러 오류 플래그를 출력합니다. 각 비트는 특수 플래그용으로 예약되어 있습니다. 자세한 설명은 아래의 파라미터 설명에서 확인할 수 있으며, 요약은 다음 표에 나와 있습니다.

Bit # 설명 객체 관련 참고
0, 1 레이블 오버플로 no

블롭 분석에서 메모리에 저장하기에는 너무 많은 객체가 감지되었습니다. 두 이미지 라인 내의 최대 객체 수를 늘리려면 연산자 파라미터 "LabelBits"를 변경하면 됩니다.

이 플래그는 감지 시점부터 데이터 출력 프레임이 끝날 때까지 설정됩니다. 지금까지 출력된 모든 객체 속성은 유효합니다.

Blob Analysis 1D 연산자의 경우, 이 플래그는 다음 유효 데이터 출력과 함께 한 클럭 주기 동안만 상위 수준 상태를 갖습니다.

플래그가 설정된 후 블롭 분석의 출력 결과로 잘못된 객체 속성이 반환될 수 있습니다. 충분한 객체 레이블을 사용할 수 있는 경우 연산자는 올바른 기능으로 돌아갑니다.

2 출력이 잘렸습니다 예

이미지의 객체 수가 연산자 파라미터 대화 상자에 설정된 최대 출력 너비를 초과합니다. 이 플래그는 출력 너비에 맞는 마지막 객체와 함께 설정됩니다.

3 객체 크기가 최댓값을 초과함 예

1D Blob Analysis의 객체가 최대 높이를 초과하는 경우 이 플래그가 설정됩니다. 연산자는 초과하는 이 객체를 더 작은 객체로 자릅니다. 잘림 현상을 감지할 수 있도록 계속되는 객체에는 이 플래그가 표시됩니다.

2D Blob Analysis의 경우 플래그가 0으로 고정됩니다.

4 면적이 잘립니다 예

오류 플래그를 포함한 객체의 면적이 면적 비트가 허용하는 범위를 초과합니다.

5 X 무게 중심이 잘립니다 예

X 방향의 무게 중심이 비트가 허용하는 범위를 초과합니다.

6 Y 무게 중심이 잘립니다 예

Y 방향의 무게 중심이 비트가 허용하는 범위를 초과합니다.

7 컨투어 길이 오버플로 예

컨투어 길이가 오퍼레이터에 대해 매개변수로 설정된 비트가 허용하는 범위를 초과합니다.

표 39. Blob 오류 플래그 설명


I/O Properties

Property Value
Operator Type M
입력 링크 I, data input
Output Links BoundingX0O, 데이터 출력
BoundingX1O, 데이터 출력
BoundingY0O, 데이터 출력
BoundingY1O, 데이터 출력
AreaO, 데이터 출력
CenterXO, 데이터 출력
CenterYO, 데이터 출력
ContourOrthoO, 데이터 출력
ContourDiaO, 데이터 출력
ErrorFlagsO, 데이터 출력

지원되는 Link Format

Link Parameter Input Link I 출력 링크 BoundingX0O 출력 링크 BoundingX1O 출력 링크 BoundingY0O 출력 링크 BoundingY1O 출력 링크 AreaO 출력 링크 CenterXO 출력 링크 CenterYO 출력 링크 ContourOrthoO 출력 링크 ContourDiaO 출력 링크 ErrorFlagsO
Bit Width 1 auto1 auto2 auto3 auto4 auto5 auto6 auto7 auto8 auto9 8
Arithmetic unsigned unsigned unsigned unsigned unsigned unsigned unsigned unsigned unsigned unsigned unsigned
Parallelism {1, 2, 4, 8, 16, 32} 1 1 1 1 1 1 1 1 1 1
Kernel Columns 1 1 1 1 1 1 1 1 1 1 1
Kernel Rows 1 1 1 1 1 1 1 1 1 1 1
Img Protocol VALT_IMAGE2D VALT_IMAGE2D VALT_IMAGE2D VALT_IMAGE2D VALT_IMAGE2D VALT_IMAGE2D VALT_IMAGE2D VALT_IMAGE2D VALT_IMAGE2D VALT_IMAGE2D VALT_IMAGE2D
Color Format VAF_GRAY VAF_GRAY VAF_GRAY VAF_GRAY VAF_GRAY VAF_GRAY VAF_GRAY VAF_GRAY VAF_GRAY VAF_GRAY VAF_GRAY
Color Flavor FL_NONE FL_NONE FL_NONE FL_NONE FL_NONE FL_NONE FL_NONE FL_NONE FL_NONE FL_NONE FL_NONE
Max. Img Width any auto10 auto11 auto12 auto13 auto14 auto15 auto16 auto17 auto18 auto19
Max. Img Height any 1 1 1 1 1 1 1 1 1 1

1 2 12 4 5 6 7 8 9

출력 Bit Width은 객체 피처의 매개변수 설정에 따라 달라집니다. 피처가 비활성화된 경우, 출력은 항상 값이 0인 1비트로 설정됩니다.

10 11 12 13 14 15 16 17 18 19

최대 출력 이미지 너비는 output_frame_size 매개변수의 설정에 따라 달라집니다.

Parameters

label_bits
Type static parameter
Default 7
Range [5, 31]

이 매개변수는 내부적으로 객체에 레이블을 지정하는 데 사용되는 비트 수를 설정합니다. 또한 2^label_bits에 의해 결정되며 두 개의 이미지 라인 내에서 공존할 수 있는 최대 객체 수도 좌우합니다. blob 분석에 필요한 Memory 리소스는 비트가 하나 추가될 때마다 거의 두 배로 증가합니다. 이 매개변수의 적절한 값 범위는 7~9비트이며, 이는 거의 모든 애플리케이션에 충분합니다.

이 주소 공간의 오버플로가 감지되면 오퍼레이터는 "ErrorFlagsO" 포트의 비트 0과 1에 오류 플래그를 출력합니다. 이 플래그는 오버플로가 감지되면 설정되며 출력 프레임이 끝날 때 재설정됩니다.

neighborhood
Type static parameter
Default eight_connected
Range {four_connected, eight_connected}

Object Detection에 필요한 neighborhood를 선택합니다. 픽셀 neighborhood에 대한 자세한 설명은 'Definition'을 참조하십시오.

output_frame_size
Type static parameter
Default specify_max_no_of_objects
Range {maximum_required, specify_max_no_of_objects}

이론적으로 이미지에 채울 수 있는 최대 객체 수는 입력 이미지 너비 * 입력 이미지 높이 / 2입니다(4-연결 이웃을 사용하는 체크 무늬 패턴과 동일). 이 패턴은 발생할 가능성이 매우 낮습니다. 따라서 이 파라미터를 통해 이미지의 최대 객체 수를 설정할 수 있습니다.

max_output_frame_size
Type static parameter
Default 65536
Range [1, 67108864]

출력에서 최대 객체 수를 선택합니다. 블롭 분석에서 감지된 이 수보다 많은 객체는 폐기됩니다. 그러나 "ErrorFlagsO" 포트에는 비트 2에 오류 플래그가 설정됩니다. 이 플래그는 마지막 유효한 객체와 함께 설정됩니다. "ouput_frame_size"가 "maximum_required"로 설정된 경우 이 파라미터는 비활성화됩니다.

bounding_box_x0
Type static parameter
Default used
Range {used, not_used}

경계 상자는 객체에 외접하는 최소 축 정렬 사각형을 나타냅니다. 각 좌표 값은 이미지의 왼쪽 상단 모서리를 기준으로 합니다. 바운딩 박스 X0은 각 객체의 가장 낮은 x 좌표를 나타냅니다. 이 값은 "BoundingX0O"로 출력됩니다. Bit Width는 입력 이미지에 의해 결정됩니다. 바운딩 박스를 사용하지 않는 경우 Bit Width는 출력이 상숫값 0인 1비트로 설정됩니다.

bounding_box_x1
Type static parameter
Default used
Range {used, not_used}

경계 상자는 객체에 외접하는 최소 축 정렬 사각형을 나타냅니다. 각 좌표 값은 이미지의 왼쪽 상단 모서리를 기준으로 합니다. 바운딩 박스 X1은 각 객체의 가장 높은 x 좌표를 나타냅니다. 이 값은 "BoundingX1O"로 출력됩니다. Bit Width는 입력 이미지에서 결정됩니다. 바운딩 박스를 사용하지 않는 경우 Bit Width는 출력이 상숫값 0인 1비트로 설정됩니다.

bounding_box_y0
Type static parameter
Default used
Range {used, not_used}

경계 상자는 객체에 외접하는 최소 축 정렬 사각형을 나타냅니다. 각 좌표 값은 이미지의 왼쪽 상단 모서리를 기준으로 합니다. 바운딩 박스 Y0은 각 객체의 가장 낮은 y 좌표를 나타냅니다. 이 값은 "BoundingY0O"로 출력됩니다. Bit Width는 입력 이미지에서 결정됩니다. 바운딩 박스를 사용하지 않는 경우 Bit Width는 출력이 상숫값 0인 1비트로 설정됩니다.

bounding_box_y1
Type static parameter
Default used
Range {used, not_used}

경계 상자는 객체에 외접하는 최소 축 정렬 사각형을 나타냅니다. 각 좌표 값은 이미지의 왼쪽 상단 모서리를 기준으로 합니다. 바운딩 박스 Y1은 각 객체의 가장 높은 y 좌표를 나타냅니다. 이 값은 "BoundingY1O"로 출력됩니다. Bit Width는 입력 이미지에서 결정됩니다. 바운딩 박스를 사용하지 않는 경우 Bit Width는 출력이 상숫값 0인 1비트로 설정됩니다.

area_mode
Type static parameter
Default use_area_with_maximum_required_bits
Range {area_not_used, use_area_with_maximum_required_bits, use_area_with_specified_bits}

객체의 면적은 모든 객체 전경 픽셀의 합으로 정의됩니다. 이 파라미터는 필요한 면적 모드를 선택하는 데 사용됩니다. "use_area_with_maximum_required_bits"를 선택하면 연산자가 객체의 최대 가능 크기에 필요한 비트를 자동으로 결정합니다. 객체의 최대 가능 크기는 입력 링크 I의 최대 너비와 높이에 따라 달라집니다. 객체의 이론적 최댓값은 이미지의 모든 픽셀이 전경 값으로 구성된 경우, 즉 하나의 큰 객체인 흰색 입력 이미지인 경우에 달성됩니다.

사용자가 객체의 면적이 지정된 값보다 크지 않음을 확신할 수 있는 경우 이를 파라미터화할 수 있습니다. 최대 객체 크기를 알고 있는 경우 "use_area_with_specified_bits"를 선택합니다. "area_bits" 파라미터를 사용하여 비트 수를 지정합니다. 면적이 전혀 필요하지 않은 경우 "area_not_used"를 선택합니다. "area_not_used" 모드에서는 Bit Width가 출력이 상숫값 0인 1비트로 설정됩니다.

area_bits
Type static parameter
Default not_used
Range {not_used, used}

이 파라미터는 "area_mode" 파라미터가 "use_area_with_specified_bits"로 설정된 경우에만 활성화됩니다. 객체의 면적이 선택한 비트가 허용하는 것보다 큰 경우, 블롭 분석은 출력 링크 "ErrorFlagsO"의 비트 번호 4에 오버플로 플래그를 출력합니다.

center_of_gravity_x_mode
Type static parameter
Default use_cX_with_maximum_required_bits
Range {cX_not_used, use_cX_with_maximum_required_bits, use_cX_with_specified_bits}

중심점에 대한 설명은 'Center of Gravity'를 참조하십시오.

올바른 결과를 얻으려면 블롭 분석 후 출력값을 면적으로 나누어야 합니다.

파라미터가 "use_cX_width_maximum_required_bits"로 설정된 경우, 오퍼레이터가 출력 비트를 자동으로 결정합니다. 대형 입력 이미지를 사용하는 경우 필요한 비트 수가 매우 커질 수 있습니다.

파라미터 값으로 "use_cX_with_specified_bits"를 사용하는 경우 비트 수를 조정할 수 있습니다.

x방향 중심점이 필요하지 않은 경우 "cX_not_used"를 선택하여 비활성화할 수 있습니다.

center_of_gravity_x_bits
Type static parameter
Default 29
Range [2, auto]

"center_of_gravity_x_mode"에 "use_cX_with_specified_bits"가 설정된 경우 여기서 비트를 변경할 수 있습니다. 그렇지 않으면 파라미터가 비활성화됩니다.

center_of_gravity_x_overflow_flag
Type static parameter
Default not_used
Range {not_used, used}

x방향 중심점의 비트 수를 수동으로 설정하면 이 파라미터가 활성화되고 "used"로 설정할 수 있습니다. 오버플로가 감지되면 오퍼레이터는 출력 링크 "ErrorFlagsO"의 5번 비트에 1을 출력합니다.

center_of_gravity_y_mode
Type static parameter
Default use_cY_with_maximum_required_bits
Range {cY_not_used, use_cY_with_maximum_required_bits, use_cY_with_specified_bits}

중심점에 대한 설명은 'Center of Gravity'를 참조하십시오.

올바른 결과를 얻으려면 블롭 분석 후 출력값을 면적으로 나누어야 합니다.

파라미터가 "use_cY_width_maximum_required_bits"로 설정된 경우, 오퍼레이터가 출력 비트를 자동으로 결정합니다. 대형 입력 이미지를 사용하는 경우 필요한 비트 수가 매우 커질 수 있습니다.

파라미터 값으로 "use_cY_with_specified_bits"를 사용하는 경우 비트 수를 조정할 수 있습니다.

y방향 중심점이 필요하지 않은 경우 "cY_not_used"를 선택하여 비활성화할 수 있습니다.

center_of_gravity_y_bits
Type static parameter
Default 29
Range [2, auto]

"center_of_gravity_y_mode"에 "use_cY_with_specified_bits"가 설정된 경우 여기서 비트를 변경할 수 있습니다. 그렇지 않으면 파라미터가 비활성화됩니다.

center_of_gravity_y_overflow_flag
Type static parameter
Default not_used
Range {not_used, used}

y방향 중심점의 비트 수를 수동으로 설정하면 이 파라미터가 활성화되고 "used"로 설정할 수 있습니다. 오버플로가 감지되면 오퍼레이터는 출력 링크 "ErrorFlagsO"의 6번 비트에 1을 출력합니다.

contour_length_mode
Type static parameter
Default contour_length_not_used
Range {contour_length_not_used, contour_length_used}

객체의 외곽선 길이는 구멍을 포함하여 모든 모서리를 포함합니다. 자세한 설명은 'Contour Length'를 참조하십시오.

이 기능을 선택하면 선택한 이웃에 따라 "contour_length_bits_orthogonal_connected" 및 "contour_length_bits_diagonal_connected" 파라미터를 사용하여 필요한 비트를 선택할 수 있습니다. 4방향 이웃을 선택한 경우 외곽선 길이는 직교 방향으로만 결정됩니다. 8방향 이웃을 선택한 경우 외곽선 길이는 직교 및 대각선 방향으로 결정됩니다.

contour_length_bits_orthogonal_connected
Type static parameter
Default 16
Range [1, 31]

"contour_length_mode"가 "contour_length_used"로 설정된 경우, 직교 연결된 픽셀의 컨투어 길이를 표현하는 데 필요한 비트를 여기서 선택할 수 있습니다.

contour_length_bits_diagonal_connected
Type static parameter
Default 16
Range [1, 31]

"contour_length_mode"가 "contour_length_used"로 설정된 경우, 대각선 연결된 픽셀의 컨투어 길이를 표현하는 데 필요한 비트를 여기서 선택할 수 있습니다. 이는 8-connected 이웃이 선택된 경우에만 가능합니다. 그렇지 않으면 이 파라미터는 비활성화됩니다.

contour_length_overflow_flag
Type static parameter
Default not_used
Range {not_used, used}

컨투어 길이로 인해 오버플로가 발생할 수 있습니다. 이 플래그를 사용하는 경우, 오버플로가 발생하면 "ErrorFlagsO" 포트의 7번 비트에 오류 플래그가 설정됩니다.

사용 예

Blob_Analysis_2D 오퍼레이터의 사용법은 다음 예시에서 보여줍니다: