IT/- 프로그래밍

OpenCV 이미지 샤프닝(세세한 부분을 강조) 하기

혁준7519 2017. 4. 20. 07:19

이미지 샤프닝(세세한 부분을 강조) 하기



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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <opencv/cv.h>
#include <opencv/highgui.h>
 
 
void main() {
    IplImage *srcImage = cvLoadImage("D:/study/blurimage.jpg"-1);
    IplImage *rstImage1 = cvCreateImage(cvGetSize(srcImage), IPL_DEPTH_8U, 3);
    IplImage *rstImage2 = cvCreateImage(cvGetSize(srcImage), IPL_DEPTH_8U, 3);
    IplImage *rstImage3 = cvCreateImage(cvGetSize(srcImage), IPL_DEPTH_8U, 3);
 
 
    //영상 샤프닝 : 영상의 세세한 부분을 더욱 강조하여 흐려서 판독이 잘 안되는 영상을 더욱 선명하게 하는것
    //샤프닝 마스크의 모든 계수의 합은 1이다
    double mask1[3][3= { 
        {1-21}, 
        { -25-2 }, 
        { 1-21 } };
    double mask2[3][3= { 
        { 0-10 },
        { -15-1 },
        { 0-10 } };
    double mask3[3][3= { 
        { -1-1-1 },
        { -19-1 },
        { -1-1-1 } };
 
 
    //cvMat(행의수, 열의수, 행렬원소의 형태, 데이터) : 행렬생성
    //행렬원소의 형태 : CV_<비트수>(S|U|F)C<채널수>
    CvMat kernel1 = cvMat(33, CV_64FC1, mask1);
    CvMat kernel2 = cvMat(33, CV_64FC1, mask2);
    CvMat kernel3 = cvMat(33, CV_64FC1, mask3);
 
    //cvFilter2D(원본 이미지, 결과 이미지, 마스크 행렬) : 사용자 정의한 마스크로 이미지 컨벌루션
    //ps. 마스크 행렬 데이터들은 1채널 실수형이어야 한다
    cvFilter2D(srcImage, rstImage1, &kernel1);
    cvFilter2D(srcImage, rstImage2, &kernel2);
    cvFilter2D(srcImage, rstImage3, &kernel3);
 
 
 
    //create window
    cvNamedWindow("source image", CV_WINDOW_AUTOSIZE);
    cvNamedWindow("sharp1 image", CV_WINDOW_AUTOSIZE);
    cvNamedWindow("sharp2 image", CV_WINDOW_AUTOSIZE);
    cvNamedWindow("sharp3 image", CV_WINDOW_AUTOSIZE);
    //show window
    cvShowImage("source image", srcImage);
    cvShowImage("sharp1 image", rstImage1);
    cvShowImage("sharp2 image", rstImage2);
    cvShowImage("sharp3 image", rstImage3);
 
    cvWaitKey(0);
 
    //release image
    cvReleaseImage(&srcImage);
    cvReleaseImage(&rstImage1);
    cvReleaseImage(&rstImage2);
    cvReleaseImage(&rstImage3);
}
cs



결과