공간적 필터링 기법은 각각의 목적에 따라 적절한 커널(kernel) 혹은 필터(filter)를 정의하고 원본 영상과 컨벌루션(convolution) 연산을 수행하는 것이 일반적이다.
컨벌루션 연산은 입력 영상의 픽셀 밝기 값을 커널의 동일한 위치에 해당하는 픽셀값과 곱하고 모든 값들을 더한값으로 대체하는 방법이다.
- 평균 필터링(Mean Filtering)
- 중간값 필터링(Median Filtering)
- 가우시안 필터링(Gaussian Filtering)
- 보존 스무딩(Conservative Smoothing)
- 언샤프 필터링(Unsharp Filtering)
중간값 필터링
중간값 필터링은 입력 영상의 현재 픽셀을 중심으로 커널을 씌우고, 커널 안에 포함된 주변 픽셀들을 밝기값 기준으로 정렬하여 중간에 위치한 값으로 대체하는 기법이다.
중간값 필터링은 비선형 필터로 평균 필터에서처럼 컨벌루션 연산에 의해 새로운 값을 생성하는 것이 아니라, 기존에 있는 주변 픽셀의 밝기값을 그대로 이용함으로써 영상의 선명도가 유지된다는 장점이 있다. 그러나 중간값을 계산하기 위하여 주변 픽셀들을 밝기값을 기준으로 정렬하는 추가연산이 필요한 단점이 있다.
medianBlur
cv2.medianBlur(src, ksize, dst=None) -> dst
src : 입력 영상. 각 채널 별로 처리됨
ksize : 커널 크기. 1보다 큰 홀수를 지정. 숫자 하나를 집어주면 됌
dst : 출력 영상, src와 같은 크기, 같은 타입
medianBlur로 구현한 중간값 필터링 소스 코드
평균 필터링 처럼 잡음을 효과적으로 감소시키지 못하고 있지만 새로운 픽셀 값을 생성하는 평균 필터링과 달리 중간값 필터링은 주변의 픽셀 값 중 하나를 이용함으로 화질 저하가 거의 없이 잡음 픽셀이 제거된 것을 알 수 있다.
중간값 필터는 에지와 경계선과 같은 영상의 고주파 성분을 잘 보존하면서 잡음 제거할 수 있다는 장점이 있는 반면 주변 픽셀 값들 중에서 중간값을 찾기 위한 추가적인 정렬 과정을 필요하다.
퀵 정렬(quick sort)과 같이 빠른 정렬 알고리즘을 이용하더라도 추가적인 연산과 시간을 필요로 하는 단점이 있다.
'영상처리 프로그래밍 > 파이썬과 코랩 기반 OpenCV 영상처리' 카테고리의 다른 글
영상의 공간적 필터링 기법 - 보존 스무딩(Conservative Smoothing) (0) | 2022.08.11 |
---|---|
영상의 공간적 필터링 기법 - 가우시안 필터링(Gaussian Filtering) (0) | 2022.08.07 |
영상의 공간적 필터링 기법 - 평균 필터링(Mean Filtering) (0) | 2022.08.05 |
영상의 화질 향상 기법-히스토그램 스트레칭(Histogram Stretching), 히스토그램 평활화(Histogram Equalization) (0) | 2022.08.04 |
영상의 화질 향상 기법-적응적 임계값 적용하기(Adaptive Thresholding) (0) | 2022.07.27 |