void filter2D(InputArray src, OutputArray dst,
int ddepth, InputArray kernel,
Point anchor=Point(-1,-1), double delta=0,
int borderType=BORDER_DEFAULT);
src
: 입력 영상dst
: 출력 영상ddepth
: 원하는 결과 영상의 깊이를 지정. -1이면 src와 같은 깊이를 사용Input depth (src.depth()) | Output depth (ddepth) |
---|---|
CV_8U | -1 / CV_16S / CV_32F / CV_64F |
CV_16U / CV_16S | -1 / CV_32F / CV_64F |
CV_32F | -1 / CV_32F / CV_64F |
CV_64F | -1 / CV_64F |
kernel
: 필터 마스크 행렬. 1채널 실수형.anchor
: 고정점 위치. (-1,-1)이면 필터 중앙을 고정점으로 사용.delta
: (optional) 추가적으로 더할 값borderType
: 가장자리 픽셀 처리 방법
void blur(InputArray src, OutputArray dst, Size ksize,
Point anchor=Point(-1,-1), int borderType=BORDER_DEFAULT);
src
: 입력 영상dst
: 출력 영상ksize
: 평균값 필터 크기anchor
: 고정점borderType
: 가장자리 픽셀 확장 방식
void GaussianBlur(InputArray src, OutputArray dst, Size ksize,
double sigmaX, double sigmaY=0,
int borderType=BORDER_DEFAULT);
src
: 입력 영상. 각 채널 별로 처리됨. (CV_8U, CV_16U, CV_16S, CV_32F, CV_64F)dst
: 출력 영상. src와 같은 크기, 같은 타입ksize
: 가우시안 필터 크기. Size()를 지정하면 sigma 값에 의해 자동 결정됨.sigmaX
: x 방향으로의 표준편차 sigma, 값이 크면 많이 blurring, 값이 작으면 적게 blurring 됨sigmaY
: y 방향으로의 표준편차 sigma. 0이면 sigmaX와 같게 설정.borderType
: 가장자리 픽셀 확장 방식
1) : original signal
2) : blurred signal
3)
4)
Mat src = imread("rose.bmp", IMREAD_GRAYSCALE);
// src = {0,0,0,0,1,0,0,0,0};
Mat blr;
blur(src, blr, Size(3,3));
// src = {1/9,1/9,1/9,1/9,1/9,1/9,1/9,1/9,1/9};
Mat dst = 2 * src - blr;
// {0,0,0,0,2,0,0,0,0} - {1/9,1/9,1/9,1/9,1/9,1/9,1/9,1/9,1/9};
int main(void)
{
Mat src = imread("rose.bmp", IMREAD_GRAYSCALE);
Mat blr;
GaussianBlur(src, blr, Size(3,3));
Mat dst = 2 * src - blr;
}
따라서,
void randn(InputOutputArray dst, InputArray mean, InputArray stddev);
dst
: 정상 분포 난수 행렬, dst
는 미리 생성되어 있어야 하며, 1~4 채널을 가질 수 있음mean
: 평균stddev
: 표준편차dst
타입에 맞게 자동 변환됨dst
가 uchar
자료형을 사용하면 0보다 작은 난수는 모두 0으로 설정됨randu()
함수를 사용int main(void)
{
Mat src = imread("rose.bmp", IMREAD_GRAYSCALE);
// src type = CV_32S == signed int
Mat noise(src.size(), CV_32S);
randn(noise, 0, 10);
Mat dst;
// dst type = CV_8U 로 변환
add(src, noise, dst, noArray(), CV_8U);
...
}
void bilateralFilter(InputOutputArray src, OutputArray dst,
int d, double sigmaColor, double sigmaSpace,
int borderType=BORDER_DEFAULT);
src
: 입력 영상. 8비트 또는 실수형, 1채널 또는 3채널dst
: 출력 영상. src와 같은 크기, 같은 타입d
: 필터링에 사용될 이웃 픽셀의 거리(지름). 음수(-1)를 입력할 경우 sigmaSpace 값에 의해 자동 결정됨sigmaColor
: 색 공간에서 필터의 표준 편차, 픽셀 값 차이가 얼마 이하일 때만 블러링을 하고 픽셀 값 차이가 얼마 이상일 때는 블러링을 수행하지 않음sigmaSpace
: 좌표 공간에서 필터의 표준 편차, 가우시안 블러에서의 시그마 값과 비슷한 개념borderType
: 가장자리 픽셀 확장 방식