首页 技术 正文
技术 2022年11月14日
0 收藏 697 点赞 3,579 浏览 2368 个字

平滑处理Smooth之图像预处理算法-OpenCV应用学习笔记三

大清早的我们就来做一个简单有趣的图像处理算法实现,作为对图像处理算法学习的开端吧。之所以有趣就在于笔者把算法处理的各个方式的处理效果拿出来做了对比,给你看到原图和各种处理后的图像你是否能够知道那幅图对应那种算法模式呢?嘻嘻,拭目以待吧

平滑的意义:

图像平滑image smoothing:压制、弱化或消除图像中的细节、突变、边缘和噪声,就是图像平滑化。

图像平滑是对图像作低通滤波,可在空间域或频率域实现。空间域图像平滑方法主要用低通卷积滤波、中值滤波等;频率域图像平滑常用的低通滤波器有低通梯形滤波器、低通高斯滤波器、低通指数滤波器、巴特沃思低通滤波器等。

实现功能:

自动对工程项目目录下的图片lena.jpg进行平滑处理:采用五种平滑算法,分别显示在五个窗口中方便对比查看效果和各自特点。

平滑处理Smooth之图像预处理算法-OpenCV应用学习笔记三

函数精析:

  • cvSmooth(const CvArr* src, CvArr* dst, int smoothtype=CV_GAUSSIAN, int param1=3, int param2=0, double param3=0, doubleparam4=0)

  • src输入图像,dst输出图像,smoothtype平滑方式,param四个参数
  • smoothtype五种:CV_BLUR_NO_SCALE(0),CV_BLUR(1), CV_GAUSSIAN(2) ,CV_MEDIAN (3) ,CV_BILATERAL(4)
  • CV_BLUR_NO_SCALE(0):无缩放比例的线性卷积,利用参1*参2的结构元进行卷积,仅支持单通道图像
  • CV_BLUR(1):先线性卷积后缩放,缩放比例为1/(参1*参2)
  • CV_GAUSSIAN(2) :利用参1*参2的高斯结构元进行高斯滤波
  • CV_MEDIAN (3):利用参1*参2的方形结构元进行中值滤波
  • CV_BILATERAL(4):利用参1*参2的方形结构元进行双边滤波
  • 最有意思的是该函数现在已经显得无力了,完全可以被GaussianBlur(), blur(), medianBlur(),obilateralFilter()取代,从图像平滑效果也可以看出。笔者在这里是开篇从基础引入,算是抛自己的砖啦
  • 附源代码:

#include "stdafx.h"
#include"cv.h"
#include"highgui.h"
void main()
{
IplImage* pImg = cvLoadImage("lena.jpg",); cvNamedWindow("Example4-in");
cvNamedWindow("Example4-out-GAUSSIAN");
cvNamedWindow("Example4-out-CV_BLUR_NO_SCALE");
cvNamedWindow("Example4-out-CV_BLUR");
cvNamedWindow("Example4-out-CV_MEDIAN");
cvNamedWindow("Example4-out-CV_BILATERAL");
cvShowImage("Example4-in",pImg); /* 分配各个图像的结构空间用来存储平滑后的图像 */
IplImage* out1 = cvCreateImage(cvGetSize(pImg),IPL_DEPTH_8U,);
IplImage* out2 = cvCreateImage(cvGetSize(pImg),IPL_DEPTH_8U,);
IplImage* out3 = cvCreateImage(cvGetSize(pImg),IPL_DEPTH_8U,);
IplImage* out4 = cvCreateImage(cvGetSize(pImg),IPL_DEPTH_8U,);
IplImage* out5 = cvCreateImage(cvGetSize(pImg),IPL_DEPTH_8U,); cvSmooth(pImg,out1,CV_GAUSSIAN,,); //平滑处理
cvSmooth(pImg,out2,CV_BLUR_NO_SCALE,,);
cvSmooth(pImg,out3,CV_BLUR,,);
cvSmooth(pImg,out4,CV_MEDIAN,,);
cvSmooth(pImg,out5,CV_BILATERAL,,); cvShowImage("Example4-out-GAUSSIAN",out1);
cvShowImage("Example4-out-CV_BLUR_NO_SCALE",out2);
cvShowImage("Example4-out-CV_BLUR",out3);
cvShowImage("Example4-out-CV_MEDIAN",out4);
cvShowImage("Example4-out-CV_BILATERAL",out5);
cvWaitKey();
cvReleaseImage(&out1);
cvReleaseImage(&out2);
cvReleaseImage(&out3);
cvReleaseImage(&out4);
cvReleaseImage(&out5); cvWaitKey();
cvDestroyWindow("Example4-in");
cvDestroyWindow("Example4-out-GAUSSIAN");
cvDestroyWindow("Example4-out-CV_BLUR_NO_SCALE");
cvDestroyWindow("Example4-out-CV_MEDIAN");
cvDestroyWindow("Example4-out-CV_BILATERAL");
cvDestroyWindow("Example4-out-CV_BLUR");
}
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,497
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,910
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,744
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,498
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,137
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,301