Operator Library: Memory
| 하드웨어 플랫폼별 가용성 |
|---|
| 이 오퍼레이터는 microEnable 4 시리즈(Pixelplant 포함)의 타겟 플랫폼에서만 사용할 수 있습니다. |
이 연산자는 색상 성분의 Spatial Correction을 수행합니다. 또한 ROI(Region of Interest) 기능이 포함되어 있습니다. 총 비트 수(bit width x parallelism)는 해당 프레임 그래버의 메모리 제한을 초과할 수 없습니다.
이 오퍼레이터는 Frame Grabber RAM (DRAM)에 이미지 스트림을 버퍼링합니다. RAM 타입의 VisualApplets 리소스가 1개 필요합니다('디바이스 리소스 할당' 참조).
operator의 지연 시간에 대한 정보는 Table 46, 'Individual Latencies of the Operators in Library Memory'를 참조하십시오.
이 연산자의 핵심 기능은 삼라인 라인 스캔 컬러 카메라의 공간적 오차(Spatial Shift) 보정입니다. 빨간색(Red), 초록색(Green), 파란색(Blue) 각 색상 성분에 대해 DeltaRed, DeltaGreen, DeltaBlue 파라미터를 사용하여 상대적 시프트(shift)를 정의할 수 있습니다. 시프트란 입력 이미지와 결과 출력 이미지 간의 라인 단위 지연을 의미합니다. 시프트가 0이면 입력 이미지가 변경되지 않고 그대로 유지됩니다. 예를 들어 DeltaRed = 0, DeltaGreen = 1, DeltaBlue = 2인 경우, 출력 이미지의 첫 번째 라인은 다음과 같은 성분으로 구성됩니다. 빨간색 성분은 첫 번째 입력 이미지 라인에서 읽어오고, 초록색 성분은 두 번째 입력 이미지 라인에서 읽어오며, 파란색 성분은 세 번째 입력 이미지 라인에서 읽어옵니다. 읽기 방향을 정방향에서 역방향으로 전환하려면 파라미터를 DeltaRed = 2, DeltaGreen = 1, DeltaBlue = 0으로 변경하면 됩니다. 델타 시프트는 음수, 0 또는 양수가 될 수 있습니다.
버퍼는 내부적으로 델타 값을 상대적 델타 값으로 변환합니다. 이 변환에는 다음 공식이 적용됩니다.

여기서 델타는 DeltaRed, DeltaGreen 또는 DeltaBlue를 나타냅니다. 이 변환은 내부적으로 수행됩니다. 연산자의 델타 파라미터는 변경되지 않고 지정된 값을 유지합니다. 상대적 델타로의 변환으로 인해 하나의 델타 오프셋은 0이 되고 나머지 두 개는 0 또는 음수가 되며, 예를 들어 [DeltaRed = 1, DeltaGreen = 2, DeltaBlue = 1] 설정은 [DeltaRed = -1, DeltaGreen = 0, DeltaBlue = -1]과 동일합니다. [DeltaRed = -3, DeltaGreen = -3, DeltaBlue = -3] 및 [DeltaRed = 1, DeltaGreen = 1, DeltaBlue = 1] 설정은 모두 다음 설정과 동일합니다. [DeltaRed = 0, DeltaGreen = 0, DeltaBlue = 0]. [DeltaRed = 1, DeltaGreen = 1, DeltaBlue = 1]과 같은 설정은 [DeltaRed = 0, DeltaGreen = 0, DeltaBlue = 0] 설정으로 Spatial Correction을 수행하고 첫 번째 라인을 잘라내도록 지정하는 것을 의미합니다. 연산자는 상대적 델타 시프트만 지원하므로, 첫 번째 라인 잘라내기는 연산자에 의해 수행되지 않습니다. 그러나 CoordinateY 및 RemoveLine 같은 VA 연산자를 사용하여 연산자 외부에서 잘라내기를 수행하는 것은 비교적 쉽습니다.
읽어낸 각 라인에 대해 연산자는 출력 링크 O와 동기화되는 라인 ID 마커를 제공합니다. 라인 ID는 전역 마커이며 버퍼 오버플로로 인해 라인이 손실된 시점을 감지하는 데 사용할 수 있습니다. 오버플로가 발생하면 버퍼는 오버플로 조건이 해제될 때까지, 즉 RAM에 최소 1개의 RoI 라인을 수용할 수 있는 저장 공간이 확보될 때까지 입력 라인을 폐기합니다. 연속된 2개의 라인 간 차이에서 1을 뺀 값은 버퍼 오버플로로 인해 손실된 라인 수를 나타냅니다.
연산자는 공간적 오차를 지속적으로 보정하며, 이는 많은 라인 스캔 애플리케이션에서 일반적인 요구사항입니다. 그러나 취득이 시작될 때 버퍼는 보정된 라인을 출력하기 위해 최소한 일정 수 이상의 라인이 필요합니다. 이 임계값에 도달하지 않으면 라인이 출력되지 않습니다. 버퍼는 보정된 라인만 출력합니다. 첫 번째 이미지 라인이 보정되는 데 필요한 시작 라인은 출력되지 않습니다. 임계값은 지정된 델타 시프트에 따라 다릅니다. 예를 들어 DeltaRed = 0, DeltaGreen = 1, DeltaBlue = -3인 경우 보정을 수행하는 데 5개의 라인이 필요합니다. 따라서 임계값은 5입니다. 5번째 라인 이후부터 버퍼는 라인 출력을 시작합니다. 즉, 버퍼는 보정이 가능한 상태가 되는 즉시 라인 출력을 시작합니다.
프레임 보정 애플리케이션(VALT_IMAGE2D 입력)에서는 각 프레임마다 개별적으로 Spatial Correction이 수행됩니다. 즉, 모든 프레임마다 Spatial Correction이 새로 시작됩니다.
버퍼가 출력하는 첫 번째 라인은 항상 라인 ID 0을 갖습니다. 2D 애플리케이션 모드에서는 첫 번째 프레임 라인의 라인 ID가 이전 프레임의 마지막 라인과 간격을 보이게 됩니다. 간격의 크기는 이 첫 번째 출력 라인에 대한 보정을 수행하는 데 필요한 라인 수와 같습니다. 보정할 수 없는 라인은 버퍼에 의해 억제됩니다.
XOffset 및 XLength 파라미터를 사용하여 ROI 크기를 정의할 수 있습니다. XLength가 링크 parallelism으로 나누어떨어지지 않으면 연산자는 마지막 병렬 워드를 채우기 위해 더미 픽셀을 삽입합니다. 예를 들어 링크 parallelism이 2이고, XOffset이 0이며, XLength가 7인 경우, 연산자는 각각 2개의 픽셀로 구성된 4개의 병렬 워드를 출력합니다. 마지막 워드에는 더미 픽셀이 포함됩니다. 해당 더미 픽셀의 값은 정의되어 있지 않습니다. VA 시뮬레이션에서는 시인성을 높이기 위해 더미 픽셀이 0으로 설정됩니다. XOffset과 XLength 파라미터의 합은 최대 링크 이미지 너비를 초과할 수 없습니다. 입력 이미지 너비가 x-offset과 x-length의 합보다 작더라도 연산자는 파라미터로 설정된 x-length를 계속 읽어 들입니다. 이 경우 연산자는 초과된 픽셀에 대해 정의되지 않은 메모리 콘텐츠를 출력합니다.
버퍼의 Fill 레벨을 측정하기 위해 연산자는 FillLevel과 Overflow의 2가지 파라미터를 제공합니다. FillLevel은 RAM의 Fill 레벨을 25% 단위의 백분율로 보여줍니다. FillLevel이 100%에 가깝거나 도달했고 버퍼에 저장될 다음 이미지가 RAM 용량을 초과할 때 Overflow 파라미터가 1로 설정됩니다. 오버플로가 발생하면 입력 데이터가 폐기되고 입력 이미지 높이가 줄어듭니다. 따라서 불완전한 이미지가 메모리에 저장됩니다. 사용자는 오버플로 파라미터를 폴링(poll)해야 합니다. 오버플로 상태의 지속 시간이 매우 짧을 수 있으므로 연산자의 폴링 주기 사이에 발생했다가 사라질 수 있습니다.
매개변수 InfiniteSource는 오퍼레이터가 카메라에 직접 연결되어 있는지 또는 다른 메모리 오퍼레이터와 시퀀스되어 있는지를 지정하는 데 사용됩니다. 자세한 내용은 'Infinite Sources / Connecting Cameras'를 확인하십시오.
오퍼레이터 제한 사항
-
빈 프레임은 지원되지 않습니다.
라인 길이가 다양한 이미지는 지원되지 않습니다.
Frame Grabber RAM (DRAM)을 사용하는 연산자를 통과하는 이론적 대역폭[bits/second]은 다음 공식에 따라 계산됩니다.

그러나 실제 대역폭은 DRAM 효율로 인해 항상 이론적 대역폭보다 작습니다.
연산자를 통과하는 최대 대역폭은 Bit Width와 Parallelism의 곱이 내부 RAM 포트 너비(RAM Port Width)와 같을 때 달성됩니다.
![]() |
플랫폼별 값 |
|---|---|
|
RAM Port Width과 System Clock은 플랫폼 종속적입니다. 개별 플랫폼에 대한 자세한 내용은 Device Resources를 참조하십시오. |
| Property | Value |
|---|---|
| Operator Type | M |
| 입력 링크 | I, 이미지 데이터 입력 |
| Output Links | O, 데이터 입력 LinkID, 데이터 입력 |
|
bit width와 parallelism의 곱은 네이티브 RAM 데이터 너비를 초과해서는 안 됩니다. 자세한 내용은 Device Resources를 참조하십시오. |
| XOffset | |
|---|---|
| Type | dynamic/static 읽기/쓰기 파라미터 |
| Default | 0 |
| Range | [0, Max.Img Width - XLength] |
|
이 파라미터는 ROI의 왼쪽 상단 모서리 x 좌표를 정의합니다. |
|
| XLength | |
|---|---|
| Type | dynamic/static 읽기/쓰기 파라미터 |
| Default | 1024 |
| Range | [1, 최대 이미지 너비 - XOffset] |
|
이 파라미터는 ROI의 너비를 정의합니다. |
|
| DeltaRed | |
|---|---|
| Type | dynamic/static 읽기/쓰기 파라미터 |
| Default | 0 |
| Range | any |
|
이 파라미터는 빨간색 성분의 시프트를 정의합니다. 델타는 양수 또는 음수의 정수 값일 수 있습니다. |
|
| DeltaGreen | |
|---|---|
| Type | dynamic/static 읽기/쓰기 파라미터 |
| Default | 0 |
| Range | any |
|
이 파라미터는 초록색 성분의 시프트를 정의합니다. 델타는 양수 또는 음수의 정수 값일 수 있습니다. |
|
| DeltaBlue | |
|---|---|
| Type | dynamic/static 읽기/쓰기 파라미터 |
| Default | 0 |
| Range | any |
|
이 파라미터는 파란색 성분의 시프트를 정의합니다. 델타는 양수 또는 음수의 정수 값일 수 있습니다. |
|
| 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'를 참조하십시오. |
|

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


이전

