双边滤波是一种可以保留边缘的滤波器同高斯滤波不同的是,双边滤波不尽可以达到预期的模糊效果,而且可以保留边缘,而美术上水彩画的特点是颜色水润,平滑,考色彩的差异来突出边缘,通过与双边滤波器的特点相比较,选用其来进行水彩风格化也就不意外了。 由于不同的图片特征不同,所以处理时滤波的次数也就不同,因此为了达到预期的效果,所以通过用户交互来决定滤波次数,从而决定最终的处理结果。 开源的opencv开发包里面的函数cvSmooth()提供了双边滤波的算法,本文将直接采用,全部代码如下文所示,所用到的库由opencv提供。 代码:

/*
* 独在异乡为异客,每逢佳节倍思亲
*///所需要的库
#pragma comment(lib, "opencv_imgproc220d.lib")
#pragma comment(lib, "opencv_highgui220d.lib")
#pragma comment(lib, "opencv_core220d.lib")#include "cv.h"
#include "highgui.h"#include <algorithm>IplImage *pImg;
IplImage *src, *dst;
IplImage *tempImg;  //保存上次的处理结果int tempPos = 0;    //保存上次的位置//工具条
void track_bar(int pos)
{int p;if (pos >= tempPos)p = pos - tempPos;else{src = cvCloneImage(pImg);p = 0;}tempPos = pos;
//  printf("%d\n", pos);for (int i = p; i < pos; i++){cvSmooth(src, dst, CV_BILATERAL, 7, 7, 35, 9);        //参数三越大,越接近高斯滤波swap(src, dst);}//    cvSaveImage("m.jpg", src);cvShowImage("src", src);cvWaitKey(0);
}int main( int argc, char** argv )
{if (argv[1]){pImg = cvLoadImage(argv[1]);}elsepImg = cvLoadImage("hehua.jpg");dst = cvCloneImage(pImg);src = cvCloneImage(pImg);int *pos = new int;cvNamedWindow("src", 1);cvCreateTrackbar("trackbar", "src", pos, 20, track_bar);cvShowImage("pImg", pImg);cvShowImage("src", src);cvWaitKey(0);
}

原图如下: [caption id="attachment_36" align="aligncenter" width="496" caption="srcImage"][/caption] 处理后的图像: [caption id="attachment_38" align="aligncenter" width="500" caption="dstImage"][/caption]

转载于:https://www.cnblogs.com/zyqhi/archive/2011/09/10/2591770.html

双边滤波产生水彩画风格相关推荐

  1. UnityShader-BilateralFilter(双边滤波,磨皮滤镜)

    前言 最近趁着Steam打折入了好多个游戏,昨天刚刚通关了一个<Ruiner>的游戏. 游戏类似<孤胆枪手>,但是加入了很多技能元素和动作元素,加上游戏本身的卡通渲染+赛博朋克 ...

  2. c语言双边滤波算法,快速双边滤波 附完整C代码

    很早之前写过<双边滤波算法的简易实现bilateralFilter>. 当时学习参考的代码来自cuda的样例. 相关代码可以参阅: https://github.com/johng12/c ...

  3. 《OpenCV3编程入门》学习笔记6 图像处理(二)非线性滤波:中值滤波、双边滤波

    第6章 图像处理 6.2 非线性滤波:中值滤波.双边滤波 6.2.1 非线性滤波 很多情况下,使用领域像素的非线性滤波会得到更好的效果,如在噪声是散粒噪声而不是高斯噪声,即图像偶尔会出现很大值时,高斯 ...

  4. 双边滤波算法的简易实现bilateralFilter

    没怎么看过双边滤波的具体思路,动手写一写,看看能不能突破一下. 最后,感觉算法还是要分开 水平 与 垂直 方向进行分别处理,才能把速度提上去. 没耐性写下去了,发上来,给大伙做个参考好了. 先上几张效 ...

  5. (13)中值滤波和双边滤波

    其实中值滤波,就是那九个数值,进行排序,选择中间的数值来代替那九个数的中间位置的值,然后再从左到右,从上到下,这样移动运算 ====================================== ...

  6. matlab 双边沿滤波,图片漫画效果(DoG算子和双边滤波)

    对比下面两张图(从 http://hi.baidu.com/cwyalpha/blog/item/647745a9f33570f61e17a235.html 里翻出来的..),漫画有3个特点: 1.边 ...

  7. Bilateral Filtering(双边滤波) for SSAO(转)

    原文链接:http://blog.csdn.net/bugrunner/article/details/7170471 另外一篇相似的英文资料:http://homepages.inf.ed.ac.u ...

  8. 双边滤波+ 通俗自己理解

    原文:https://blog.csdn.net/qq_36359022/article/details/80198890 原文有图 还有一种解释:https://blog.csdn.net/chen ...

  9. 双边滤波JAVA代码实现

    双边滤波JAVA代码实现 [plain] view plaincopy package test; /** *  A simple and important case of bilateral fi ...

最新文章

  1. 魔法一样隔空在屏幕写字,捏起手指就能实现!在线可玩
  2. java观察者设计模式
  3. 怎么用c语言画出坐标曲线,c语言打印贝塞尔曲线坐标(三阶)
  4. 03-JDBC学习手册:JDBC中几个重要接口和异常处理
  5. 用async 解放你的大脑
  6. Maven入门学习,安装及创建项目
  7. php 转发邮件,PHP Email();我不接收转发的电子邮件
  8. Java 多线程(六)——进程间通信与线程间通信
  9. VS2017设置C++标准
  10. GIMP 教程:如何在 GIMP 中创建曲线文本
  11. 山东济南ISO9001认证|ISO14001认证|ISO45001认证|ISO三体系认证的流程
  12. centos安装7zip
  13. c++双向列表释放_SAIL-C-R-T4-A1-V0-B1温度控制仪-老友网
  14. perforce p4v linux,Perforce p4v下载
  15. 【CH376】关于CH376的一些使用总结
  16. 友盟推送的接入和遇到问题
  17. Android bugreport工具分析和使用
  18. java 垃圾回收题目_Java垃圾收集题目分析
  19. 10进制、16进制(十进制、十六进制)与ASCII码流互转
  20. 跨境电商亚马逊测评:2021就要过去了!别人都在努力!你还在等天上掉馅饼?

热门文章

  1. 网盘天天被群嘲,为什么还是有人用,原因竟然是这个!
  2. 《情绪障碍跨诊断治疗的统一方案自助手册》读书摘录
  3. SketchUp:解决修改不同模型背景天空颜色的问题图文教程
  4. 泛微OA 修改网站标题logo及标题文字
  5. 软件产品登记证书和软著区别 软件产品登记证书怎么申请
  6. 中国金属采矿行业前景调研及发展战略深度研究报告2022-2028年
  7. Linux的网桥中的STP的实现分析初步
  8. VS上位机开发——曲线显示
  9. 安徽一家4A级景区被撤销,为申报4A曾给官员送钱送黄金
  10. 我们的2010,我们的2011