最近微信上的那个给红包让看图片的小功能真的是异常火爆啊,我也忍不住去弄了一波,昨晚在看博客的时候发现有大牛发了一个相关的原理解释,我看完之后,赶紧自己记录学习一下。
让我们来回顾下微信上的这个小功能的操作:在没点击前,图像是一种模糊状态,然后点击给红包之后,那么就可以看到真正的图片了。从整个过程来看,无疑最主要的就是这个图像的模糊操作了,具体可以使图像模糊的方法很多,这里主要讲讲原理:
我们都知道,彩色图像是一个三通道的RGB图像,R,G,B分别有0-255这么一个取值区间,现在我们仅仅就一个通道进行说明,可以进行类推。
我们来看看图像模糊是什么一个概念,首先,图像中的像素每一个都有自己的像素值,这些像素值决定了图像最终的显示。来想象一幅模糊的图,是不是感觉越模糊,这些像素点之间的差别就越小呢?确实是这样,这也是图像模糊的原理,也就是一种像素的平滑化,通过对图像中的像素值进行平均处理,让这些像素值越来越来接近,来达到一种人尽量无法辨识出这些像素点的差别,从来产生模糊的效果。
原理就是如此,从原理上,我们还可以得到一个启示,那就是对于取均值的半径大小越大,那么整个模糊效果也就越好,很好理解,因为取的范围越大,意味着相似的像素点越多,达到的模糊效果也就越好了。
那么具体有什么方法去取均值呢?
最简单的方法就是直接取所需处理像素值的周边半径内平均来作为它自身的像素信息,对图像内所有像素点都可以这么处理,另外边界点需要另外找处理方法。
还可以采取正态分布取权值的做法来取平均值,因为实际上围绕一个特定的像素点,离它越远,和它的相似度就越低,对它们处理的权重也应该越低,而正态分布恰好是一个山型函数可以围绕着这一个特定的像素点取半径进行处理。
然而实际情况下,正态分布虽说有理有据,但是效率不是很高,所以可以取多次周边平均的方法来增加模糊效果。当然针对正态分布本身也可以进行优化,方法很多,我也只是大概了解了一下,有兴趣及需求的朋友可以自行去深入学习。