연산자 ImageBufferMultiRoIDyn

Operator Library: Memory

이 연산자는 버퍼링된 각 이미지에 대해 여러 개의 동적 관심 영역(ROI)을 지원합니다. ROI 좌표는 추가 입력 링크를 통해 정의됩니다.

operator의 지연 시간에 대한 정보는 Table 46, 'Individual Latencies of the Operators in Library Memory'를 참조하십시오.

모든 ROI는 개별 이미지로 순차적으로 읽힙니다: ROI 0, ROI 1, ROI 2, …, ROI N-1까지. N은 허용되는 최대 ROI 개수입니다. 프레임 크기를 초과하지 않는 한 모든 가능한 직사각형 영역이 지원되며, 즉, 단일 픽셀, 단일 행, 단일 열, 직사각형 영역 또는 전체 프레임을 ROI로 정의할 수 있습니다. 서로 다른 ROI의 크기가 반드시 같을 필요는 없습니다. 각 ROI는 개별적으로 정의할 수 있습니다. ROI는 서로 겹칠 수 있습니다. 최대 이미지 크기를 초과하는 ROI는 연산자에 의해 필터링되어, 즉 건너뜁니다. 또한, 높이나 너비가 음수인 ROI와 같이 모든 유효하지 않은 ROI는 건너뜁니다.

운영자는 이미지 스트림을 프레임 그래버 RAM(DRAM)에에 버퍼링합니다. RAM 유형의 리소스 VisualApplets 가 하나 필요합니다( ‘장치 리소스 할당’ 참조).

ROI 좌표는 ROI 좌표를 포함하는 이미지로 별도의 조작자 입력 링크를 통해 제공됩니다. 이 이미지들의 각 픽셀은 조작자에 의해 유효한 ROI 좌표 집합으로 간주됩니다. 따라서, ROI 입력 이미지의 크기가 ROI의 개수를 결정합니다. 입력 링크 I의 각 입력 이미지에 대해 새로운 ROI 좌표 이미지 세트가 필요합니다. ROI 입력은 4개의 좌표 입력 링크로 구성됩니다. 각각, ROI의 왼쪽 상단 모서리의 X 및 Y 좌표용 링크와 ROI의 오른쪽 하단 모서리의 X 및 Y 좌표용 링크입니다.

ROI의 X 좌표는 병렬성에 의해 정의된 입력 링크의 x-세분성에 맞춰 변환된다는 점에 유의하십시오. 즉, ImageBufferMultiRoIDyn 연산자는 병렬성의 세분성을 가진 라인만 잘라낼 수 있습니다. 좌표 XTopLeft는 병렬 워드의 첫 번째 구성 요소의 인덱스여야 합니다. 좌표 XBottomRight는 병렬 워드의 마지막 픽셀의 인덱스여야 합니다.

연산자의 동작을 설명하기 위해 예제를 살펴보겠습니다: 입력 링크 I에서 병렬도가 4라고 가정합시다. 따라서 XTopLeft는 0, 4, 8, 12, ...가 되어야 하고, XBottomRight는 3, 7, 11, 15, ...가 되어야 합니다. 좌표가 이러한 제약 조건과 일치하지 않는 경우, 소수점 이하 자릿수는 XTopLeft의 경우 아래로, XBottomRight의 경우 위로 반올림됩니다. 예를 들어, ROI의 x좌표가 3과 7인 경우, ROI의 첫 번째 열은 입력 이미지의 3번째 열이고 마지막 열은 7번째 열이 됩니다. 연산자는 XTopLeft를 0으로 아래로 반올림하고, XBottomRight는 7로 유지하므로, 너비는 8이 됩니다. ROI의 높이는 병렬 처리에 영향을 받지 않으므로 유효한 값이라면 무엇이든 될 수 있습니다.

[참고] 수식:

XTopLeft* = floor(XTopLeft / Parallelism) * Parallelism

XBottomRight* = ceil((XBottomRight + 1) / Parallelism) * Parallelism - 1

[참고] 예시:

입력 링크 I에서 4개의 병렬 연결을 적용하면:

  • 112에서 551까지가 112에서 551이 됩니다. 따라서 너비는 = 551 + 1 - 112 = 440이 됩니다.
  • 101에서 540까지가 100에서 543까지가 됩니다. 따라서 너비는 = 543 + 1 - 100 = 444가 됩니다.

4개의 ROI 입력은 모두 서로 동기화되어 있습니다. 즉, 이 링크들의 이미지는 동일한 크기여야 하며 동기적으로 동시에 제공되어야 합니다. 이는 O형 모듈로 구성된 임의의 네트워크를 통해 동일한 M형 모듈에서 소스를 공급받을 때 항상 해당됩니다. 자세한 내용은 동기화 규칙('다중 입력을 갖는 M형 연산자')을 참조하십시오. ROI 좌표는 입력 링크 I와 비동기적입니다.

이미지와 모든 ROI 좌표가 버퍼로 완전히 전송되는 즉시 연산자는 ROI 읽기를 시작합니다. 실제로는 입력 이미지로부터 ROI 좌표를 계산하고 결정할 수도 있지만, 반드시 그럴 필요는 없습니다. 사용자는 예를 들어 CreateBlankImage 연산자를 사용하여 ROI 좌표를 생성할 수도 있습니다.

ROI 이미지가 비어 있는 경우, 즉 픽셀이 전혀 포함되어 있지 않은 경우, 연산자는 출력으로 빈 이미지를 반환합니다. 빈 이미지에는 픽셀이 포함되어 있지 않습니다. 불법적인 ROI가 있는 경우, 연산자는 해당 ROI에 대해 빈 이미지를 반환합니다.

ImageBufferMultiRoIDyn은 입력 링크의 최대 이미지 너비 및 높이 매개변수로 정의된 고정 크기의 이미지를 처리합니다. 이는 연산자에 의해 입력 프레임의 크기가 제어됨을 의미합니다.

최대 이미지 크기보다 작은 이미지는 수정 없이 버퍼에 저장됩니다. 단, ROI의 데이터 추출은 가능한 최대 이미지 크기의 프레임에서 수행됩니다. 누락된 프레임 픽셀에는 임의의 데이터가 포함되어 있으므로, 후속 처리 과정에서 정의되지 않은 값으로 취급해야 합니다.

최대 프레임 높이 또는 최대 프레임 너비를 초과하는 이미지는 최대 프레임 크기로 잘려 그대로 버퍼에 저장됩니다. ROI에서 데이터를 읽어낼 때도 최대 크기의 프레임을 기준으로 합니다.

오버플로가 발생하면, 즉 버퍼가 가득 차서 더 이상 이미지를 저장할 수 없게 되면, 버퍼에 적어도 한 프레임을 저장할 수 있는 충분한 여유 공간이 생길 때까지 들어오는 모든 이미지가 버려집니다. 오버플로는 여러 가지 이유로 발생할 수 있지만, 그 모든 경우에서 읽기 작업이 쓰기 작업에 비해 너무 느리게 수행되는 결과를 초래합니다. 이는 정의된 ROI가 너무 많거나, 후속 처리 파이프라인에 의해 발생하는 차단 상태, 혹은 입력 이미지 스트림의 속도가 너무 빠르기 때문일 수 있습니다. 균형 잡힌 설계의 정상적인 상황에서는 오버플로가 절대 발생하지 않습니다.

버퍼의 채움 수준을 측정하기 위해 운영자는 2개의 레지스터를 제공합니다: FillLevel 및 Overflow. FillLevel은 RAM의 채움 수준을 백분율로 나타냅니다. Overflow 매개변수는 FillLevel이 100%에 근접하거나 100%일 때, 그리고 버퍼에 저장될 다음 이미지가 RAM 용량을 초과할 경우 1로 설정됩니다.

운영자는 해당 프레임이 완전히 버퍼링되고 현재 이미지에 대한 모든 ROI 세트가 ROI 입력에서 수신되는 즉시, 출력을 통해 ROI 이미지를 제공합니다.

지원되는 ROI의 최대 개수는 XTopLeft 입력 링크의 최대 이미지 너비 및 높이 설정값의 곱에 의해 결정됩니다. 허용되는 ROI의 최대 개수는 2E20-1입니다. ROI 좌표의 버퍼링을 위해서는 FPGA 내부 블록 RAM이 필요합니다. 따라서 ROI의 개수는 사용 가능한 FPGA 내부 블록 RAM의 용량에 의해 제한됩니다.

InfiniteSource 매개변수는 연산자가 카메라에 직접 연결되어 있는지, 아니면 다른 메모리 연산자와 순차적으로 연결되어 있는지를 지정하는 데 사용됩니다. 자세한 내용은 ‘무한 소스 / 카메라 연결’을 참조하십시오.

오퍼레이터 제한 사항

  • 입력 링크 I에서 빈 프레임이나 빈 줄은 지원되지 않습니다.

  • 포트 I에서 선 길이가 다양한 이미지가 완벽하게 지원됩니다.

  • ROI 포트의 빈 프레임이나 빈 줄은 완벽하게 지원됩니다.

  • ROI 포트에 선 길이가 서로 다른 이미지가 완전히 지원됩니다.

[참고] imaFlex CXP-12 Quad 및 imaFlex CXP-12 Penta 플랫폼에서는 ImageBufferMultiRoiDyn을 사용할 수 없습니다.

ImageBufferMultiRoiDyn은 imaFlex CXP-12 Quad 및 imaFlex CXP-12 Penta 플랫폼에서는 지원되지 않지만, 대신 imaFlex CXP-12 Quad 및 imaFlex CXP-12 Penta 플랫폼용 동등한 사용자 라이브러리 요소를 사용할 수 있습니다. 사용자 라이브러리 요소를 사용하는 방법에 대한 지침은 ‘제공된 사용자 라이브러리’를 참조하십시오.

대역폭 최적화

Frame Grabber RAM (DRAM)을 사용하는 연산자를 통과하는 이론적 대역폭[bits/second]은 다음 공식에 따라 계산됩니다.

그러나 실제 대역폭은 DRAM 효율로 인해 항상 이론적 대역폭보다 작습니다.

연산자를 통과하는 최대 대역폭은 Bit Width와 Parallelism의 곱이 내부 RAM 포트 너비(RAM Port Width)와 같을 때 달성됩니다.

[참고] 플랫폼별 값

RAM Port Width과 System Clock은 플랫폼 종속적입니다. 개별 플랫폼에 대한 자세한 내용은 Device Resources를 참조하십시오.

I/O Properties

Property Value
Operator Type M
Input Links I, 이미지 데이터 입력
XTopLeft, 좌표 데이터 입력
YTopLeft, 좌표 데이터 입력
XBottomRight, 좌표 데이터 입력
YBottomRight, 좌표 데이터 입력
출력 링크 O, 데이터 입력

동기식 및 비동기식 입력

  • 4개의 ROI 입력은 서로 동기화되어 있습니다.
  • ROI 입력은 입력 I과 비동기적으로 처리됩니다.

지원되는 Link Format

Link Parameter Input Link I 입력 링크 XTopLeft 입력 링크 YTopLeft 입력 링크 XBottomRight 입력 링크 YBottomRight Output Link O
Bit Width [1, 64]12 auto3 auto4 auto3 auto4 as I
Arithmetic {unsigned, signed} unsigned unsigned unsigned unsigned as I
Parallelism 2^N (여기서 N = {0, 1, 2, …})2 1 1 1 1 as I
Kernel Columns 1 1 1 1 1 as I
Kernel Rows 1 1 1 1 1 as I
Img Protocol VALT_IMAGE2D VALT_IMAGE2D VALT_IMAGE2D VALT_IMAGE2D VALT_IMAGE2D as I
Color Format any VAF_GRAY VAF_GRAY VAF_GRAY VAF_GRAY as I
Color Flavor any FL_NONE FL_NONE FL_NONE FL_NONE as I
Max. Img Width any5 2E20-16 XTopLeft와 같이 XTopLeft와 같이 XTopLeft와 같이 as I
Max. Img Height any5 2E20-16 XTopLeft와 같이 XTopLeft와 같이 XTopLeft와 같이 as I

1

부호 없는 입력의 경우 입력 Bit Width 범위는 [1, 64]입니다. 부호 있는 입력의 경우 범위는 [2, 64]입니다. 부호 없는 컬러 입력의 경우 범위는 [3, 63]이고 부호 있는 컬러의 경우 범위는 [6, 63]입니다.

2

비트 폭과 병렬 처리 수의 곱은 네이티브 RAM 데이터 폭(RamDataWidth)을 초과해서는 안 됩니다. 확인 장치 리소스 에서 자세한 내용을 확인하십시오.

3

비트 폭은

4

비트 폭은

5

이미지의 최대 크기는 사용 가능한 RAM의 용량을 초과해서는 안 됩니다: 2^RamAddressWidth >=(I.Max.Img.Width * I.Max.Img.Height) / I. Parallelism

6

ROI 이미지의 최대 픽셀 수(결과적으로 이미지당 최대 ROI 수)는 2^20-1을 초과해서는 안 됩니다: 2^20 > XTopLeft.Max.Img.Width * XTopLeft.Max.Img.Height

Parameters

RamDataWidth
Type 정적 쓰기 파라미터
Default N/A
Range 정수

이 매개변수는 RAM 인터페이스에서 사용할 수 있는 데이터 비트 수를 제공합니다. 이는 입력 및 출력의 최대 비트 수입니다.

RamAddressWidth
Type 정적 쓰기 파라미터
Default N/A
Range 정수

이 매개변수는 사용 가능한 주소 비트 수를 제공합니다. 이를 통해 허용되는 최대 이미지 크기를 계산할 수 있습니다.

FillLevel
Type dynamic read parameter
Default 0
Range [0%, 100%]

이 파라미터는 DRAM의 Fill 상태를 25% 단위로 제공합니다.

Overflow
Type dynamic read parameter
Default 0
Range [0, 1]

이 파라미터는 버퍼 오버플로를 나타냅니다.

InfiniteSource
Type static parameter
Default ENABLED
Range {ENABLED, DISABLED}

이 파라미터는 카메라 오퍼레이터와 같은 무한 소스 오퍼레이터에 대한 지원을 활성화합니다. 자세한 내용은 'Infinite Sources / Connecting Cameras'를 참조하십시오.

사용 예

다음 예제에서는 ImageBufferMultiRoIDyn 연산자의 사용법을 보여줍니다: