이미지 가우시안 필터링 하기



c++)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <opencv/cv.h>
#include <opencv/highgui.h>
 
 
void main() {
    IplImage *srcImage = cvLoadImage("D:/study/testimage.jpg"-1);
    IplImage *rstImage1 = cvCreateImage(cvGetSize(srcImage), IPL_DEPTH_8U, 3);
    IplImage *rstImage2 = cvCreateImage(cvGetSize(srcImage), IPL_DEPTH_8U, 3);
 
 
 
    //cvSmooth : 이미지 스무딩(=블러링) 함수
    //cvSmooth(원본이미지, 결과이미지, 스무딩 형태, 마스크가로크기, 마스크 세로크기, 가우시안 마스크인 경우 표준편차1, 표준편차2)
    //스무딩 형태
    //CV_BLUR :  단순 블러링(param1 x param2 영역의 평균값을 이용한 블러링)
    //CV_GAUSSIAN : 가우시안 블러링
    //CV_MEDIAN : 중앙값 블러링(param1 x param2 영역의 중앙값을 이용한 블러링)
    cvSmooth(srcImage, rstImage1, CV_GAUSSIAN, 5540);    //마스크 크기가 5x5이며 표준편차가 2인 경우
    cvSmooth(srcImage, rstImage2, CV_GAUSSIAN, 5580);
    //ps. 가우시안 필터링은 표준편차가 클수록 더 흐릿해진다
 
 
 
    //create window
    cvNamedWindow("source image", CV_WINDOW_AUTOSIZE);
    cvNamedWindow("sigma4 image", CV_WINDOW_AUTOSIZE);
    cvNamedWindow("sigma8 image", CV_WINDOW_AUTOSIZE);
    //show window
    cvShowImage("source image", srcImage);
    cvShowImage("sigma4 image", rstImage1);
    cvShowImage("sigma8 image", rstImage2);
 
    cvWaitKey(0);
 
    //release image
    cvReleaseImage(&srcImage);
    cvReleaseImage(&rstImage1);
    cvReleaseImage(&rstImage2);
}
cs



결과




+ Recent posts