Operator Library: Memory
이 연산자는 버퍼링된 각 이미지에 대해 여러 개의 관심 영역(ROI)을 지원합니다. 모든 ROI는 순차적으로 판독됩니다. 각 ROI는 ROI 0, ROI 1, ROI 2부터 ROI N-1까지 새롭고 독립적인 출력 이미지입니다. N은 파라미터 NumRoI로 지정된 ROI 수입니다. 프레임 크기를 초과하지 않는 한 가능한 모든 직사각형 영역이 지원됩니다. 즉, 단일 픽셀, 단일 라인, 단일 열, 직사각형 영역 또는 전체 프레임을 ROI로 정의할 수 있습니다. 서로 다른 ROI는 크기가 다를 수 있습니다. 각 ROI는 개별적으로 정의할 수 있습니다. ROI는 서로 겹칠 수 있습니다. 단, 모든 ROI는 입력 및 출력 링크에 의해 정의된 최대 이미지 크기 제한을 충족해야 합니다. 즉, ROI 너비는 최대 이미지 너비를 초과할 수 없으며 ROI 높이는 최대 이미지 높이를 초과할 수 없습니다.
Operator 레이턴시에 대한 정보는 Table 46, 'Individual Latencies of the Operators in Library Memory'를 참조하십시오.
연산자는 프레임 그래버 온보드 RAM에 이미지 스트림을 버퍼링합니다. RAM 유형의 VisualApplets 리소스가 하나 필요합니다('Allocation of Device Resources' 참조).
ImageBufferMultiRoI는 입력 링크 최대 이미지 너비 및 높이 파라미터로 정의된 고정 크기의 이미지에서 작동합니다. 이는 연산자에 의해 수행되는 입력 프레임 크기 제어를 의미합니다.
최대 이미지 크기보다 작은 이미지는 수정 없이 버퍼링됩니다. 그러나 ROI를 읽는 과정에서 정의되지 않은 픽셀 값, 즉 입력 이미지 크기 외부에 있는 픽셀 값을 읽게 될 수 있습니다. 누락된 프레임 픽셀에는 임의의 데이터가 포함되어 있으므로 추가 처리에서는 정의되지 않은 것으로 처리해야 합니다.
오버플로가 발생한 경우, 즉 버퍼가 가득 차서 더 이상 이미지를 저장할 수 없는 경우, 버퍼에 최소한의 프레임 하나를 저장할 수 있을 만큼의 여유 공간이 생길 때까지 들어오는 모든 이미지가 삭제됩니다. 오버플로는 쓰기 속도에 비해 ROI 읽기 속도가 너무 느리기 때문에 발생할 수 있습니다. 이는 너무 많은 ROI가 정의되었거나 후속 연산자가 출력을 차단하기 때문일 수 있습니다. 균형 잡힌 설계의 일반적인 상황에서는 오버플로가 절대 발생하지 않습니다.
연산자는 해당 프레임이 완전히 버퍼링되는 즉시 출력에서 ROI 이미지를 제공합니다. 판독 방식은 파라미터 Mode로 정의됩니다.
파라미터 MaxNumRoI는 ROI의 최대 개수를 지정합니다. 실제로 사용되는 ROI 개수는 더 적을 수 있으며 파라미터 NumRoI를 사용하여 정의됩니다.
파라미터 NumRoI는 버퍼링된 각 이미지에 대해 연산자가 출력에서 제공할 ROI의 개수를 지정합니다. 동적 유형으로 설정된 경우 이 숫자는 MaxNumRoI를 초과할 수 없습니다.
파라미터 Mode는 이미지 처리를 위한 연산자 동작을 지정합니다. FreeRun은 가능한 가장 빠른 시점에, 즉 해당 프레임이 완전히 버퍼링되는 즉시 버퍼가 출력에서 ROI를 제공하도록 정의합니다. 이 모드를 자유 실행(free running) 모드라고도 합니다. 연산자는 파이프라인 흐름 제어 메커니즘에 의해서만 제어됩니다. WaitAfterImage 모드는 프레임의 모든 ROI가 출력에 제공된 후 연산자가 대기하도록 강제합니다. 다음 프레임의 ROI 판독을 다시 시작하려면 파라미터 Unlock에 기록해야 합니다. WaitAfterRoI는 연산자가 각 프레임의 각 ROI 후에 중지된다는 점만 제외하고 WaitAfterImage와 유사합니다. 추가 처리를 다시 시작하려면 파라미터 Unlock에 대한 쓰기 주기가 필요합니다.
파라미터 Unlock은 WaitAfterImage 및 WaitAfterRoI 모드에서 연산자의 잠금을 해제하고 추가 판독 작업을 시작하는 데 사용됩니다. FreeRun 모드에서는 이 파라미터가 영향을 미치지 않습니다.
XOffset, XLength, YOffset 및 YLength는 일련의 ROI를 지정합니다. 이 파라미터들은 필드 파라미터입니다. 이 파라미터들의 파라미터 유형은 동적 또는 정적으로 설정할 수 있으며, 이는 런타임 중에 조정 가능하거나 조정 불가능함을 의미합니다. 하나의 ROI 파라미터 유형이 설정되면 모든 ROI 파라미터의 파라미터 유형이 그에 따라 자동으로 조정됩니다. 필드의 크기는 파라미터 MaxNumRoI로 정의됩니다. 연산자는 NumRoI 개의 ROI를 순차적 순서로 읽습니다. 필드 파라미터 구성 방법에 대한 자세한 내용은 'Parameter Editing'에서 확인하십시오.
모든 ROI는 동적으로 업데이트할 수 있습니다. 단, FreeRun, WaitAfterImage 및 WaitAfterRoI 모드의 경우 이미지 취득이 시작되지 않은 경우에만 업데이트를 수행할 수 있습니다. 또한 WaitAfterImage 및 WaitAfterRoI 모드에서는 해당 프레임 / 프레임의 모든 ROI가 전송되었고 연산자가 Unlock 파라미터에 대한 쓰기 주기를 기다리고 있는 경우 ROI를 업데이트할 수 있습니다.
이미지 취득 중에 ROI를 업데이트하면 일시적으로 직사각형이 아닌 ROI가 발생할 수 있으므로 피해야 합니다.
이미지 프로토콜 VALT_LINE1D와 함께 연산자를 사용하는 경우 Y 좌표 파라미터가 비활성화됩니다. 1D 동작에서 연산자는 하나의 ROI를 하나의 라인으로 읽습니다. 이 경우 연산자의 출력은 무한 1D 이미지 스트림이 되며, 각 라인은 하나의 ROI로 표현됩니다(예: line 0 = ROI 0, line 1 = ROI 1, line N = ROI N, line N+1 = ROI 0, ...).
버퍼의 채워진 수준을 측정하기 위해 연산자는 FillLevel과 Overflow의 두 가지 레지스터를 제공합니다. FillLevel은 RAM의 백분율 기준 채워진 수준을 보여줍니다. Overflow 파라미터는 FillLevel이 100%에 가깝거나 100%이고 버퍼에 저장될 다음 이미지가 RAM 용량을 초과할 때 1로 설정됩니다.
파라미터 InfiniteSource는 연산자가 카메라에 직접 연결되어 있는지 또는 다른 메모리 연산자와 시퀀스되어 있는지를 지정하는 데 사용됩니다. 자세한 내용은 'Infinite Sources / Connecting Cameras'를 확인하십시오.
Operator 제한 사항
-
빈 프레임은 지원되지 않습니다.
-
라인 길이가 다른 이미지는 지원되지 않습니다.
![]() |
ImageBufferMultiRoI는 imaFlex CXP-12 Quad 및 imaFlex CXP-12 Penta 플랫폼에서 사용할 수 없습니다. |
|---|---|
|
ImageBufferMultiRoI는 imaFlex CXP-12 Quad 및 imaFlex CXP-12 Penta 플랫폼에서 지원되지 않지만, 대신 imaFlex CXP-12 Quad 및 imaFlex CXP-12 Penta 플랫폼용 동등한 사용자 라이브러리 요소를 사용할 수 있습니다. 사용자 라이브러리 요소 작업 방법에 대한 지침은 'Delivered User Libraries'를 참조하십시오. |
![]() |
예시: 메모리 사용량 최적화 |
|---|---|
|
고객이 20000 x 7096 픽셀 크기의 이미지(입력 포트의 링크 Property)를 공급합니다. Parallelism은 8로 설정됩니다. Pixel Bit Width는 8로 설정됩니다. 이 예시에서 사용된 플랫폼은 mE5이며, 즉 256 Mbyte RAM 뱅크를 제공합니다. 256 MB를 모두 사용하려면 연산자에 128 bit를 공급해야 합니다. 그러나 Parallelism이 8인 경우 64 bit(8 x 8 bit)만 공급되므로 사용자는 RAM의 128 MB만 사용할 수 있습니다. 20000 x 7096 픽셀 크기의 이미지를 저장하려면 141,920,000바이트(~135MB)가 필요하며, 이는 사용 가능한 128MB를 초과합니다. 이는 VisualApplets에 의해 감지되며 링크가 빨간색으로 강조 표시됩니다. 해결책: 연산자 ImageBufferMultiRoi 앞에 Parup(16으로)을 배치합니다. |
Frame Grabber RAM (DRAM)을 사용하는 연산자를 통과하는 이론적 대역폭[bits/second]은 다음 공식에 따라 계산됩니다.

그러나 실제 대역폭은 DRAM 효율로 인해 항상 이론적 대역폭보다 낮습니다.
연산자를 통과하는 최대 대역폭은 Bit Width와 Parallelism의 곱이 내부 RAM Port Width와 같을 때 도달됩니다.
![]() |
플랫폼별 값 |
|---|---|
|
RAM Port Width와 System Clock은 플랫폼별로 다릅니다. 개별 플랫폼에 대한 자세한 내용은 Device Resources를 참조하세요. |
|
부호 없는 입력의 Bit Width 범위는 [1, 64]입니다. 부호 있는 입력의 경우 범위는 [2, 64]입니다. 부호 없는 컬러 입력의 경우 범위는 [3, 63]이고, 부호 있는 컬러의 경우 범위는 [6, 63]입니다. |
|
|
Bit Width와 Parallelism의 곱은 기본 ram 데이터 너비(RamDataWidth)를 초과할 수 없습니다. 자세한 내용은 Device Resources를 확인하십시오. |
|
|
I의 최대 이미지 크기:
|
| RamDataWidth | |
|---|---|
| Type | static write parameter |
| Default | 해당 없음 |
| Range | 정수 |
|
이 파라미터는 RAM 인터페이스에서 사용할 수 있는 데이터 비트 수를 제공합니다. 입력 및 출력의 최대 비트 수입니다. |
|
| RamAddressWidth | |
|---|---|
| Type | static write parameter |
| Default | 해당 없음 |
| Range | 정수 |
|
이 파라미터는 사용 가능한 주소 비트 수를 제공합니다. 이는 최대 허용 이미지 크기를 계산하는 데 도움이 됩니다. |
|
| MaxNumRoI | |
|---|---|
| Type | static parameter |
| Default | 1 |
| Range | [1, 65535] |
|
이 파라미터는 오퍼레이터가 저장할 수 있는 최대 ROI 개수를 정의합니다. |
|
| NumRoI | |
|---|---|
| Type | 동적/정적 읽기/쓰기 파라미터 |
| Default | 1 |
| Range | [1, MaxNumRoI] |
|
이 파라미터는 실제로 사용되는 ROI 개수를 정의합니다. 오퍼레이터는 각 입력 이미지에서 NumRoI 개수의 ROI를 읽어와 출력으로 제공합니다. 파라미터가 static으로 설정된 경우 범위는 [1, 65536]이며 MaxNumRoI는 비활성화됩니다. |
|
| Mode | |
|---|---|
| Type | static parameter |
| Default | FreeRun |
| Range | {FreeRun, WaitAfterImage, WaitAfterRoI} |
|
이 파라미터는 읽기(read out) 알고리즘의 작동 모드를 정의합니다. FreeRun 모드에서는 해당하는 프레임이 완전히 버퍼링되는 즉시 오퍼레이터가 ROI 이미지를 제공합니다. WaitAfterImage 모드에서는 단일 프레임 내의 모든 ROI를 제공한 후 중지하고, 소프트웨어가 Unlock 파라미터에 값을 기록하여 다음 프레임 ROI 읽기를 활성화할 때까지 대기합니다. WaitAfterRoI 모드에서는 각 프레임의 각 ROI 후에 중지됩니다. 읽기 작업을 다시 시작하려면 소프트웨어가 Unlock 파라미터에 값을 기록해야 합니다. |
|
| Unlock | |
|---|---|
| Type | dynamic write parameter |
| Default | 1 |
| Range | {1} |
|
이 파라미터는 WaitAfterImage 및 WaitAfterRoI 모드를 위한 핸드셰이크를 구현합니다. 이 파라미터에 값 1을 기록하면 오퍼레이터가 다음 ROI / 다음 프레임의 모든 ROI 읽기를 계속 진행하게 됩니다. 이 파라미터는 Mode 파라미터가 WaitAfterImage 또는 WaitAfterRoI로 설정된 경우에만 사용할 수 있습니다. |
|
| XOffset | |
|---|---|
| Type | 동적/정적 읽기/쓰기 파라미터 |
| Default | 0 |
| Range | [0, Max.Img Width - XLength] |
|
이 필드 파라미터는 ROI의 왼쪽 상단 모서리 x 좌표를 정의합니다. 스텝 크기는 Parallelism입니다. 'Parameter Editing'에서 필드 파라미터 구성 방법을 확인하십시오. |
|
| XLength | |
|---|---|
| Type | 동적/정적 읽기/쓰기 파라미터 |
| Default | 1024 |
| Range | [2*parallelism, Max.Img Width - XOffset] |
|
이 필드 파라미터는 ROI의 너비를 정의합니다. 스텝 크기는 Parallelism입니다. 'Parameter Editing'에서 필드 파라미터 구성 방법을 확인하십시오. |
|
| YOffset | |
|---|---|
| Type | 동적/정적 읽기/쓰기 파라미터 |
| Default | 0 |
| Range | [0, Max.Img Height - YLength] |
|
이 필드 파라미터는 ROI의 왼쪽 상단 모서리 y 좌표를 정의합니다. 'Parameter Editing'에서 필드 파라미터 구성 방법을 확인하십시오. |
|
| YLength | |
|---|---|
| Type | 동적/정적 읽기/쓰기 파라미터 |
| Default | 1024 |
| Range | [1, Max.Img Height - YOffset] |
|
이 필드 파라미터는 ROI의 높이를 정의합니다. 'Parameter Editing'에서 필드 파라미터 구성 방법을 확인하십시오. |
|
| FillLevel | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | 0 |
| Range | [0%, 100%] |
|
이 파라미터는 DRAM의 Fill 레벨을 제공합니다. |
|
| Overflow | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | 0 |
| Range | [0, 1] |
|
이 파라미터는 버퍼 오버플로우를 나타냅니다. |
|
| InfiniteSource | |
|---|---|
| Type | static parameter |
| Default | ENABLED |
| Range | {ENABLED, DISABLED} |
|
이 파라미터는 카메라 연산자와 같은 infinite source 연산자에 대한 지원을 활성화합니다. 자세한 내용은 'Infinite Sources / Connecting Cameras'를 참조하십시오. |
|
ImageBufferMultiRoI 오퍼레이터의 사용법은 다음 예시와 같습니다.
-
'Color Plane Separation Option 3 - Sequential with Operator ImageBufferMultiRoI'
컬러 플레인의 순차적(Sequential) DMA 출력. 컬러 분리는 operator ImageBufferMultiROI를 사용하여 수행됩니다.
-
컬러 평면의 순차적 DMA 출력. 컬러 분리는 ImageBufferMultiROI 연산자를 사용하여 수행됩니다. 추가적인 사전 정렬(pre-sorting)을 통해 대역폭과 리소스가 최적화됩니다.

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



이전

