ImageBuffer 오퍼레이터

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 리소스의 사용 가능한 용량을 계산할 수 있습니다.

  • 사용 중인 RAM 크기 [바이트 단위] = ((PRS * 2^20 / (PRIW / 8 비트)) / RLS) * MIW * BW / 8

  • 사용 중인 RAM 크기 [라인 단위] = ((PRS * 2^20 / (PRIW / 8 비트)) / RLS)

  • 사용된 RAM 크기 [프레임 단위] = ((PRS * 2^20 / (PRIW / 8 비트)) / RLS) / MIH

수식과 측정 단위에서 사용되는 약어:

  • PRS: 플랫폼 RAM 용량 [MB 단위, 1MB = 2^20 바이트]

  • PRIW: 플랫폼 RAM 인터페이스 폭 [비트 단위]

  • MIW: MaxImageWidth [픽셀 단위]

  • MIH: MaxIMageHeight [줄 단위]

  • P: Parallelism

  • BW: 비트 폭 [비트 단위]

  • RLS: 원시 라인 크기: 2 ^ ceil(log2n(MIW / P + 4))

대역폭 최적화

Frame Grabber RAM (DRAM)을 사용하는 연산자를 통과하는 이론적 대역폭[bits/second]은 다음 공식에 따라 계산됩니다.

그러나 실제 대역폭은 DRAM 효율로 인해 항상 이론적 대역폭보다 작습니다.

연산자를 통과하는 최대 대역폭은 Bit Width와 Parallelism의 곱이 내부 RAM 포트 너비(RAM Port Width)와 같을 때 달성됩니다.

[참고] 플랫폼별 값

RAM 포트 폭과 시스템 클럭은 플랫폼에 따라 다릅니다. 참조: 장치 리소스 를 참조하십시오.

I/O Properties

Property Value
Operator Type M
입력 링크 I, 이미지 데이터 입력
출력 링크 O, 데이터 입력

지원되는 Link Format

Link Parameter Input Link I Output Link O
Bit Width [1, 64]12 as I
Arithmetic {unsigned, signed} as I
Parallelism any3 as I
Kernel Columns 1 as I
Kernel Rows 1 as I
Img Protocol {VALT_IMAGE2D, VALT_LINE1D} as I
Color Format any as I
Color Flavor any as I
Max. Img Width 65535 as I
Max. Img Height 65535 as I

1

부호 없는 입력의 경우 입력 Bit Width 범위는 [1, 64]입니다. 부호 있는 입력의 경우 범위는 [2, 64]입니다. 부호 없는 컬러 입력의 경우 범위는 [3, 63]이고 부호 있는 컬러의 경우 범위는 [6, 63]입니다.

2 3

비트 폭과 병렬 처리 수의 곱은 네이티브 RAM 데이터 폭을 초과해서는 안 됩니다. 확인 장치 리소스 에서 자세한 내용을 확인하십시오.

Parameters

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 연산자의 사용법을 보여줍니다: