Operator Blob_Analysis_1D

Operator Library: Blob

Blob_Analysis_1D operator는 무한한 높이의 바이너리 이미지에서 객체를 감지하고 해당 property를 판별합니다. operator의 출력은 각 객체의 property를 나타내는 여러 데이터 스트림입니다.

[참고] Blob_Analysis_1D operator는 레거시 operator입니다.

Blob_Analysis_1D operator는 하위 호환성을 위해서만 유지되는 레거시 operator입니다. 새로운 디자인에서는 대신 BlobDetector1D를 사용하십시오.

[참고] 2D operator가 필요할 수 있습니다

Blob_Analysis_1D operator는 객체가 임의의 위치에 있는 취득에 사용됩니다. 라인 스캔 응용 분야에서 이미지 트리거로 객체 위치를 결정할 수 있는 경우, 대신 Blob_Analysis_2D operator를 사용하십시오.

이 operator 참고 설명서에는 다음 정보가 포함되어 있습니다.

  • Operator 기능 설명
  • 1D 응용 분야를 위한 타이밍 모델
  • VisualApplets 상위 수준 시뮬레이션에서 operator 사용
  • Operator 입력 및 출력 port
  • I/O Properties
  • 지원되는 Link Format
  • Parameters
  • 사용 예제

Explanation of the Operator's Functionality

Blob analysis operator에 대한 일반적인 소개를 보려면 Library Blob의 소개를 반드시 읽어야 합니다.

Blob Analysis 1D operator는 끝없는 일차원 이미지를 위해 설계되었습니다. 일반적으로 2D Blob Analysis의 경우 객체 기능은 프레임 내 객체의 위치와 관련이 있으며 좌표 원점은 이미지의 왼쪽 상단 모서리입니다. 높이가 끝없는 1D 이미지의 경우 이는 불가능합니다. 이 값이 무한히 증가하거나 오버플로를 유발할 수 있으므로 객체는 y 좌표와 관련될 수 없습니다.

VisualApplets Blob Analysis 1D operator를 사용하면 객체가 모든 위치에 있을 수 있는 끝없는 이미지를 사용할 수 있습니다. operator는 객체와 관련된 참조 입력 "LineMarkerI"로 확장됩니다. 예를 들어 외부 엔코더와 트리거 펄스로 제어되는 Counter 값일 수 있습니다. 이 방법을 사용하면 blob analysis에 의해 결정된 각 객체를 올바른 참조 위치에 할당할 수 있습니다.

입력 link "FlushI"는 출력을 플러시(즉, 출력 프레임 완료)하는 데 사용됩니다. 예를 들어 이는 DMA 전송을 완료하는 데 필요합니다.

다음 그림은 Blob Analysis 1D operator의 동작을 보여줍니다. operator 입력에서의 예시 데이터와 그에 따른 출력을 보여줍니다. Blob Analysis에 의해 처리되는 바이너리 무한 이미지가 왼쪽에 표시됩니다. 두 번째 열은 LineMarkerI 입력을 나타냅니다. 여기서는 Counter를 사용하여 참조 값으로 객체를 표시합니다. 시각화를 개선하기 위해 관심 있는 값만 인쇄됩니다. 라인 마커 입력은 9 bit의 bit width를 갖는 것으로 가정합니다. 따라서 값 512에서 오버플로가 발생합니다. 세 번째 열에는 플러시 입력이 표시됩니다. 이 예제에는 플러시 조건이 하나만 있습니다. 오른쪽 열은 Blob Analysis operator의 출력을 나타냅니다. 예를 보면 이미지와 라인 마커가 Blob Analysis 중에 처리되는 것을 볼 수 있습니다. 객체가 완료되는 즉시 출력됩니다. 모든 객체의 결과 객체 property는 해당 객체의 첫 번째 이미지 라인과 함께 설정된 라인 마커로 표시됩니다. 바운딩 박스 좌표 X0 및 X1은 Blob Analysis 2D 객체 기능과 유사하지만 Y1 좌표는 객체의 높이입니다. Y0 좌표는 Blob Analysis 1D operator의 내부 Counter 결과입니다. 이는 0에서 시작하며 최대값은 operator의 property 대화 상자에 설정된 객체의 최대 높이와 같습니다. 플러시 조건은 출력에서 end of frame 플래그를 발생시킵니다.

Blob Analysis 1D Operator의 동작

그림 404. Blob Analysis 1D Operator의 동작


2D operator와 유사하게 Blob Analysis 1D operator는 모든 출력이 동기식인 "M" 유형입니다. 2D와 달리 1D operator에는 3개의 입력이 있습니다. 처음 두 개의 입력 "ImageI" 및 "LineMarkerI"는 동기식이며 동일한 M 유형 operator에서 소스를 가져와야 합니다. 입력 link "FlushI"는 이미지와 비동기식이므로 동기화가 필요하지 않습니다. 다음 그림은 가능한 구성 중 하나를 보여줍니다.

VisualApplets 네트워크에서 Blob 1D Operator의 동기화

그림 405. VisualApplets 네트워크에서 Blob 1D Operator의 동기화


Generation of Output Frames - Flush, Empty Frames, Discarding Data

위에서 언급한 바와 같이, flush는 출력 프레임을 완료하는 데, 즉 프레임 끝 플래그를 생성하는 데 사용됩니다. flush 입력의 타이밍과 이미지 내 객체에 따라 빈 프레임뿐만 아니라 데이터가 많은 출력 프레임이 생성될 수도 있습니다. 이 동작을 제어하기 위해 output_frame_size_overflow_handling 및 suppress_empty_output_frames 매개변수(아래 매개변수 설명 참조)가 사용됩니다. 다음 파형은 매개변수 설정, 데이터 및 flush 입력의 다양한 조합에 대한 개요를 보여줍니다. "Blob Data"는 출력 타이밍을 나타냅니다.

첫 번째 예시는 최대 프레임 크기에 도달한 후 새로운 프레임이 생성되는 과정을 보여줍니다. blob 오퍼레이터는 출력 프레임을 완성한 마지막 blob이 출력된 후에 프레임 끝을 생성합니다. flush 신호는 추가적인 프레임 끝을 생성합니다.

Blob 1D Timing - Generation of New Frames

그림 406. Blob 1D Timing - Generation of New Frames


다음 예시는 빈 출력 프레임이 억제되는 것을 보여줍니다. 보시다시피 첫 번째 flush는 무시됩니다. 두 번째 flush는 출력할 수 있는 blob을 사용할 수 있게 될 때까지 지연됩니다. 이런 식으로 오퍼레이터는 flush 출력을 지연시킬 수 있습니다.

Blob 1D Timing - Suppression of Empty Frames

그림 407. Blob 1D Timing - Suppression of Empty Frames


세 번째 예시에서는 flush 입력에 상수 1이 입력될 때의 동작을 볼 수 있습니다. suppress_empty_output_frame이 "yes"로 설정되어 있으므로 오퍼레이터는 각 blob 출력 후에 프레임 끝을 생성합니다. 경고: suppress_empty_output_frame이 실수로 "no"로 설정된 경우, 상수 1로 인해 수백만 개의 프레임 끝이 생성될 수 있습니다. 이 출력이 VisualApplets 출력(DMA 오퍼레이터)에 연결된 경우, PC 과부하가 발생할 수 있습니다!

Blob 1D Timing - Constant Flush

그림 408. Blob 1D Timing - Constant Flush


마지막 예시는 "output_frame_size_overflow_handling" 매개변수가 "discard_exceeding_objects"로 설정되어 객체가 폐기되는 것을 보여줍니다.

Blob 1D Timing - Discarding of Objects

그림 409. Blob 1D Timing - Discarding of Objects


출력 타이밍은 출력 파이프라인에 따라 다릅니다. 데이터를 처리할 수 없는 경우, 즉 blob 오퍼레이터 뒤의 후속 오퍼레이터가 처리를 차단하는 경우 flush 신호가 손실될 수 있습니다.

성능

VisualApplets blob 분석 오퍼레이터는 처리 속도, 즉 대역폭이 이미지 콘텐츠에 따라 달라지는 드문 오퍼레이터 중 하나입니다. 이미지에 객체가 많으면 객체 리스트가 커져 오퍼레이터 입력 속도가 느려질 수 있습니다. 이는 노이즈가 매우 심한 이미지만 해당됩니다. 제어된 조건에서는 오퍼레이터가 충분히 빠르게 작동해야 합니다.

지연 시간

이 오퍼레이터는 지연 시간을 최소화하도록 설계되었습니다. 입력 이미지는 라인 단위로 Blob Analysis 라인으로 전송됩니다. 객체가 오퍼레이터로 완전히 전송되면, 오퍼레이터가 완료를 감지하는 즉시 해당 객체 피처가 출력됩니다. 따라서 Blob Analysis는 객체가 오퍼레이터로 완전히 전송되는 즉시 출력합니다. 이미지 자체를 처리하는 동안에도 객체 피처의 후처리를 시작할 수 있습니다.

DMA 및 일부 다른 오퍼레이터는 완료를 보고하기 전에 프레임 종료 신호를 기다린다는 점에 유의하세요. Blob_Analysis_1D 오퍼레이터에서의 프레임 종료 생성에 대해 알아보려면 flush 입력 설명을 확인하세요.

Simulation of the Operator

[경고] Use the Simulation of Blob_Analysis_1D with Caution

Blob 1D 시뮬레이션에는 몇 가지 제한 사항이 있습니다. 시뮬레이션 기능을 사용할 때는 주의를 기울여 주시기 바랍니다.

VisualApplets은 이미지 프로토콜이 1D인 경우에도 일반 2D 이미지를 사용합니다. 따라서 오퍼레이터를 시뮬레이션할 때는 일반 이미지를 사용합니다. 각 이미지는 개별적으로 처리됩니다.

오퍼레이터 시뮬레이션은 하드웨어 동작과 동일하지 않습니다. 다음과 같은 두 가지 차이점이 있습니다.

  • 객체 피처 출력 순서는 하드웨어와 소프트웨어에서 다를 수 있습니다. 이는 하드웨어 출력이 VisualApplets에서 시뮬레이션할 수 없는 데이터 타이밍에 따라 달라지기 때문입니다.

  • 두 번째이자 가장 중요한 차이점은 Flush 조건의 동작입니다. FlushI 입력은 이미지 데이터 입력과 완전히 비동기식입니다. FlushI는 출력 프레임을 완료하는 데, 즉 출력 스트림에 프레임 종료 마커를 삽입하는 데 사용됩니다(위 및 아래의 매개변수 설명 참조). flush는 이미지 데이터와 비동기식이므로 하드웨어와 동일한 동작을 반영하도록 시뮬레이션할 수 없습니다. 따라서 VisualApplets 시뮬레이션은 대체 시뮬레이션 모델을 사용합니다. 하드웨어의 동작을 그대로 복제할 수 없으므로 시뮬레이션 모델은 하드웨어와 의도적으로 다르게 구현되었습니다. 다음과 같은 프로퍼티를 가지고 있습니다.

    • 시뮬레이션은 두 입력의 픽셀을 카운팅하여 데이터 입력과 flush 입력의 상관관계를 비교하려고 시도합니다. 따라서 데이터 입력과 flush 입력의 이미지 치수가 동일한 경우 상관관계는 픽셀 위치와 1:1이 됩니다. 그러나 flush 입력의 픽셀 수가 적은 경우(예: 라인당 1픽셀), 시뮬레이션에서만 픽셀 위치를 비교합니다.

    • flush 조건은 하드웨어가 수행하는 것처럼 완료 시점이 아니라 객체의 Y0 좌표와 비교하여 객체를 출력합니다.

    • 이미지의 마지막 객체가 출력된 후에는 이후의 모든 flush 신호가 무시됩니다. 따라서 시뮬레이션에서는 입력되는 flush 신호의 개수가 프레임 출력 개수와 상관관계가 없습니다.

    이러한 동작 방식으로 인해 시뮬레이션은 주의해서 사용해야 합니다.

    다음 그림들은 미니 이미지를 사용한 몇 가지 예를 보여주며, 시뮬레이션에서 flush 신호를 사용할 때의 몇 가지 특수 조건을 설명합니다.

    시뮬레이션 시나리오 1 - Flush와 Y0의 관계

    그림 410. 시뮬레이션 시나리오 1 - Flush와 Y0의 관계


    시뮬레이션 시나리오 2 - Flush 픽셀 위치

    그림 411. 시뮬레이션 시나리오 2 - Flush 픽셀 위치


    시뮬레이션 시나리오 3 - 프레임 끝에서의 폐기된 Flush 픽셀

    그림 412. 시뮬레이션 시나리오 3 - 프레임 끝에서의 폐기된 Flush 픽셀


    시뮬레이션 시나리오 4 - 다중 블롭

    그림 413. 시뮬레이션 시나리오 4 - 다중 블롭


Input Ports

Blob Analysis의 ImageI 입력은 바이너리 1차원 이미지, 즉 1 bit의 Bit Width, 지정된 너비, 무제한 높이를 가진 이미지로 표현됩니다. 최대 32 픽셀의 Parallelism을 선택할 수 있습니다. 전경 값은 ONE, 배경 값은 ZERO를 가지는 것으로 간주됩니다. 이는 이진화 과정에서 고려해야 합니다.

LineMarkerI 입력은 이미지 데이터 입력과 동기화되므로 이러한 링크는 동일한 이미지 치수와 Parallelism을 가져야 합니다. 그러나 링크는 임의의 Bit Width를 가질 수 있습니다. LineMarker의 값은 각 이미지 라인 전체에서 일정해야 합니다.

입력 링크 "FlushI"는 다른 입력 링크와 비동기식입니다. Bit Width, Parallelism 및 이미지 치수는 임의로 지정할 수 있습니다. 병렬 구성 요소 중 하나의 입력 비트가 설정되면 Blob Analysis 출력이 플러시됩니다.

Output Ports

각 출력 포트는 하나의 객체 feature / object property를 나타냅니다. 이 포트의 각 출력 값은 하나의 객체를 나타냅니다. 따라서 object 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

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

표 38. Blob Error Flags 설명


I/O Properties

Property Value
Operator Type M
Input Links ImageI, 이미지 데이터 입력
LineMarkerI, 데이터 입력
FlushI, 데이터 입력
Output Links LineMarkerO, 데이터 출력
BoundingX0O, 데이터 출력
BoundingX1O, 데이터 출력
BoundingY0O, 데이터 출력
BoundingY1O, 데이터 출력
AreaO, 데이터 출력
CenterXO, 데이터 출력
CenterYO, 데이터 출력
ContourOrthoO, 데이터 출력
ContourDiaO, 데이터 출력
ErrorFlagsO, 데이터 출력

동기식 및 비동기식 입력

  • 동기식 그룹: ImageI, LineMarkerI
  • FlushI는 그룹과 비동기식입니다.

Supported Link Format

Link Parameter 입력 링크 ImageI 입력 링크 LineMarkerI 입력 링크 FlushI 출력 링크 LineMarkerO 출력 링크 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 any any auto1 auto2 auto3 auto4 auto5 auto6 auto7 auto8 auto9 auto10 8
Arithmetic unsigned unsigned unsigned unsigned unsigned unsigned unsigned unsigned unsigned unsigned unsigned unsigned unsigned unsigned
Parallelism {1, 2, 4, 8, 16, 32} as ImageI any 1 1 1 1 1 1 1 1 1 1 1
Kernel Columns 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Kernel Rows 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Img Protocol VALT_IMAGE1D VALT_IMAGE1D VALT_IMAGE1D VALT_IMAGE1D VALT_IMAGE1D VALT_IMAGE1D VALT_IMAGE1D VALT_IMAGE1D VALT_IMAGE1D VALT_IMAGE1D VALT_IMAGE1D VALT_IMAGE1D VALT_IMAGE1D VALT_IMAGE1D
Color Format VAF_GRAY VAF_GRAY VAF_GRAY 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 FL_NONE FL_NONE FL_NONE
Max. Img Width any as ImageI any auto11 auto12 auto13 auto14 auto15 auto16 auto17 auto18 auto19 auto20 auto21
Max. Img Height any as ImageI any 1 1 1 1 1 1 1 1 1 1 1

1 2 3 4 5 6 7 8 9 10

출력 Bit Width는 객체 기능의 파라미터 설정에 따라 다릅니다. 기능이 비활성화된 경우, 출력은 항상 값이 0인 1비트로 설정됩니다.

11 12 13 14 15 16 17 18 19 20 21

출력 최대 이미지 너비는 파라미터 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'을 참조하십시오.

max_object_height_bits
Type static parameter
Default 10
Range [3, 31]

이 파라미터는 객체의 최대 높이를 지정하는 데 필요합니다. 예를 들어 높이가 10비트인 경우, 1024 이미지 라인을 초과하는 객체는 허용되지 않습니다.

객체가 이 제한을 초과하면 두 개 이상의 분리된 객체로 잘립니다. 이 경우, 재개된 객체와 함께 ErrorFlagsO 포트의 비트 번호 3에 있는 에러 플래그가 설정됩니다.

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

최대 출력 프레임 크기, 즉 하나의 출력 프레임 내의 최대 객체 수를 선택합니다.

output_frame_size_overflow_handling
Type static parameter
Default generate_new_frame
Range {generate_new_frame, discard_exceeding_objects}

최대 출력 프레임 크기는 "max_output_frame_size" 파라미터로 지정됩니다. 객체 수가 이 크기를 초과하는 경우, 오퍼레이터는 새 프레임을 생성하거나 초과된 객체를 폐기할 수 있습니다. 새 프레임을 생성하면 프레임의 종료, 즉 프레임 완료가 발생합니다. 객체가 폐기되는 경우, 오퍼레이터는 프레임의 마지막 유효한 객체와 함께 ErrorFlagsO 포트의 비트 번호 2에서 에러 플래그를 출력합니다.

flush 입력으로도 새 프레임이 생성된다는 점에 유의하십시오.

suppress_empty_output_frames
Type static parameter
Default yes
Range {yes, no}

이 파라미터는 flush 조건 및 객체 데이터 없음으로 인해 발생하는 빈 출력 프레임을 억제하는 데 사용됩니다.

자세한 타이밍 다이어그램은 'Generation of Output Frames - Flush, Empty Frames, Discarding Data'에서 확인할 수 있습니다.

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

각 객체의 "line_marker"는 "LineMarkerO"로 출력됩니다. Bit Width는 LineMarkerI 입력 링크에 의해 결정됩니다. 라인 마커를 사용하지 않는 경우, Bit Width는 출력에 상수로 0이 설정된 1비트로 지정됩니다.

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 좌표를 나타냅니다. 이 좌표는 오퍼레이터의 내부 Counter를 기반으로 합니다. 처리가 시작된 첫 번째 이미지 라인부터 카운팅을 시작합니다. 최대값은 max_object_height_bits 파라미터로 설정된 최대 높이와 같습니다. 오버플로우가 발생한 후, Counter는 다시 0부터 카운트를 시작합니다.

이 기능은 라인 마커 대신 사용할 수 있습니다. 그러나 라인 마커는 더 많은 기능을 제공하며 복잡한 구성을 허용합니다.

이 기능은 "BoundingY0O"로 출력됩니다. Bit Width는 입력 이미지에 의해 결정됩니다. 바운딩 박스를 사용하지 않는 경우, Bit Width는 출력에 상수로 0이 설정된 1비트로 지정됩니다.

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

(2D 오퍼레이터와 대조적으로) 1D 오퍼레이터에서 바운딩 박스 y1은 객체의 높이를 나타냅니다. 이는 "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_1D 오퍼레이터의 사용법은 다음 예시와 같습니다: