Bilateral Filter Grid
1 개요
채널 별 Grid Cell 구조를 적용하여 이미지 경계를 보존하며 노이즈를 감소시키는 알고리즘
2 알고리즘 상세 설명
| Source Image | Destination Image |
|---|---|
![]() |
![]() |
Fig. Source and Destination images of Bilateral Filter Grid.
해당 알고리즘은 채널에 대해 개별적으로 수행됩니다.
픽셀을 Grid 복셀 구조체에 삽입한 후, 마스킹된 5x5x5 가우시안 가중평균을 적용하여 구조체 상에서 평활화 합니다. 이후 3차원 선형 보간을 통해 삽입했던 채널 값 위치의 평활화 된 값을 얻는 알고리즘 입니다.
| Source Image |
|---|
![]() |
Fig. The Bilateral Grid Structure.
이미지 채널 값 경계인 경우, 두 픽셀은 Grid 복셀 구조체 상에서 물리적으로 떨어져 있기에 가우시안 가중평균에 의한 영향이 감소함을 활용하여 이미지 경계가 보존됩니다.
해당 알고리즘은 복셀이 적절히 Sparse 한 경우에만 경계가 보존되므로, 적절한 파라미터 설정이 요구됩니다. 과도하게 Sparse 한 경우 복셀간 거리가 멀어 가우시안 가중평균이 서로 간에 수행되지 않아 노이즈 감소 효과가 줄어들며, 반대의 경우에는 노이즈와 경계 모두 흐릿해집니다.
3 파라미터 설정 및 사용 방법
그리드 규격 설정
const CResult SetSamplingRateSpatial(uint64_t u64SamplingRateSpatial)
그리드의 xy 도메인 한변 길이인 Sampling Rate Spatial 값을 설정합니다.
이미지의 가로 세로 길이가 해당 값의 배수로 표현되지 않는 경우 오른쪽 및 아래 부분의 그리드 들은 할당된 픽셀 수가 작을 수 있습니다.
예를 들어 이 값이 16인 경우, 기본적으로 16x16 영역의 픽셀이 하나의 그리드에 속하게 됩니다.u64SamplingRateSpatial: Sampling Rate Spatial 값
Default: 16, [1, max(width, height)], [unit: px]
const CResult SetSamplingRateRange(double f64SamplingRateRange)
그리드의 range 도메인의 intensity 비율인 Sampling Rate Range 값을 설정합니다.
타입의 최댓값, 최솟값을 기준으로 한 복셀당 차지하는 비율을 의미합니다.
Floating 타입인 경우, 최댓값과 최솟값을 측정하여 해당 값을 사용합니다.
예를 들어 이 값이 0.1 인 경우, range 도메인 방향으로 그리드 당 10 개의 복셀이 생성됩니다.f64SamplingRateRange: Sampling Rate Range 값
Default: 0.1, [0.0, 1.0], [unit: 1]
이미지 경계 패딩 방식 설정
const CResult SetPaddingMethod(EPaddingMethod ePaddingMethod)
이미지 경계 근방의 패딩 영역을 채우는 방식을 설정합니다.ePaddingMethod: 패딩 방식
EPaddingMethod_Interpolation : 패딩 영역을 가장 가까운 내부 영역 색상으로 채웁니다.
EPaddingMethod_Constant : 설정된 패딩 값으로 패딩 영역을 채웁니다.
EPaddingMethod_DecreasingKernel : 패딩을 사용하지 않고 연산을 통해 채웁니다.
Default: EPaddingMethod_DecreasingKernel
const CResult SetPaddingValue(const Base::CMultiVar<double>& mvPaddingValue)
패딩 방식이 Constant 인 경우 패딩 영역에 채워질 값을 설정합니다.mvPaddingValue: 패딩 값
4 예제 코드
CBilateralFilterGrid bilateralFilterGrid;
CFLImage fliSourceImage;
CFLImage fliDestinationImage;
bilateralFilterGrid.SetSourceImage(fliSourceImage);
bilateralFilterGrid.SetDestinationImage(fliDestinationImage);
bilateralFilterGrid.SetSamplingRateSpatial(16);
bilateralFilterGrid.SetSamplingRateRange(0.1);
bilateralFilterGrid.SetPaddingMethod(EPaddingMethod_DecreasingKernel);
bilateralFilterGrid.Execute();
5 기타 사항
Supported Feature
- Image
- Source Image
- Destination Image
- ROI
- Source ROI
- Destination ROI
- Pivot
- Source Pivot
- Destination Pivot
- Padding
- Blank Color
- Figure Transform
- Batch Processing
Supported Format
- Source
- Channel
- 1-10
- Combined, Separated
- Value Type & Depth
- Signed: 8, 9-16, 32
- Unsigned: 8, 9-16, 32
- Floating: 32, 64
- Channel
- Destination
- Channel
- Source 와 일치하는 경우 지원
- Value Type & Depth
- Destination 이미지가 있을 때, Source 와 일치하는 경우 지원
- Destination 이미지를 생성하는 경우, Source 추종
- Channel


