Operator FIRkernelNxM

Operator Library: Filter

연산자 FIRkernelNxM은 각 픽셀 주변에 인접 픽셀을 포함하는 직사각형 커널 윈도우를 생성합니다. 커널의 크기는 출력 링크를 편집하여 정의할 수 있습니다. N은 커널 행의 수를 나타내고, M은 커널 열의 수를 나타냅니다.

[참고] FIR 필터 없음

이름과 달리 이 연산자는 FIR 필터와는 관련이 없습니다. 필터 입력 데이터를 생성하는 데 사용할 수 있습니다.

커널을 생성하는 다른 연산자로는 LineNeighboursNx1 및 PixelNeighbours1xM이 있습니다.

커널의 중심 요소는 항상 해당 위치의 원본 입력 픽셀을 나타냅니다. 픽셀 인덱스 x와 y, 커널 인덱스 m과 n을 가진 출력 이미지 O는 입력으로부터 다음과 같이 유도됩니다.

호출 및

이미지 가장자리에는 인접한 픽셀이 정의되어 있지 않습니다. 연산자는 EdgeHandling 파라미터를 사용하여 필요한 가장자리 처리 알고리즘을 정의할 수 있습니다.

짝수 크기의 커널에는 중심 픽셀이 없습니다. 이 경우 중심 픽셀은 왼쪽 상단 모서리로 이동하며, 예를 들어 크기가 4x4인 커널의 경우 다음 표에서 볼 수 있듯이 (1,1)에 중심 픽셀이 정의됩니다.

0,0 0,1 0,2 0,3
1,0 1,1 1,2 1,3
2,0 2,1 2,2 2,3
3,0 3,1 3,2 3,3

커널은 행과 열의 수로 설명됩니다. VisualApplets에서 N은 행의 수를 나타내고, M은 열의 수를 나타냅니다. 종종 커널 요소는 좌표 대신 인덱스로 지정됩니다. 이 경우 순서는 다음 표에 표시된 것처럼 행 단위입니다.

0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15

다음 예는 3개의 커널 행과 3개의 커널 열에 대한 결과 구성을 보여줍니다. 묘사된 연산자의 3x3 행렬은 해당 커널의 콘텐츠를 정의하는 상대적 주소 지정 기능을 제공합니다. 출력상의 각 3x3 클러스터는 픽셀당 서로 다른 커널 값을 보여줍니다.

픽셀당 커널 구성 대신, 이 예제에서는 결과 하위 커널(인덱스 0의 첫 번째 커널과 인덱스 8의 마지막 커널)을 보여줍니다.

다음 예는 두 개의 커널 행과 두 개의 커널 열에 대한 결과 구성을 보여줍니다. 상대 주소가 오른쪽에 있거나 아래에 있는 이웃만 참조하므로, 왼쪽이나 상단의 콘텐츠에 대해 가장자리 처리를 수행할 필요가 없습니다.

홀수 및 짝수 커널 크기를 가진 앞의 두 예를 비교해보면 edgeMirroring 모드에서 edgeHandling 기능의 주목할 만한 동작을 확인할 수 있습니다. 짝수 및 홀수 커널 크기 모두 상단 및 왼쪽 테두리에서 edgeMirroring이 동일하게 처리되는 반면, 하단 및 오른쪽에서는 약간 다른 결과가 생성됩니다. 출력 이미지 크기가 크기 때문에 첫 번째(우상단) 및 마지막(우하단) 입력 픽셀과 커널당 결과 값에 대한 결과 구성만 표시됩니다.

홀수 커널 크기에 대한 EdgeMirroring은 데이터가 있는 등거리 영역의 누락된 데이터로 영역을 채웁니다. 테두리는 복제되지 않고 보존됩니다. 짝수 커널 크기의 경우 상단 또는 왼쪽 영역을 채울 때도 동일한 원리가 적용됩니다. 이와 대조적으로 하단 또는 오른쪽 영역을 채우는 경우에는 미러링 중에 테두리가 복제됩니다. 이 역시 짝수 커널 크기에서만 발생합니다.

[팁] 짝수 커널 크기에 대한 EdgeMirroring

짝수 커널 크기의 경우 하단 또는 오른쪽 영역을 채울 때 미러링 중에 테두리가 복제됩니다.

기술적으로 이 연산자는 커널의 필수 픽셀을 병렬로 출력할 수 있을 때까지 대기하고 버퍼링합니다. 따라서 입력에서 필요한 모든 해당 인접 픽셀이 처리된 후에만 픽셀을 출력할 수 있으므로 연산자로 인해 지연이 발생합니다. 라인 지연은 다음과 같습니다.

Operator 제한 사항

  • ImageWidth < 2*Parallelism is not allowed.

  • 빈 이미지, 즉 픽셀이 없는 이미지는 허용되지 않습니다.

  • 빈 라인이나 길이가 다른 라인은 허용되지 않습니다.

I/O Properties

Property Value
Operator Type M
Input Link I, data input
Output Link O, kernel output

Supported Link Format

Link Parameter Input Link I Output Link O
Bit Width any1 as I
Arithmetic {unsigned, signed} as I
Parallelism {1, 2, 4, 8, 16, 32, 64} as I
Kernel Columns 1 any2
Kernel Rows 1 any3
Img Protocol {VALT_IMAGE2D, VALT_LINE1D}4 as I
Color Format any as I
Color Flavor any as I
Max. Img Width any as I
Max. Img Height any as I

1

입력 Bit Width의 범위:

  • 부호 없는 입력의 경우: [1, 64]

  • 부호 있는 입력의 경우: [2, 64]

  • 부호 없는 컬러 입력의 경우: [3, 63]

  • 부호 있는 컬러 입력의 경우: [6, 63].

4

VALT_LINE1D 이미지 프로토콜이 사용되는 경우, 연산자는 M 타입이 아니라 P 타입입니다.

2

OutputKernelColumns <= ImageWidth

3

OutputKernelRows <= ImageHeight

Parameters

EdgeHandling
Type static parameter
Default EdgeMirrored
Range {EdgeMirrored, EdgeConstant}

이미지 가장자리에는 커널을 생성할 이웃이 존재하지 않습니다. 이 경우 연산자는 두 가지 가장자리 처리 모드로 사용할 수 있습니다.

EdgeMirrored 모드에서는 이미지 가장자리에 미러링된 픽셀이 사용됩니다.

EdgeConstant 모드에서는 가장자리의 누락된 커널 요소가 상수로 채워집니다. 이 값은 Constant 파라미터를 사용하여 정의할 수 있습니다.

Constant
Type static parameter
Default 0
Range range of input link I

EdgeHandling 파라미터가 EdgeConstant로 설정된 경우, 이 파라미터는 이미지 경계 외부의 픽셀에 대한 기본값을 정의합니다.

컬러 포맷의 경우, 이 값은 모든 컬러 컴포넌트의 바이너리 표현을 결합한 부호 없는 정수입니다.

사용 예제

FIRkernelNxM 오퍼레이터의 사용법은 다음 예시와 같습니다: