Operator Blob_Analysis_2D

Operator Library: Blob

Blob_Analysis_2D 오퍼레이터는 이진 이미지에서 객체를 감지하고 해당 Property를 판별합니다. 이 오퍼레이터의 출력은 각 객체의 Property를 나타내는 여러 데이터 스트림입니다.

[참고] Blob_Analysis_2D는 레거시 오퍼레이터입니다.

Blob_Analysis_2D 오퍼레이터는 하위 호환성 유지 목적으로만 제공되는 레거시 오퍼레이터입니다. 새 디자인에서는 대신 BlobDetector2D를 사용하세요.

이 오퍼레이터의 기능은 VisualApplets에서 완전히 시뮬레이션할 수 있습니다. 단, 출력 값의 순서가 하드웨어 구현과 일치하지 않을 수 있으니 유의하시기 바랍니다.

먼저 블롭 분석 오퍼레이터에 대한 일반 소개(Library Blob 섹션)를 읽어보시기 바랍니다.

성능

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

지연 시간

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

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

Input Ports

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

이 오퍼레이터는 전경 값이 ONE이고 배경 값이 ZERO라고 가정합니다. 예비 이진화 프로세스에서 이 요구 사항을 충족하는지 확인하십시오.

Output Ports

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

출력 포트는 오퍼레이터 파라미터와 입력의 Property를 사용하여 구성됩니다. 링크 Property는 직접 변경할 수 없습니다.

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

Bit # 설명 Object Related 참고 사항
0, 1 label overflow 표시된 패킷 크기 값은 카메라에

Blob Analysis가 memory에 저장하기에는 너무 많은 객체를 감지했습니다. 두 이미지 라인 내의 최대 객체 수를 늘리려면 오퍼레이터 파라미터 "LabelBits"를 변경할 수 있습니다.

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

Blob Analysis 1D 오퍼레이터의 경우, 이 플래그는 다음 유효 데이터 출력과 함께 한 클록 사이클 동안만 상위 레벨 상태를 가집니다.

플래그가 설정된 후, 블롭 분석 출력으로 인해 잘못된 object property가 생성될 수 있습니다. 충분한 객체 라벨을 사용할 수 있게 되면 오퍼레이터가 올바른 기능으로 돌아갑니다.

2 output truncated yes

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

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

1D Blob Analysis의 객체가 최대 높이를 초과할 경우 이 플래그가 설정됩니다. 오퍼레이터는 이 초과된 객체를 더 작은 객체들로 자릅니다. 계속되는 객체는 잘렸음을 감지할 수 있도록 플래그로 표시됩니다.

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

4 영역이 잘림 yes

오류 플래그를 포함한 객체의 영역이 영역 비트가 허용하는 크기보다 큽니다.

5 중심점 X가 잘림 yes

X 방향의 중심점이 비트가 허용하는 크기보다 큽니다.

6 중심점 Y가 잘림 yes

Y 방향의 중심점이 비트가 허용하는 크기보다 큽니다.

7 외곽선 길이 오버플로 yes

외곽선 길이가 오퍼레이터에 대해 파라미터화된 비트가 허용하는 크기보다 큽니다.

표 39. 블롭 오류 플래그 설명


I/O Properties

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

Supported Link Format

Link Parameter Input Link I 출력 링크 BoundingX0O 출력 링크 BoundingX1O 출력 링크 BoundingY0O Output Link BoundingY1O Output Link AreaO Output Link CenterXO Output Link CenterYO Output Link ContourOrthoO Output Link ContourDiaO Output Link 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로 결정되는 두 이미지 라인 내에서 공존할 수 있는 최대 객체 수도 좌우합니다. 비트가 추가될 때마다 블롭 분석에 필요한 Memory 리소스가 거의 두 배로 증가한다는 점에 유의하십시오. 이 파라미터의 권장 값 범위는 7~9비트이며, 이는 거의 모든 애플리케이션에 충분합니다.

이 주소 공간의 오버플로가 감지되면, 오퍼레이터는 "ErrorFlagsO" 포트의 비트 0과 1에서 에러 플래그를 출력합니다. 이 플래그는 오버플로가 감지되면 설정되며 출력 프레임이 종료될 때 리셋됩니다.

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

Object Detection에 필요한 이웃(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에서 ONE을 출력합니다.

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-연결 이웃이 선택된 경우에만 가능합니다. 그렇지 않으면 이 파라미터는 비활성화됩니다.

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

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

사용 예제

Blob_Analysis_2D 오퍼레이터의 사용법은 다음 예시에 나와 있습니다.