오퍼레이터 라이브러리: Synchronization
연산자 RemovePixel은 제어 입력 링크 Rem에 따라 입력 링크 I와 출력 링크 O 사이의 픽셀을 제거합니다. 제거 입력 링크 Rem은 픽셀 제거를 제어하는 바이너리 입력 링크입니다. Rem의 픽셀이 1로 설정된 경우, 입력 링크 I의 동일한 위치에 있는 픽셀이 제거됩니다. 그 결과 후속 픽셀들이 왼쪽으로 시프트됩니다. 따라서 출력 라인의 너비는 제거된 픽셀 수만큼 줄어듭니다.
픽셀 제거로 인해 링크의 Parallelism으로 나누어떨어지지 않는 라인 너비를 가진 라인을 구성할 수 있습니다.
출력 링크 O에서 링크의 Parallelism으로 나누어떨어지는 라인 길이를 생성하기 위해 연산자는 더미 픽셀을 삽입합니다. 이러한 더미 픽셀의 콘텐츠는 정의되지 않습니다(VA 시뮬레이션에서는 이 값을 0으로 설정함).
라인 길이를 링크 Parallelism으로 나누어떨어지게 만드는 방법에는 두 가지가 있습니다.
연산자가 다음을 수행하도록 설정할 수 있습니다.
- 라인 길이가 링크 Parallelism으로 나누어떨어질 때까지 해당 라인을 더미 픽셀로 Fill하기(예제 1 참조), 또는
- Parallelism의 완전한 블록을 구성하지 않는 픽셀을 다음 라인으로 시프트하기(예제 2 참조). 이 경우 연산자는 필요한 경우 프레임의 마지막 라인에만 더미 픽셀을 삽입합니다.
연산자의 이러한 동작은 파라미터 FlushCondition으로 제어합니다. 파라미터가 EoL(End of Line)로 설정된 경우, 연산자는 Parallelism으로 나누어떨어지지 않는 라인의 끝에 더미 픽셀을 추가합니다. 이미지에서 모든 픽셀이 제거되더라도 이미지의 라인 구조는 유지됩니다(이 경우 이미지는 빈 라인으로만 구성됨). 프레임 내의 모든 픽셀이 제거된 경우, 프레임은 빈 라인으로만 구성됩니다. 라인 수는 변경되지 않습니다.
파라미터 FlushCondition이 EoF(End of Frame)로 설정된 경우: 라인의 마지막 픽셀이 Parallelism 블록을 완성하지 못하면, 이러한 마지막 픽셀은 다음 출력 라인으로 이동됩니다. 따라서 라인은 Parallelism 경계에서 끝나고 초과 픽셀은 다음 라인으로 이동합니다. 결과적으로 연산자는 프레임의 끝에만 더미 픽셀을 생성합니다. 이 모드에서는 라인 구조가 변경될 수 있으며 마지막 라인이 (Parallelism 1개만큼) 더 길어질 수 있습니다. 따라서 MaxWidth는 입력 링크보다 1배의 Parallelism만큼 더 넓습니다. EoF 모드는 이미지 압축 애플리케이션에 자주 사용됩니다.
![]() |
리소스 소비 |
|---|---|
|
연산자의 FPGA 리소스 소비는 Parallelism에 따라 크게 증가합니다. Basler는 이 연산자에서 낮은 Parallelism을 사용할 것을 권장합니다. RemovePixel 연산자를 사용하기 전에 병렬 픽셀을 커널로 시프트하여(즉, CastKernel을 사용하여) Parallelism을 줄일 수 있습니다. 라인의 마지막 픽셀만 제거하려면 대신 CutLine 연산자를 truncate 모드로 사용할 수 있습니다. 이렇게 하면 리소스를 절약할 수 있습니다. |
-------------------------------------------------------------------------------------
예제 1(파라미터 FlushCondition이 EoL로 설정됨):
이 예제에서 FlushCondition은 EoL(기본값)로 설정되어 있습니다. 연산자는 4의 Parallelism으로 사용되며 그림에 표시된 이미지를 입력받습니다.
두 번째 라인에서는 2개의 픽셀이 제거됩니다. 이로 인해 후속 픽셀들이 시프트됩니다. 6(새로운 라인 길이)은 4(Parallelism)로 나누어떨어지지 않으므로 2개의 더미 픽셀이 삽입됩니다. 세 번째 라인에서는 4개의 픽셀이 제거됩니다. 4(새로운 라인 길이)는 4로 나누어떨어지므로 라인이 단순히 짧아지고 더미 픽셀은 삽입되지 않습니다. 6번째 라인은 완전히 제거됩니다. 후속 시뮬레이션에서는 빈 라인으로 취급됩니다.
예제 1: FlushCondition이 EoL로 설정되고 Parallelism이 4로 설정된 경우의 동작 (1로 설정된 픽셀을 제외하고 Rem은 항상 0임)
-------------------------------------------------------------------------------------
예제 2(파라미터 FlushCondition이 EoF로 설정됨):
이 예제에서 FlushCondition은 EoF로 설정되어 있습니다. 연산자는 4의 Parallelism으로 사용되며 그림에 표시된 이미지를 입력받습니다.
예제 2: FlushCondition이 EoF로 설정되고 Parallelism이 4로 설정된 경우의 동작 (1로 설정된 픽셀을 제외하고 Rem은 항상 0임)
![]() |
EoF 모드에서 변경된 최대 이미지 너비 - 이전 디자인 사용 시 주의하세요! |
|---|---|
|
EoF 모드의 최대 이미지 너비가 1개의 Parallelism만큼 더 넓어지도록 수정되었습니다(Parallelism > 1인 경우). 문제를 이해하려면 예제를 참조하십시오. 이로 인해 이전 디자인에서 DRC 오류가 발생할 수 있습니다. 이 추가 너비가 필요하지 않음이 확실한 경우, SetDimension을 사용하여 차원을 최대 입력 너비로 다시 설정할 수 있습니다. |
|
부호 없는 입력의 경우 입력 Bit Width 범위는 [1, 64]입니다. 부호 있는 입력의 경우 범위는 [2, 64]입니다. 부호 없는 컬러 입력의 경우 범위는 [3, 63]이고 부호 있는 컬러의 경우 범위는 [6, 63]입니다. |
동기식 및 비동기식 입력
- 모든 입력은 서로 동기화되어 있습니다. 즉, 임의의 O-type 오퍼레이터 네트워크를 통해 동일한 M-type 오퍼레이터로부터 소스를 공급받아야 합니다.
| FlushCondition | |
|---|---|
| Type | static parameter |
| Default | EoL |
| Range | {EoL, EoF} |
|
이 파라미터는 더미 픽셀의 삽입을 제어합니다. EoL 모드에서는 라인 길이를 Parallelism으로 나누어 떨어지지 않을 경우 라인 끝에 더미 픽셀이 삽입됩니다. EoF 모드에서는 라인의 마지막 픽셀들이 병렬 픽셀 블록을 완성하지 못하는 경우, 이 픽셀들이 다음 출력 라인으로 이동합니다. 따라서 라인은 Parallelism 경계에서 끝나고 초과된 픽셀들은 다음 라인으로 이동합니다. 결과적으로 이 오퍼레이터는 프레임의 마지막 라인이 Parallelism으로 나누어 떨어지지 않는 경우에만 프레임 끝에 더미 픽셀을 생성합니다. 출력 링크 O에서의 프레임 MaxWidth는 입력 링크의 프레임 너비 + 1 Parallelism입니다. VALT_PIXEL0D 이미지 프로토콜을 사용하는 경우 이 파라미터는 비활성화됩니다. VALT_LINE1D 이미지 프로토콜의 경우 EoL만 사용할 수 있습니다.
|
|
RemovePixel 오퍼레이터의 사용법은 다음 예시와 같습니다.
-
예시 - 정의된 형식의 런 길이 인코딩(Run Length Encoding) 예시입니다.
-
'imaFlex CXP-12 Quad 플랫폼의 FrameBufferMultRoi 사용자 라이브러리 요소에 대한 기능 예시'
예제 - 오퍼레이터 사용법 시연

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

이전

