이미지 블러링(image blurring)
:: Image Blurring은 LPF를 이미지에 적용하여 얻을 수 있다. 고주파영역을 제거함으로써 노이즈를 제거하거나 경계선을 흐리게 하는 것이 목적.
(LPF, HPF는 이전 글을 보면 설명이 되어있다.)
OpenCV에는 4가지 형태의 blurring 방법을 제공하고 있다.
1. Averaging
:: Box 형태의 커널을 이미지에 적용한 후 평균값을 box의 중심점에 적용
2. Median Filtering
:: 커널 윈도우와 픽셀의 값들을 정렬한 후에 중간값을 선택하여 적용
점 잡음(점처럼 찍힌 노이즈)을 제거하는데 효과적
3. Gaussian Filtering
:: Gaussian 함수를 이용한 커널을 적용
이미지의 전체적으로 밀도가 동일한 노이즈 , 백색노이즈를 제거하는데 가장 효과적
4. Bilateral Filtering
:: 양방향필터는 경계선을 유지하면서 Gaussian Blur 처리
Gaussian 필터를 적용하고 , 또 하나의 Gaussian 필터를 주변 픽셀까지 고려하여 적용하는 방식
경계면을 지키며 표면의 질감 등을 제거하는데 효과적
1. 평균 블러
:: 균일한 값을 가지는 커널을 이용한 이미지 필터링. 커널 영역내의 평균값으로 해당 픽셀을 대체
OpenCV에선 blur 함수로 구현되어 있다.
blur(src, ksize)
- src: 원본 이미지
- ksize: 커널 크기 (1보다 큰 홀수)
2. 중앙값 블러
:: 평균이 아닌 중앙값으로 해당 픽셀을 대체.
kernel window와 pixel의 값들을 정렬한 후에 중간값을 선택하여 적용한다. 점 모양의 잡음을 제거하는 데 효과적이다.
OpenCV에서는 medianBlur 함수를 사용한다.
medianBlur(src, ksize)
- src: 원본 이미지
- ksize: 커널 크기 (1보다 큰 홀수)
3. 가우시안 블러
:: box filter는 동일한 값으로 구성된 kernel을 사용하지만, Gaussian Filter는 Gaussian함수를 이용한 Kernel을 적용
즉, kernel 행렬의 값을 Gaussian 함수를 통해서 수학적으로 생성하여 적용
OpenCV에서는 GaussianBlur로 구현되어 있다.
GaussianBlur(src, ksize, sigmaX)
- src: 원본 이미지
- ksize: 커널 크기(양수이면서 홀수)
- sigmaX: 표준편차
4. 양방향 필터링
:: 가우시안 필터링을 쓰면 이미지의 경계선도 흐려진다는 문제점이 있다. 따라서 경계선을 유지하면서 Gaussian 블러처리를 하는 것이 필요하다.
Gaussian 필터를 적용하고, 또 하나의 Gaussian 필터를 주변 pixel까지 고려하여 적용하는 방식이다.
OpenCV에서는 bilateralFilter 함수로 구현되어 있다.
bilateralFilter(src, d, sigmaColor, sigmaSpace)
- src: 원본 이미지
- d: 커널 크기
- sigmaColor: 색공간 표준편차. 값이 크면 색이 많이 달라도 픽셀들이 서로 영향을 미친다.
- sigmaSpace: 거리공간 표준편차. 값이 크면 멀리 떨어져있는 픽셀들이 서로 영향을 미친다.
참고 사이트
https://opencv-python.readthedocs.io/en/latest/doc/11.imageSmoothing/imageSmoothing.html
'Project > Image Handling' 카테고리의 다른 글
이미지 필터링 (2) | 2021.06.03 |
---|---|
이미지 임계처리 (0) | 2021.06.02 |
이미지 처리 (0) | 2021.06.01 |