canvas高斯模糊算法
对于模糊图片这个效果的实现,其实css3中的filter属性也能够实现,但是这个属性的兼容性不是很好,所以我们通常不用这种方法实现,而使用canvas配合JS实现。
- <span style="white-space:pre"> </span>//高斯模糊 参数说明:width:canvas对象或者是数据体对象的宽,height:canvas或者是数据体对象的高,
- //radius:模糊取值半径(默认为3),sigma:方差取值(默认为1)
- /**
- * [Gaussian_blur description]
- * @param {[type]} data [description]
- * @param {[type]} width [description]
- * @param {[type]} height [description]
- * @param {[type]} radius [description]
- * @param {[type]} sigma [description]
- */
- function Gaussian_blur(data, width, height, radius, sigma) {
- var gaussMatrix = [],
- gaussSum = 0,
- x, y,
- r, g, b, a,
- i, j, k, len;
- radius = Math.floor(radius) || 3;
- sigma = sigma || radius / 3;
- a = 1 / (Math.sqrt(2 * Math.PI) * sigma);
- b = -1 / (2 * sigma * sigma);
- //生成高斯矩阵
- for (i = 0, x = -radius; x <= radius; x++, i++) {
- g = a * Math.exp(b * x * x);
- gaussMatrix[i] = g;
- gaussSum += g;
- }
- //归一化, 保证高斯矩阵的值在[0,1]之间
- for (i = 0, len = gaussMatrix.length; i < len; i++) {
- gaussMatrix[i] /= gaussSum;
- }
- //x方向
- for (y = 0; y < height; y++) {
- for (x = 0; x < width; x++) {
- r = g = b = a = 0;
- gaussSum = 0;
- for (j = -radius; j <= radius; j++) {
- k = x + j; a=j+row;
- if (k >= 0 && k < width) { //确保 k 没超出 x 的范围
- i = (y * width + k) * 4;
- r += data[i] * gaussMatrix[j + radius];
- g += data[i + 1] * gaussMatrix[j + radius];
- b += data[i + 2] * gaussMatrix[j + radius];
- gaussSum += gaussMatrix[j + radius];
- }
- }
- i = (y * width + x) * 4;
- data[i] = r / gaussSum;
- data[i + 1] = g / gaussSum;
- data[i + 2] = b / gaussSum;
- }
- }
- //y方向
- for (x = 0; x < width; x++) {
- for (y = 0; y < height; y++) {
- r = g = b = a = 0;
- gaussSum = 0;
- for (j = -radius; j <= radius; j++) {
- k = y + j;
- if (k >= 0 && k < height) { //确保 k 没超出 y 的范围
- i = (k * width + x) * 4;
- r += data[i] * gaussMatrix[j + radius];
- g += data[i + 1] * gaussMatrix[j + radius];
- b += data[i + 2] * gaussMatrix[j + radius];
- gaussSum += gaussMatrix[j + radius];
- }
- }
- i = (y * width + x) * 4;
- data[i] = r / gaussSum;
- data[i + 1] = g / gaussSum;
- data[i + 2] = b / gaussSum;
- }
- }
- return data;
- }
canvas高斯模糊算法的更多相关文章
- .net版高斯模糊算法
最近挺多人找高斯算法,本人贴上一个高斯模糊算法类,希望可以帮助到大家.算法的效率还是可以接受的. #region 高斯模糊算法 /// <summary> /// 高斯模糊算法 /// & ...
- 简单的java高斯模糊算法
import java.awt.Color; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOEx ...
- SSE图像算法优化系列二:高斯模糊算法的全面优化过程分享(一)。
这里的高斯模糊采用的是论文<Recursive implementation of the Gaussian filter>里描述的递归算法. 仔细观察和理解上述公式,在forward过程 ...
- 高斯模糊算法的 C++ 实现
2008 年在一个 PS 讨论群里,有网友不解 Photoshop 的高斯模糊中的半径是什么含义,因此当时我写了这篇文章: 对Photoshop高斯模糊滤镜的算法总结: 在那篇文章中,主要讲解了高斯模 ...
- 传统高斯模糊与优化算法(附完整C++代码)
高斯模糊(英语:Gaussian Blur),也叫高斯平滑,是在Adobe Photoshop.GIMP以及Paint.NET等图像处理软件中广泛使用的处理效果,通常用它来减少图像噪声以及降低细节层次 ...
- webgl智慧楼宇发光效果算法系列之高斯模糊
webgl智慧楼宇发光效果算法系列之高斯模糊 如果使用过PS之类的图像处理软件,相信对于模糊滤镜不会陌生,图像处理软件提供了众多的模糊算法.高斯模糊是其中的一种. 在我们的智慧楼宇的项目中,要求对楼宇 ...
- HTML5 实现图像模糊算法
做个广告,WEB/PHP/JQ/HTML5/MYSQL/QQ群6848027 项目中需要用到HTML5模糊图像,以前用GDI,GDI+中都有现成的组件来实现,HTML5中如何实现? createIma ...
- Android高斯模糊
传送门 github地址:http://developer.android.com/guide/topics/renderscript/compute.html: https://github.com ...
- Android开发学习之路-动态高斯模糊怎么做
什么是高斯模糊? 高斯模糊(英语:Gaussian Blur),也叫高斯平滑,是在Adobe Photoshop.GIMP以及Paint.NET等图像处理软件中广泛使用的处理效果,通常用它来减少图像噪 ...
随机推荐
- [转]Qt状态栏(statusbar)的使用
状态栏显示的信息分3种 1. 一般信息,用QLabel 代表 2. 永久信息,文本会一直显示在状态栏的最右边. 3. 临时信息,指定信息现实的时间.时间到即信息消失 QLabel *locationL ...
- python3.6小程序
# 查询类python 3.6 pycharm中运行(唔错) people = { '王飞': { '电话': '2341', '地址': '西方镇忘川村' }, '小瘪三': { '电话': '91 ...
- 在Linux下,如何分析一个程序达到性能瓶颈的原因
0.在Linux下,如何分析一个程序达到性能瓶颈的原因,请分别从CPU.内存.IO.网络的角度判断是谁导致的瓶颈?注意现在的机器CPU是多核 1.用sar -n DEV 1 10 2.用iotop命令 ...
- [10] AOP的注解配置
1.关于配置文件 首先在因为要使用到扫描功能,所以xml的头文件中除了引入bean和aop之外,还要引入context才行: <?xml version="1.0" enco ...
- CF1056E Check Transcription 字符串哈希
传送门 暴力枚举\(0\)的长度,如果对应的\(1\)的长度也是一个整数就去check是否合法.check使用字符串哈希. 复杂度看起来是\(O(st)\)的,但是因为\(01\)两个数中数量较多的至 ...
- kettle学习笔记——插件的安装与使用
一.概述 暂略 二.ODPS插件 https://yq.aliyun.com/articles/68911
- js 稍微判断下浏览器 pc 还是手机
function isMobile() { var a=navigator.userAgent; var ref=/.*(Android|iPhone|SymbianOS|iPad| ...
- 记一次网页超时登录的Bug
前几天,在做全公司的员工测评工作,在一个页面弹出导入页面,并导入所有评价记录,然后关闭掉这个导入页面,最后返回当前页面,返回时刷新当前页面. 在返回的时候,就出现了“页面超时登录”同时返回登录首页的问 ...
- 算法相关——Java排序算法之快速排序(三)
0. 前言 本系列文章将介绍一些常用的排序算法.排序是一个非常常见的应用场景,也是开发岗位面试必问的一道面试题,有人说,如果一个企业招聘开发人员的题目中没有排序算法题,那说明这个企业不是一个" ...
- Zookeeper Windows版的服务安装和管理工具
以前研究过负载均衡,最近正在项目上实施(从来没做过小项目以上级别的东西,哈).然后遇到了多个一模一样但是同时运行的服务.不同服务但依赖同相同的配置数据(前端网页服务:Nginx+IIS+nodejs. ...