Operator Library: Memory
| Hardware Platform별 가용성 |
|---|
| 이 연산자는 microEnable 4 시리즈(Pixelplant 포함)의 타겟 플랫폼에서만 사용할 수 있습니다. |
이 오퍼레이터는 컬러 성분의 Spatial Correction을 수행합니다. 또한 Region-of-Interest (ROI) 기능이 포함되어 있습니다. 총 비트 수(bit width x Parallelism)는 해당 프레임 그래버의 메모리 제한을 초과해서는 안 됩니다.
이 연산자는 Frame Grabber RAM (DRAM)에 이미지 스트림을 버퍼링합니다. RAM 유형의 VisualApplets 리소스가 하나 필요합니다('Allocation of Device Resources' 참조).
연산자 지연 시간에 대한 정보는 '표 46: Library Memory의 연산자별 지연 시간'을 참조하십시오.
이 오퍼레이터의 주요 기능은 3라인 스캔 컬러 카메라의 공간적 오차(spatial shift)를 보정하는 것입니다. 빨간색, 초록색, 파란색 각 컬러 성분에 대해 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을 뺀 값은 버퍼 오버플로로 인해 손실된 라인의 양입니다.
오퍼레이터는 많은 라인 스캔 애플리케이션의 일반적인 요구 사항인 공간적 오차를 지속적으로 보정합니다. 그러나 Acquisition이 시작될 때 버퍼는 보정된 라인을 출력하기 위해 최소한 일정량의 라인이 필요합니다. 이 임계값에 도달하지 않으면 라인이 출력되지 않습니다. 버퍼는 보정된 라인만 출력합니다. 첫 번째 이미지 라인을 보정하는 데 필요한 시작 라인은 출력되지 않습니다. 임계값은 지정된 델타 시프트에 따라 다릅니다. 예를 들어 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를 계속 읽습니다. 이 경우 오퍼레이터는 초과된 픽셀에 대해 정의되지 않은 메모리 콘텐츠를 출력합니다.
버퍼의 채워진 수준을 측정하기 위해 오퍼레이터는 FillLevel과 Overflow의 2가지 파라미터를 제공합니다. FillLevel은 RAM의 채워진 수준을 25% 단위의 백분율로 보여줍니다. Overflow 파라미터는 FillLevel이 100%에 가깝거나 도달했고 버퍼에 저장될 다음 이미지가 RAM 용량을 초과할 때 1로 설정됩니다. 오버플로가 발생하면 입력 데이터가 폐기되고 입력 이미지 높이가 줄어듭니다. 따라서 불완전한 이미지가 메모리에 저장됩니다. 사용자는 오버플로 파라미터를 폴링해야 합니다. 오버플로 상태의 지속 시간이 매우 짧을 수 있으므로 오퍼레이터의 폴링 주기 사이에 발생했다가 사라질 수 있습니다.
파라미터 InfiniteSource는 오퍼레이터가 카메라에 직접 연결되어 있는지 또는 다른 메모리 오퍼레이터와 시퀀스되어 있는지를 지정하는 데 사용됩니다. 자세한 내용은 'Infinite Sources / Connecting Cameras'를 확인하세요.
Operator 제한 사항
-
빈 프레임은 지원되지 않습니다.
라인 길이가 다른 이미지는 지원되지 않습니다.
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 Link | I, image data input |
| Output Links | O, 데이터 입력 LinkID, 데이터 입력 |
|
Bit Width와 Parallelism의 곱은 기본 RAM 데이터 너비를 초과해서는 안 됩니다. 자세한 내용은 Device Resources를 확인하세요. |
| XOffset | |
|---|---|
| Type | 동적/정적 읽기/쓰기 파라미터 |
| Default | 0 |
| Range | [0, Max.Img Width - XLength] |
|
이 파라미터는 ROI의 왼쪽 상단 모서리의 x 좌표를 정의합니다. |
|
| XLength | |
|---|---|
| Type | 동적/정적 읽기/쓰기 파라미터 |
| Default | 1024 |
| Range | [1, Max.Img Width - XOffset] |
|
이 파라미터는 ROI의 너비를 정의합니다. |
|
| DeltaRed | |
|---|---|
| Type | 동적/정적 읽기/쓰기 파라미터 |
| Default | 0 |
| Range | any |
|
이 파라미터는 빨간색 성분의 시프트를 정의합니다. 델타는 양수 또는 음수의 정수 값일 수 있습니다. |
|
| DeltaGreen | |
|---|---|
| Type | 동적/정적 읽기/쓰기 파라미터 |
| Default | 0 |
| Range | any |
|
이 파라미터는 초록색 성분의 시프트를 정의합니다. 델타는 양수 또는 음수의 정수 값일 수 있습니다. |
|
| DeltaBlue | |
|---|---|
| Type | 동적/정적 읽기/쓰기 파라미터 |
| Default | 0 |
| Range | any |
|
이 파라미터는 파란색 성분의 시프트를 정의합니다. 델타는 양수 또는 음수의 정수 값일 수 있습니다. |
|
| FillLevel | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | 0 |
| Range | [0%, 100%] |
|
이 파라미터는 DRAM의 Fill 레벨을 25% 단위로 제공합니다. |
|
| Overflow | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | 0 |
| Range | [0, 1] |
|
This parameter indicates a buffer overflow. |
|
| InfiniteSource | |
|---|---|
| Type | static parameter |
| Default | ENABLED |
| Range | {ENABLED, DISABLED} |
|
이 파라미터는 카메라 연산자와 같은 무한 소스 연산자에 대한 지원을 활성화합니다. 자세한 내용은 'Infinite Sources / Connecting Cameras'를 참조하십시오. |
|

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


이전

