Operator Library: Memory
이 연산자는 버퍼링된 각 이미지에 대해 여러 개의 동적 관심 영역(ROI)을 지원합니다. ROI 좌표는 추가 입력 링크를 사용하여 정의됩니다.
연산자 지연 시간에 대한 정보는 '표 46: Library Memory의 연산자별 지연 시간'을 참조하십시오.
모든 ROI는 ROI 0, ROI 1, ROI 2부터 ROI N-1까지 개별 이미지로 순차적으로 읽혀집니다. N은 허용되는 최대 ROI 수입니다. 프레임 크기를 초과하지 않는 한 가능한 모든 직사각형 영역이 지원되며, 즉 단일 픽셀, 단일 라인, 단일 열, 직사각형 영역 또는 전체 프레임을 ROI로 정의할 수 있습니다. 서로 다른 ROI가 동일한 크기일 필요는 없습니다. 각 ROI는 개별적으로 정의할 수 있습니다. ROI는 서로 겹칠 수 있습니다. 최대 이미지 크기를 위반하는 ROI는 연산자에 의해 필터링되며, 즉 건너뛰어집니다. 또한 높이나 너비가 음수인 ROI와 같은 잘못된 ROI는 모두 건너뛰어집니다.
연산자는 이미지 스트림을 Frame Grabber RAM (DRAM)에 버퍼링합니다. RAM 유형의 VisualApplets 리소스가 하나 필요합니다('Allocation of Device Resources' 참조).
ROI 좌표는 ROI 좌표를 포함하는 이미지로서 별도의 연산자 입력 링크로 제공됩니다. 이 이미지들의 각 픽셀은 연산자에 의해 유효한 ROI 좌표 세트로 처리됩니다. 따라서 ROI 입력 이미지의 크기가 ROI의 수를 결정합니다. 입력 링크 I의 각 입력 이미지에 대해 새로운 ROI 좌표 이미지 세트가 필요합니다. ROI 입력은 4개의 좌표 입력 링크로 구성됩니다. 각각 ROI 좌상단 모서리의 X 및 Y 좌표를 위한 링크와 우하단 모서리의 X 및 Y 좌표를 위한 링크입니다.
ROI X 좌표는 parallelism에 의해 정의된 입력 링크 I의 x-granularity를 충족하도록 변환된다는 점에 유의하십시오. 즉, ImageBufferMultiRoIDyn 연산자는 parallelism의 granularity로만 라인을 자를 수 있습니다. XTopLeft 좌표는 병렬 워드의 첫 번째 구성 요소의 인덱스여야 합니다. XBottomRight 좌표는 병렬 워드의 마지막 픽셀 인덱스여야 합니다.
연산자 동작을 설명하기 위해 예를 살펴보겠습니다. 입력 링크 I에서 parallelism이 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 높이는 parallelism에 종속되지 않으므로 유효한 값이면 무엇이든 될 수 있습니다.
![]() |
공식: |
|---|---|
|
XTopLeft* = floor(XTopLeft / Parallelism) * Parallelism XBottomRight* = ceil((XBottomRight + 1) / Parallelism) * Parallelism - 1 |
![]() |
예시: |
|---|---|
|
입력 링크 I에서 parallelism이 4인 경우:
|
모든 4개의 ROI 입력은 서로 동기화됩니다. 즉, 이 링크의 이미지는 크기가 같아야 하며 동시에 동기적으로 제공되어야 합니다. 이는 임의의 O-type 모듈 네트워크를 통해 동일한 M-type 모듈에서 소스를 가져오는 경우 항상 그렇습니다. 자세한 내용은 동기화 규칙('M-type Operators with Multiple Inputs')을 참조하십시오. ROI 좌표는 입력 링크 I와 비동기화됩니다.
연산자는 이미지와 모든 ROI 좌표가 버퍼로 완전히 전송되는 즉시 ROI 읽기를 시작합니다. 실제로 ROI 좌표는 입력 이미지에서 계산하고 결정할 수 있지만 필수는 아닙니다. 사용자는 ROI 좌표 생성을 위해 예를 들어 CreateBlankImage 연산자를 사용할 수도 있습니다.
ROI 이미지가 비어 있는 경우, 즉 픽셀을 포함하지 않는 경우 연산자는 출력에 빈 이미지를 제공합니다. 빈 이미지에는 픽셀이 포함되지 않습니다. 유효하지 않은 ROI가 있는 경우 연산자는 해당 ROI에 대해 빈 이미지를 제공합니다.
ImageBufferMultiRoIDyn은 입력 링크 최대 이미지 너비 및 높이 파라미터에 의해 정의된 고정 크기의 이미지에서 작동합니다. 이는 연산자에 의해 수행되는 입력 프레임 크기 제어를 의미합니다.
최대 이미지 크기보다 작은 이미지는 수정 없이 버퍼링됩니다. 그러나 ROI 읽기는 가능한 최대 이미지 크기의 프레임에서 수행됩니다. 누락된 프레임 픽셀에는 임의의 데이터가 포함되므로 추가 처리 시 정의되지 않은 것으로 처리되어야 합니다.
최대 프레임 높이나 최대 프레임 너비를 초과하는 이미지는 최대 프레임 크기로 잘리며 그에 따라 버퍼링됩니다. ROI 읽기는 최대 크기의 프레임을 기반으로 다시 수행됩니다.
오버플로가 발생할 경우, 즉 버퍼가 가득 차서 더 이상 이미지를 저장할 수 없는 경우, 버퍼에 최소한 하나의 프레임을 저장할 수 있는 충분한 여유 공간이 생길 때까지 들어오는 모든 이미지가 삭제됩니다. 오버플로는 다양한 이유로 발생할 수 있지만, 모두 쓰기에 비해 읽기 작업이 너무 느리게 수행되는 결과로 이어집니다. 이는 너무 많은 ROI가 정의되었거나, 후속 처리 파이프라인에 의해 차단 상태가 발생했거나, 또는 입력 이미지 스트림이 너무 빠르기 때문일 수 있습니다. 균형 잡힌 설계의 일반적인 상황에서는 오버플로가 절대 발생하지 않습니다.
버퍼의 채워진 정도를 측정하기 위해 연산자는 FillLevel과 Overflow의 2개 레지스터를 제공합니다. FillLevel은 RAM의 채워진 백분율을 보여줍니다. Overflow 파라미터는 FillLevel이 100%에 가깝거나 100%이고 버퍼에 저장될 다음 이미지가 RAM 용량을 초과할 때 1로 설정됩니다.
연산자는 해당 프레임이 완전히 버퍼링되고 현재 이미지에 대한 모든 ROI 세트가 ROI 입력에서 수신되는 즉시 출력에 ROI 이미지를 제공합니다.
지원되는 최대 ROI 수는 XTopLeft 입력 링크의 최대 이미지 너비 및 높이 설정의 곱으로 결정됩니다. 허용되는 최대 ROI 수는 2E20-1입니다. ROI 좌표 버퍼링에는 FPGA 내부 블록 RAM이 필요합니다. 따라서 ROI 수는 사용 가능한 FPGA 내부 블록 RAM으로 제한됩니다.
파라미터 InfiniteSource는 오퍼레이터가 카메라에 직접 연결되어 있는지 또는 다른 메모리 오퍼레이터와 시퀀스되어 있는지를 지정하는 데 사용됩니다. 자세한 내용은 'Infinite Sources / Connecting Cameras'를 확인하세요.
Operator 제한 사항
-
입력 링크 I의 빈 프레임이나 빈 라인은 지원되지 않습니다.
-
포트 I에서 라인 길이가 다른 이미지는 완벽하게 지원됩니다.
-
ROI 포트의 빈 프레임이나 빈 라인은 완벽하게 지원됩니다.
-
ROI 포트에서 라인 길이가 다른 이미지는 완벽하게 지원됩니다.
![]() |
ImageBufferMultiRoiDyn은(는) imaFlex CXP-12 Quad 및 imaFlex CXP-12 Penta 플랫폼에서 사용할 수 없습니다. |
|---|---|
|
ImageBufferMultiRoiDyn은(는) imaFlex CXP-12 Quad 및 imaFlex CXP-12 Penta 플랫폼에서 지원되지 않지만, 대신 imaFlex CXP-12 Quad 및 imaFlex CXP-12 Penta 플랫폼용 동등한 사용자 라이브러리 요소를 사용할 수 있습니다. 사용자 라이브러리 요소 작업 방법에 대한 지침은 'Delivered User Libraries'를 참조하십시오. |
Frame Grabber RAM (DRAM)을 사용하는 연산자를 통과하는 이론적 대역폭[bits/second]은 다음 공식에 따라 계산됩니다.

그러나 실제 대역폭은 DRAM 효율로 인해 항상 이론적 대역폭보다 낮습니다.
연산자를 통과하는 최대 대역폭은 Bit Width와 Parallelism의 곱이 내부 RAM Port Width와 같을 때 도달됩니다.
![]() |
플랫폼별 값 |
|---|---|
|
RAM Port Width와 System Clock은 플랫폼별로 다릅니다. 개별 플랫폼에 대한 자세한 내용은 Device Resources를 참조하세요. |
| Property | Value |
|---|---|
| Operator Type | M |
| Input Links | I, 이미지 데이터 입력 XTopLeft, 좌표 데이터 입력 YTopLeft, 좌표 데이터 입력 XBottomRight, 좌표 데이터 입력 YBottomRight, 좌표 데이터 입력 |
| Output Link | O, 데이터 입력 |
동기 및 비동기 입력
- 4개의 ROI 입력은 서로 동기화됩니다.
- ROI 입력은 입력 I에 대해 비동기식입니다.
|
부호 없는 입력의 경우 입력 Bit Width 범위는 [1, 64]입니다. 부호 있는 입력의 경우 범위는 [2, 64]입니다. 부호 없는 컬러 입력의 경우 범위는 [3, 63]이며, 부호 있는 컬러의 경우 범위는 [6, 63]입니다. |
|
|
Bit Width와 Parallelism의 곱은 기본 RAM 데이터 너비(RamDataWidth)를 초과할 수 없습니다. 자세한 내용은 Device Resources를 확인하십시오. |
|
|
Bit Width는 다음과 같습니다. ![]() |
|
|
Bit Width는 다음과 같습니다. ![]() |
|
|
최대 이미지 크기는 사용 가능한 RAM 크기를 초과할 수 없습니다: 2^RamAddressWidth >= (I.Max.Img.Width * I.Max.Img.Height) / I.Parallelism |
|
|
ROI 이미지의 최대 픽셀 수(결과적으로 이미지당 최대 ROI 수)는 2^20-1을 초과할 수 없습니다: 2^20 > XTopLeft.Max.Img.Width * XTopLeft.Max.Img.Height |
| RamDataWidth | |
|---|---|
| Type | static write parameter |
| Default | 해당 없음 |
| Range | 정수 |
|
이 파라미터는 RAM 인터페이스에서 사용할 수 있는 데이터 비트 수를 제공합니다. 입력 및 출력의 최대 비트 수입니다. |
|
| RamAddressWidth | |
|---|---|
| Type | static write parameter |
| Default | 해당 없음 |
| Range | 정수 |
|
이 파라미터는 사용 가능한 주소 비트 수를 제공합니다. 이는 최대 허용 이미지 크기를 계산하는 데 도움이 됩니다. |
|
| FillLevel | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | 0 |
| Range | [0%, 100%] |
|
이 파라미터는 DRAM의 Fill 레벨을 25% 단위로 제공합니다. |
|
| Overflow | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | 0 |
| Range | [0, 1] |
|
이 파라미터는 버퍼 오버플로우를 나타냅니다. |
|
| InfiniteSource | |
|---|---|
| Type | static parameter |
| Default | ENABLED |
| Range | {ENABLED, DISABLED} |
|
이 파라미터는 카메라 연산자와 같은 무한 소스 연산자에 대한 지원을 활성화합니다. 자세한 내용은 'Infinite Sources / Connecting Cameras'를 참조하십시오. |
|

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








이전

