zoukankan      html  css  js  c++  java
  • 【练习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过滤器平滑,平滑影响的像素数及每个像素的像素值都接近。

  • 相关阅读:
    Matlab 将RGB 图像转换成YCrCb图像
    dotnet中文字符工具类
    dotnet验证参数
    dotnet + LinQ 按照指定的字段 和 排序方式排序
    Angulaur导入其他位置的样式
    Angular4.x跨域请求
    Spring Cloud微服务实战:手把手带你整合eureka&zuul&feign&hystrix
    关于JVM加载class文件和类的初始化
    JVM垃圾回收机制概述
    深入理解JVM
  • 原文地址:https://www.cnblogs.com/tingshuixuan2012/p/4433434.html
Copyright © 2011-2022 走看看