喜闻乐见的磨皮美颜是如何算出来的?

磨皮是很多人喜闻乐见的功能,尤其女人。

那么,手机,或者说计算机,是如何通过计算实现磨皮的呢?

我们首先来看,照片是如何存储在计算机中的。

图像的存储

我们所见的图像,在电脑中实际上是一个数字阵列,即矩阵。

图片有宽度(width)和高度(height),而矩阵有行(row)和列(column),正好一个萝卜一个坑地对应。

举一个通俗的例子。

假设图片分辨率为4×4,那么,图形“/”,可在电脑中表示为16个数:

255在显示器上将被显示为纯白,0为纯黑。

介于0到255之间的,将被显示为不同程度的“灰色”,因此,这图被称为“灰度图”。

为什么是0到255呢?

这是因为,我们使用一个字节,也就是8bit二进制(0000 0000到1111 1111)来存储每个像素点,它可以表示256种不同的灰度。

当然,也有用10bits或12bits或16bits的场景,比如一些医疗成像器械。如果用16bits,可以表示65536种灰颜色,颜色分辨得更精准。

彩色图像由RGB(红、绿、蓝)三色组成,原理一样。

这样一来,对图像的操作,就可以转换成对矩阵的操作,实际上,图像处理软件正是这么做的。

有了图像矩阵,如何进行磨皮的操作呢?

平均与模糊

磨皮,实际上就是将该模糊的区域模糊化,这样就能消除皱纹、痘痘等等细节。

那么,如何将图片模糊?

在生活中,我们可能遇到过这种情况:

称体重时,反复称三四次,再求个平均,以确保秤没问题,是自己真变肥了。

为什么平均呢?

因为,误差会产生“干扰”,会使数据“波动”,“平均”可使数据更“平滑”。

“平滑”,就是图像中的“模糊”。

如果我们将图像矩阵中的每一个点与其周围进行“平均”,那么照片就变平滑了

比如,上面的4×4矩阵:

我们可以将蓝色方框中的像素点与周围的点进行平均:

蓝色点 = (255×7 + 0 + 0) / 9 ≈ 198

然后,我们“从左到右、从上到下”一格一格地移动红色的窗口,将每一点都重新进行平均计算(边缘补零),就会发现:

原本纯白的地方(255),向黑色靠拢了(198);原本纯黑的地方,向白色靠拢了。

黑白的界限不再“泾渭分明”,而变成“逐渐过渡”。

如果我们对这张测试图片进“平滑”操作:

则效果如下:

这样,图片就被模糊了。

又比如,经典的lena图:

平均一下?

非常显然,尖锐的地方,比如帽子上的羽毛,被模糊(平滑)了。

这就是“磨皮”。

当然,这里仅采用了“平权平均”,为了追求更好的效果,实际程序员往往会使用“加权平均”。

至于如何选取合适的“加权系数”,这就是数字图像处理中“卷积与滤波器”的内容,而且,图像不仅能进行平均,还能进行傅里叶变换等其它操作,在此点到为止,不予展开。

科技的日新月异使我们突然意识到:

1. 照片拍得太清晰,并不一定受欢迎,2. 磨皮不仅能用砂纸,还可以用矩阵。

感谢矩阵,

真环保。

版权归属珂学原理,转载请获授权。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181024G0UABO00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券