Operator Library: Memory
이 연산자는 이미지 스트림을 프레임 그래버 RAM(DRAM)에 버퍼링합니다. RAM 유형의 VisualApplets 리소스 1개가 필요합니다. 자세한 내용은 '장치 리소스 할당'을 참조하십시오. 또한 이 연산자는 관심 영역(ROI)을 지원합니다. 총 비트 수(비트 폭 × 병렬 처리 수)는 해당 프레임 그래버의 메모리 제한을 초과해서는 안 됩니다.
operator의 지연 시간에 대한 정보는 Table 46, 'Individual Latencies of the Operators in Library Memory'를 참조하십시오.
이 연산자는 FIFO 방식으로 작동합니다. 모든 입력 데이터는 즉시 출력으로 전달됩니다. 그러나, 예를 들어 뒤따르는 연산자들이 입력 대역폭을 처리할 수 없어 출력이 차단된 경우, 이 연산자는 데이터를 저장합니다. 따라서 연산자가 데이터를 출력할 수 없는 경우에만 메모리가 채워집니다. 이 연산자는 종종 피크 입력 대역폭을 상쇄하는 데 사용됩니다.
내부적으로 이미지 버퍼는 이미지 라인 단위로 작동합니다. 이러한 내부 라인 버퍼 기능 덕분에 메모리 지연 시간이 매우 짧아집니다. 물론, 버퍼에 더 많은 라인이 채워지면 지연 시간은 증가합니다. 예를 들어, 메모리로 전송된 이미지는 즉시 출력으로 전달됩니다. 실제 응용 환경에서는 카메라가 나머지 이미지 라인을 전송하는 동안에도 카메라 이미지의 일부를 PC로 전달할 수 있습니다 .
XOffset, XLength, YOffset 및 YLength 매개변수를 사용하여 ROI 크기를 정의할 수 있습니다. 입력 이미지의 너비가 XOffset과 XLength의 합보다 작더라도, 연산자는 매개변수로 지정된 XLength 값을 그대로 읽습니다. 이 경우, 연산자는 추가 픽셀에 대해 정의되지 않은 메모리 내용을 출력합니다. 입력 이미지의 높이가 요청된 출력 이미지 높이보다 작으면, 연산자는 사용 가능한 행만 출력합니다.
Line1D 애플리케이션 모드에서는 YOffset 및 YLength 설정이 버퍼에 영향을 미치지 않습니다.
버퍼의 채움 수준을 측정하기 위해 운영자는 다음 두 가지 매개변수를 지정합니다: FillLevel 및 Overflow. FillLevel은 RAM의 채움 수준을 25% 단위로 표시합니다. Overflow 매개변수는 FillLevel이 100%에 근접하거나 100%일 때, 버퍼에 저장될 다음 이미지가 RAM 용량을 초과할 경우 1로 설정됩니다. 오버플로우가 발생하면 입력 데이터가 버려지고 입력 이미지의 높이가 줄어듭니다. 따라서 메모리에는 불완전한 이미지가 저장됩니다. 사용자는 오버플로우 매개변수를 폴링해야 합니다. 오버플로우 상태의 지속 시간이 매우 짧을 수 있으므로, 운영자의 폴링 주기 내에 오버플로우가 발생할 가능성이 있습니다.
InfiniteSource 매개변수는 연산자가 카메라에 직접 연결되어 있는지, 아니면 다른 메모리 연산자와 시퀀스로 연결되어 있는지를 지정하는 데 사용됩니다. 자세한 내용은 ‘무한 소스 / 카메라 연결’을 참조하십시오.
오퍼레이터 제한 사항
-
빈 프레임은 지원되지 않습니다.
![]() |
사용 가능한 메모리 공간 |
|---|---|
|
운영자는 내부 데이터를 위해 추가 메모리 공간이 필요합니다. 따라서 사용 중인 RAM 리소스의 전체 용량을 이미지 데이터 버퍼링에 사용할 수는 없습니다. 이미지 데이터 버퍼링에 실제로 사용 가능한 공간은 하드웨어 플랫폼(플랫폼 RAM 용량 및 플랫폼 RAM 인터페이스 폭)과 링크 구성에 따라 달라집니다. 플랫폼 RAM 용량 및 플랫폼 RAM 인터페이스 폭에 대한 자세한 내용은 장치 리소스항목을 참조하십시오.) 다음 공식을 사용하여 RAM 리소스의 사용 가능한 용량을 계산할 수 있습니다.
수식과 측정 단위에서 사용되는 약어:
|
Frame Grabber RAM (DRAM)을 사용하는 연산자를 통과하는 이론적 대역폭[bits/second]은 다음 공식에 따라 계산됩니다.

그러나 실제 대역폭은 DRAM 효율로 인해 항상 이론적 대역폭보다 작습니다.
연산자를 통과하는 최대 대역폭은 Bit Width와 Parallelism의 곱이 내부 RAM 포트 너비(RAM Port Width)와 같을 때 달성됩니다.
![]() |
플랫폼별 값 |
|---|---|
|
RAM 포트 폭과 시스템 클럭은 플랫폼에 따라 다릅니다. 참조: 장치 리소스 를 참조하십시오. |
|
부호 없는 입력의 경우 입력 Bit Width 범위는 [1, 64]입니다. 부호 있는 입력의 경우 범위는 [2, 64]입니다. 부호 없는 컬러 입력의 경우 범위는 [3, 63]이고 부호 있는 컬러의 경우 범위는 [6, 63]입니다. |
|
|
비트 폭과 병렬 처리 수의 곱은 네이티브 RAM 데이터 폭을 초과해서는 안 됩니다. 확인 장치 리소스 에서 자세한 내용을 확인하십시오. |
| XOffset | |
|---|---|
| Type | dynamic/static 읽기/쓰기 파라미터 |
| Default | 0 |
| Range | [0, 최대 이미지 너비 - X길이] |
|
이 매개변수는 ROI의 왼쪽 상단 모서리의 x 좌표를 정의합니다. 보폭은 평행도입니다. |
|
| XLength | |
|---|---|
| Type | dynamic/static 읽기/쓰기 파라미터 |
| Default | 1024 |
| Range | [2*병렬 처리, 최대 이미지 너비 - X 오프셋] |
|
이 매개변수는 ROI의 너비를 정의합니다. 보폭은 평행도입니다. |
|
| YOffset | |
|---|---|
| Type | dynamic/static 읽기/쓰기 파라미터 |
| Default | 0 |
| Range | [0, 최대 이미지 높이 - YLength] |
|
이 매개변수는 ROI의 왼쪽 상단 모서리의 y좌표를 정의합니다. |
|
| YLength | |
|---|---|
| Type | dynamic/static 읽기/쓰기 파라미터 |
| Default | 1024 |
| Range | [1, 최대 이미지 높이 - Y 오프셋] |
|
이 매개변수는 ROI의 높이를 정의합니다. |
|
| 채움 수준 | |
|---|---|
| Type | dynamic read parameter |
| Default | 0 |
| Range | [0%, 100%] |
|
이 매개변수는 DRAM의 채움 수준을 25% 단위로 지정합니다. |
|
| Overflow | |
|---|---|
| Type | dynamic read parameter |
| Default | 0 |
| Range | [0, 1] |
|
이 매개변수는 버퍼 오버플로를 나타냅니다. |
|
| InfiniteSource | |
|---|---|
| Type | static parameter |
| Default | 활성화됨 |
| Range | {활성화됨, 비활성화됨} |
|
이 매개변수는 카메라 연산자와 같은 무한 소스 연산자에 대한 지원을 활성화합니다. 자세한 내용은 ‘무한 소스 / 카메라 연결’을 참조하십시오. |
|
다음 예제에서는 ImageBuffer 연산자의 사용법을 보여줍니다:
-
시작하기
-
그림 29, '간단한 VisualApplets 디자인'
기본 원리 - VisualApplets의 개념 이해하기
-
데이터 흐름 - VisualApplets에서 사용되는 파이프라인 구조 이해하기
-
동기화 규칙 - O형 네트워크에서 연산자의 사용.
-
Infinite Sources - 연산자와 카메라 연결. (DRC2 지연 오류)
-
설계 매개변수화
-
설계 매개변수화 - 비활성화된 매개변수
-
설계 매개변수화 - 유효하지 않은 매개변수 값
-
연산자의 디바이스 리소스 할당을 학습합니다.
-
그림 201, ‘링크 속성 변경 후 발생하는 비정상 상태’
기본 가이드: 기본 획득 - ImageBuffer 연산자의 불법 조건
-
예시 - 히스토그램 임계값 설정
-
Examples - 라인 스캔 애플리케이션에서 Blob_Analysis_1D operator 사용법을 보여줍니다.
-
예시 - 블롭 분석 operator가 입력 카메라 이미지에 적용됩니다. 이 앱릿은 앱릿 내에서 블롭 데이터의 사용법을 보여줍니다. 이 경우 최대 면적을 가진 객체가 지역화되며, 해당 좌표를 사용하여 원본 이미지에서 객체를 잘라냅니다.
-
'연산자 JPEG_Encoder를 사용한 JPEG 압축'
예시 - 연산자 JPEG_Encoder의 사용법을 보여주는 간단한 예시입니다.
-
'JPEG Color Compression Using User Library Elements'
Examples - 컬러 JPEG 압축을 위한 JPEG 사용자 라이브러리 요소의 사용법을 보여주는 간단한 예제입니다.
-
Examples - microEnable 4 및 5 플랫폼용으로 지원이 중단된 JPEG_Encoder_Gray 오퍼레이터의 사용법을 보여주는 간단한 예제입니다.
-
예시 - 이미지 크기가 측정되며 디자인 흐름을 분석하는 데 사용할 수 있습니다.
-
예시 - 이미지 타이밍이 제너레이터에 의해 제공되는 동안 디자인의 데이터 흐름을 분석할 수 있습니다.
-
예시 - 디버깅 목적으로 이미지를 수동으로 삽입할 수 있습니다.
-
예시 - 두 개의 연속된 이미지 간의 차이를 계산합니다. 계산된 차이에 임계값 처리를 적용한 후 DMA 채널을 통해 출력합니다.
-
예제 - 라인 스캔 카메라용 필터를 구현하는 방법을 설명합니다.
-
예시 - 고속 및 고견고성 레이저 라인 감지 알고리즘. 이 알고리즘은 서브픽셀 해상도 결과를 얻기 위해 무게 중심(center of gravity) 좌표를 결정합니다.
-
'동적 이미지 수에 대해 롤링 평균(rolling average)이 적용됩니다.'
예제 - 롤링 평균 - 루프

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



이전

