Blur

블러링(Blurring) 또는 스무딩(Smoothing)이라고 하는 작업은 자주 사용되는 이미지 프로세싱으로 화면을 부드럽게 하거나, 노이즈를 제거하고, 이미지의 해상도를 줄이려는 경우에도 사용된다.(이미지 피라미드)

OpenCV에서는 블러링에 관련된 다양한 함수를 제공한다.

평균값 필터(Mean Filter)

평균값 필터란 입력 이미지의 각 픽셀에 대해 마스크를 적용하고 마스크 범위내의 픽셀들의 단순 평균을 구해서 출력 이미지의 각 픽셀값으로 저장하는 작업을 말한다. OpenCV에서는  blur() 또는 boxFilter()함수에 의해 수행된다. 

blur(Mat src, Mat dst, Size ksize)
src : 입력 영상
dst : 출력 영상
ksize : 평균값 필터 크기

3*3으로 정규화된 박스 필터는 다음과 같다.

1/9, 1/9, 1/9, 
1/9, 1/9, 1/9, 
1/9, 1/9, 1/9

정규화 된 필터를 사용하기 싫다면 boxFilter() 함수를 사용하고 normalize = false를 전달한다.

안드로이드 예제코드는 다음과 같다.

private val kernelSize = 5.0
override fun process(src: Mat): Mat {
    val dst = Mat()
    Imgproc.blur(src, dst, Size(kernelSize, kernelSize))
    return dst
}

원본

블러가 적용된 이미지

이전에 filter2D를 이용해 블러링을 구현했던 것과 같은 방식이다.

Buy me a coffeeBuy me a coffee
카테고리: AndroidOpenCV

0개의 댓글

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.