【练习5.2】使用中心为255的图片对比高斯滤波器的平滑效果

《学习OpenCV》中文版第5章第2题

提纲
题目要求
程序代码
结果图片

 

 

 

 

题目要求:

建立一个100×100的单通道图像,将图像全部像素置零,然后设置中心像素值等于255.

c、对原图用5×5过滤器平滑两次,与用9×9过滤器的结果对比,看是否相似,为什么

 

程序代码:

 1 // OpenCVExerciseTesting.cpp : 定义控制台应用程序的入口点。
 2 //
 3 //D:\\Work\\Work_Programming\\Source\\Image\\lena.jpg
 4 
 5 
 6 #include "stdafx.h"
 7 #include <cv.h>
 8 #include <highgui.h>
 9 #include <iostream>
10 using namespace cv;
11 using namespace std;
12 //函数声明-->--->-->--->-->--->-->--->//
13 
14 
15 
16 //<--<--<--<--<--<--<--<--<--函数声明//
17 
18 int _tmain(int argc, _TCHAR* argv[])
19 {
20     IplImage * img = cvCreateImage(cvSize(100, 100), IPL_DEPTH_8U, 1);
21     assert(img);
22     cvZero(img);
23     cvSetReal2D(img, 49, 49, 255);
24 
25     cvNamedWindow("ExerciseWindow", 0);
26     cvNamedWindow("高斯模糊5×5", 0);
27     cvNamedWindow("高斯模糊9×9", 0);
28     cvNamedWindow("高斯模糊5×5两次", 0);
29 
30     cvShowImage("ExerciseWindow", img);
31 
32 
33     //---------------------------a:开始--------------------------------//
34 
35     IplImage * image_Gauss = cvCloneImage(img);
36     cvZero(image_Gauss);
37 
38     cvSmooth(img, image_Gauss, CV_GAUSSIAN, 5, 5);
39 
40     cvShowImage("高斯模糊5×5", image_Gauss);
41 
42     //---------------------------a:结束--------------------------------//    
43 
44 
45     //---------------------------b:开始--------------------------------//
46 
47     IplImage * image_Gauss_9 = cvCloneImage(img);
48     cvZero(image_Gauss_9);
49 
50     cvSmooth(img, image_Gauss_9, CV_GAUSSIAN, 9, 9);
51 
52     cvShowImage("高斯模糊9×9", image_Gauss_9);
53 
54     //---------------------------b:结束--------------------------------//    
55 
56     //---------------------------c:开始--------------------------------//
57 
58     //5×5针对原图两次
59     IplImage * image_Gauss_5_2 = cvCloneImage(img);
60     cvZero(image_Gauss_5_2);
61 
62     cvSmooth(img, image_Gauss_5_2, CV_GAUSSIAN, 5, 5);
63     cvSmooth(image_Gauss_5_2, image_Gauss_5_2, CV_GAUSSIAN, 5, 5);
64 
65     cvShowImage("高斯模糊5×5两次", image_Gauss_5_2);
66 
67 
68     //---------------------------c:结束--------------------------------//    
69 
70 
71     cvWaitKey(0);
72 
73     cvReleaseImage(&img);
74     cvReleaseImage(&image_Gauss);
75     cvReleaseImage(&image_Gauss_9);
76     cvReleaseImage(&image_Gauss_5_2);
77 
78     cvDestroyWindow("ExerciseWindow");
79     cvDestroyWindow("高斯模糊5×5");
80     cvDestroyWindow("高斯模糊9×9");
81     cvDestroyWindow("高斯模糊5×5两次");
82 
83     return 0;
84 }

 

 

局部放大截图

 

用5×5过滤器平滑两次,与用9×9过滤器平滑,平滑影响的像素数及每个像素的像素值都接近。

posted on 2015-04-16 22:02  毋忆典藏  阅读(398)  评论(0编辑  收藏  举报