前言

  平滑是图像处理中很重要的操作,其主要用途是降噪。Open CV 提供了 5 种不同的平滑方法:简单模糊,简单无缩放变换的模糊,中值模糊,高斯模糊和双边滤波,它们都通过函数 cvSmooth 实现。

  关于几种平滑的具体实现步骤及相关基础知识,本文不做讲解( 网上很多相关资料 ),仅就调用封装好了的平滑函数进行介绍,且仅具体介绍简单平滑处理,其它的平滑方式类似。

平滑函数 cvSmooth()

  函数原型:

 void cvSmooth (
const CvArr *src,
CvArr * dst,
int smoothtype = CV_GAUSSIAN,
int param1 = ,
int param2 = ,
int param3 = ,
int param4 =
);

  下面结合几种具体的平滑操作进行演示,不论何种平滑,第一个参数都是目标处理图像,第二个参数是处理后的图像,不同的平滑方法后面的几个参数的设定规则不同。

简单模糊

  smoothtype 类型设定为 CV_BLUR,param1 和 param2 为均值求解领域的范围( 核 )大小,后两个参数用不上。下面的程序对图像实现核为 3x3 的均值平滑:

 // 此头文件包含图像IO函数的声明
#include "highgui.h"
// 此头文件包含基本的图像处理函数和高级计算机视觉算法
#include "cv.h" int main (void) { // 将D盘目录下名为" 1.jpg "的图像加载至内存并获得一个指向该图像内存块的指针img
IplImage * img = cvLoadImage ("D:\\1.jpg"); // 创建一个窗口显示平滑处理前的图像
cvNamedWindow ("平滑前", CV_WINDOW_AUTOSIZE); // 将图像装载进窗口并显示此窗口
cvShowImage ("平滑前", img); // 创建一个新的图像内存块,以存放平滑结果。
IplImage * out = cvCreateImage (
cvGetSize (img),
img->depth,
img->nChannels
); // 平滑处理函数。
cvSmooth (
img, // 待处理图像
out, // 处理后图像
CV_GAUSSIAN, // 平滑类型
, // 核大小( 行 )
// 核大小( 列 )
); // 创建一个窗口显示平滑处理后的图像
cvNamedWindow ("平滑后", CV_WINDOW_AUTOSIZE); // 将图像装载进窗口并显示此窗口
cvShowImage ("平滑后", out); // 该函数的参数为 0 时,程序将等待用户触发一个按键操作。
// 若参数为正整数,则程序将暂停该整数个毫秒单位直至用户有任何按键。
cvWaitKey (); // 释放图像内存块
cvReleaseImage (&img);
cvReleaseImage (&out); // 关闭窗口同时释放窗口内存块
cvDestroyWindow ("平滑前");
cvDestroyWindow ("平滑后"); return ;
}

  运行程序: 

  

其它模糊

  当 cvSmooth 的 smoothtype 字段为其它值时,将进行不同类型的平滑处理,而 param1-4 则根据模糊方式的不同赋予不同实参。具体调用规范请参阅相关资料。

说明

  平滑对目标处理图像,结果图像的格式以及是否支持 in place 等都有相关规定,具体使用时请参阅函数手册。

平滑处理 - cvSmooth() 函数实现的更多相关文章

  1. OpenCV学习 5:关于平滑滤波器 cvSmooth()函数

    原创文章,欢迎转载,转载请注明出处 本节主要了解下cvSmooth函数的一些参数对结果的影响.从opencv tutorial中可以看到这样一段话: 像我这样的数学渣,还是看下图来得形象: 高斯滤波器 ...

  2. cvSmooth函数 和 OpenCV自带的人脸检测

    记录cvSmooth函数的用法和 OpenCV自带的人脸检测. (1)cvSmooth函数 void cvSmooth( const CvArr* src, CvArr* dst,int smooth ...

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

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

  4. 《zw版·delphi与halcon系列原创教程》zw版_THOperatorSetX控件函数列表 v11中文增强版

    <zw版·delphi与halcon系列原创教程>zw版_THOperatorSetX控件函数列表v11中文增强版 Halcon虽然庞大,光HALCONXLib_TLB.pas文件,源码就 ...

  5. Unity3D Mathf函数

    Mathf.Abs绝对值 计算并返回指定参数 f 绝对值. Mathf.Acos反余弦 static function Acos (f : float) : float 以弧度为单位计算并返回参数 f ...

  6. 日常之学习CSS3变形和js函数指针

    1,transform变形属性,包括rotate(xxdeg)旋转,translate(x轴px,y轴px)移动,scale(0.5,2)变形(x轴缩小0.5倍,y轴放大2倍),skew(x轴deg, ...

  7. OpenCV平滑处理示例代码

    #include<cv.h> #include<highgui.h> int main(int argc, char** argv) { IplImage* img = cvL ...

  8. Unity3D中Mathf数学运算函数总结

    引入: 看到一个案例注意到函数Mathf.SmoothDamp的使用,游戏中用于做相机的缓冲跟踪和boss直升机跟踪士兵.该函数是Unity3D中Mathf数学运算函数中的一个.一些游戏使用了smoo ...

  9. opencv车道线检测

    opencv车道线检测 完成的功能 图像裁剪:通过设定图像ROI区域,拷贝图像获得裁剪图像 反透视变换:用的是老师给的视频,没有对应的变换矩阵.所以建立二维坐标,通过四点映射的方法计算矩阵,进行反透视 ...

随机推荐

  1. 浮点优化选项 -ffast-math:极大地提高浮点运算速度【转】

    转自:http://blog.csdn.net/zjujoe/article/details/2604157 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 关于浮点优化选项摘 ...

  2. macro expand error

    cat test_macro.c #define TEST_MACRO(b) chip->##b int main(void) { TEST_MACRO(yyy) return 0; } gcc ...

  3. Linux 6.x 下Oracle 11g R2 安装配置

    Oracle 11g R2 数据库安装硬件配置要求: 最小内存 1 GB of RAM 虚拟内存容量,这个oracle也有要求,不用担心此时的swap分区不够oracle的要求 .虚拟内存swap如何 ...

  4. Android Timer 的 schedule()方法定时循环切换图片

    void java.util.Timer.schedule(TimerTask task, long delay, long period)第一个参数,是 TimerTask 类,在包:import ...

  5. 前端js、jQuery实现日期格式化、字符串格式化

    1. js仿后台的字符串的StringFormat方法 在做前端页面时候,经常会对字符串进行拼接处理,但是直接使用字符串拼接,不但影响阅读,而且影响执行效率,且jQuery有没有定义字符串的Strin ...

  6. CF917C Pollywog —— 状压DP + 矩乘优化

    C. Pollywog 题目描述 原题题目链接.题目大意为:有$x$只蝌蚪,在$n$个石头中的最左端的$x$个石头上,这$n$个石头是在同一直线上的.每一次只能最左边的一个蝌蚪进行跳跃,并且只能跳$1 ...

  7. NOI模拟题6 Problem C: Circle

    Solution 首先这个矩阵, 很明显的就是Vandermonde矩阵. 我们有公式: \[ |F_n| = \prod_{1 \le j < i \le n} (a_i - a_j) \] ...

  8. IntelliJ IDEA安装MongoDB的的数据操作插件

    说明:只能说效果一般,没有Robo 3T那么好用. 参考: https://intellij-support.jetbrains.com/hc/en-us/community/posts/206635 ...

  9. 快速建立ssh互信(转)

    转自:魏巍的Linux酒吧 - 51CTO技术博客(http://weiweilinux.blog.51cto.com/3349074/1048212) 快速建立ssh互信 因为工作中经常需要配置服务 ...

  10. Jsp2.0自定义标签(第三天)——EL表达式的使用

    1.提出问题: 我们经常会看到这样的jsp页面代码: 浏览器显示: 为什么会在页面输出:Hello World  ,${per}究竟是如何找到“Hello World”的呢? 2.分析问题: 要想解决 ...