영상을 흐릿하고 부드럽게 만드는 필터링 기법을 블러링(Blurring)이라고 합니다. 인접 픽셀간의 픽셀값 차이를 줄이는 여러 가지 방법으로 영상을 부드럽게 표현합니다.
OpenCV에서 영상을 블러링하는 함수 3개를 사용한 예제 코드와 실행 결과는 아래와 같습니다. 블러링 함수 3개는 각각 평균값 필터, 가우시안 필터, 중간값 필터를 사용한 필터링 함수입니다.
예제 코드
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat img = imread("lena512.bmp", IMREAD_GRAYSCALE);
if (img.empty())
{
cerr << "failed to read image" << endl;
}
imshow("img", img);
// blurring (mean)
Mat blur_mean;
blur(img, blur_mean, Size(5, 5));
imshow("blur_mean", blur_mean);
// Gaussian blurring - 표준편차를 1로 설정
Mat blur_gaussian;
GaussianBlur(img, blur_gaussian, Size(5, 5), 1);
imshow("blur_gaussian", blur_gaussian);
// Median blurring
Mat blur_median;
medianBlur(img, blur_median, 5);
imshow("blur_median", blur_median);
waitKey(0);
destroyAllWindows();
return 0;
}
실행 결과
첫번째 영상이 원본이고, 나머지는 블러링된 영상입니다. 각 영상마다 조금씩 다른 특징을 보입니다.