高斯模糊之canvas实现

本文介绍了如何使用canvas在H5中实现高斯模糊效果,包括二维正态分布的概念、模糊半径的处理以及权重计算,同时强调了边界点处理和权重分配的修正。通过获取图像像素信息、计算权重并遍历像素点进行模糊处理,最终实现高斯模糊功能。
摘要由CSDN通过智能技术生成

依然是这位美女
在这里插入图片描述

接着来高斯模糊一下
在这里插入图片描述

模糊一下更具有朦胧美,还有小磨皮效果,痘痘马上无影踪,一键体验摘下近视镜的快感.好了,就扯这么多.下面来看看怎么实现高斯模糊.
高斯模糊的模糊感是参照每个像素点周边的像素来进行按权运算,而不是随便掺杂个五颜六色到像素里.正如刚说的,按权来取得周边的值,这里的按权是依据二维正态分布来分权的.得到权重值后我们就可以计算出当前像素点模糊后的r,g,b值了.

这里要注意的是:

1.模糊的半径就是指周边的像素点范围

2.进行模糊处理时要留意边界点的问题(可以用周边的点去代替不存在的点).

既然要用到二维正态分布(很多参数的公式),计算周边点,以及权重计算,我们先封装前面几个函数。

二维正态分布

二维正态分布是一个二维的概率模型,这个是它的原公式。具体可查阅相关资料
在这里插入图片描述

GaussianDistribution(x, y, o1, o2, u1 = 0, u2 = 0, p = 0) {
   
  if (arguments.length < 4) {
   
    throw "参数长度至少4个!";
  } else {
   
    for (let i = 0; i < arguments.length; i++) {
   
      if (typeof arguments[i] !== "number") {
   
        throw "请确保参数类型为数字!";
      }
    }
  }
  return (
    (1 / (2 * Math.PI * o1 * o2 * Math.sqrt(1 - Math.pow(p, 2)))) *
    Math.exp(
      (-1 / (2 * (1 - Math.pow(p, 2)))) *
        (Math.pow(x - u1, 2) / Math.pow(o1, 2) -
          ((2 * p * (x - u1) * (y - u2)) 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值