百科问答小站 logo
百科问答小站 font logo



高斯模糊的原理是什么,怎样在界面中实现? 第1页

  

user avatar   xinsuke 网友的相关建议: 
      

高斯模糊,听起来很高大上,其实就是一种很基础的数学算法应用,不要被“高斯”迷惑了双眼,它并没有高斯本人那么深不可测。。

高斯模糊之所以叫高斯模糊,是因为它运用了高斯的正态分布的密度函数,我记得是大二时候学的:

其中,μ是x的均值,σ是x的标准差(评论提醒)。由于每次计算都以当前计算点为原点,所以μ等于0。于是公式进一步简化为:

在图形上,正态分布是一种钟形曲线,越接近中心,取值越大,越远离中心,取值越小。


计算平均值的时候,我们只需要将"中心点"作为原点,其他点按照其在正态曲线上的位置,分配权重,就可以得到一个加权平均值。

而他的二维方程是:


也就是说,把它运用于图像算法中,就会使图像出现模糊的效果:


我从最基础的开始举例子,以一维方程做起,将x,y轴分别进行高斯模糊。

我们假设σ为1.5吧,假设有x轴上三个像素点,中间点为原点:


带入公式后,三个点的值为:

这3个像素的权重总和等于0.80858986,如果只计算这3个点的加权平均,还必须让它们的权重之和等于1,因此上面3个值还要分别除以0.80858986。


那么,这个数字有什么用呢?

我们都知道,每一个像素点,决定它色差的是RGB值,计算加权平均的时候要分别计算;

现在我们把GB设为0,只计算R,我们来假设一个点,R值为27,125,22:


将三个数字乘以加权平均值后,分别为6.8391,61.6725,6.8391

而中心点的R值就变为 6.8391+61.6725+6.8391 = 75.5137 记为75;

变为:


就使像素点相对于旁边两点更加柔和了。


参考地址:
ruanyifeng.com/blog/201

swageroo.com/wordpress/

m.2cto.com/kf/201605/50




  

相关话题

  Android 将来能否实现用 C/C++ 作为开发语言?还是说现在的架构就注定了只适合用 Java? 
  工程上存在那么多不确定情况,为什么计算机不能利用它们产生真随机数,而只能根据逻辑产生伪随机数? 
  Borland 是间什么样的公司 他给我们留下了什么文化遗产? 
  为什么有人可以在屎一样混乱的几千行代码里加功能?不重构能驾驭屎山吗? 
  GitHub 上有什么好的或者有趣的 Shell 项目? 
  为什么下面程序递归计算斐波那契数列java比c++要快? 
  给安卓手机开发u盘驱动,让u盘可以直接连到手机上,可行吗?大概怎么做? 
  程序员如何有效、愉快的使用 GitHub? 
  如何看待JetBrains 遭美国调查? 
  对编程感兴趣的程序员是否都对电路、单片机也怀有浓厚的兴趣? 

前一个讨论
如何看待「不买VPN的程序员没有前途」的看法?
下一个讨论
自动驾驶会不会是个伪需求?





© 2025-01-19 - tinynew.org. All Rights Reserved.
© 2025-01-19 - tinynew.org. 保留所有权利