이미지 중앙값 필터링 하기



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
#include <opencv/cv.h>
#include <opencv/highgui.h>
 
 
void main() {
    IplImage *srcImage = cvLoadImage("D:/study/testimage.jpg"-1);
    IplImage *rstImage7x7 = cvCreateImage(cvGetSize(srcImage), IPL_DEPTH_8U, 3);
    IplImage *rstImage13x13 = 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, rstImage7x7, CV_MEDIAN, 7700);    //중앙값 : 마스크 영역의 픽셀값을 오름차순하여 중앙에 있는 값
    cvSmooth(srcImage, rstImage13x13, CV_MEDIAN, 131300);
 
 
 
    //create window
    cvNamedWindow("source image", CV_WINDOW_AUTOSIZE);
    cvNamedWindow("7x7 image", CV_WINDOW_AUTOSIZE);
    cvNamedWindow("13x13 image", CV_WINDOW_AUTOSIZE);
    //show window
    cvShowImage("source image", srcImage);
    cvShowImage("7x7 image", rstImage7x7);
    cvShowImage("13x13 image", rstImage13x13);
 
    cvWaitKey(0);
 
    //release image
    cvReleaseImage(&srcImage);
    cvReleaseImage(&rstImage7x7);
    cvReleaseImage(&rstImage13x13);
}
cs



결과



+ Recent posts