年龄计算器,如何算出20年后的你?
近来,有一个名为年龄计算器的网站在网友中流传,它能预测一个人20年后的相貌。打开http://in20years.com,点击Upload Your Photo(上传照片)按钮上传你(或朋友)的脸部照片,就可以看到20后的模样了(见图1)。
看起来有些神奇,它究意是基于什么样的原理来计算的呢?其实随着人的年龄增长,一些生理体征就会产生变化。比如,毛孔变得粗大,出现眼袋,法令纹变得明显,肤色变黑等等。而所谓的年龄计算器,就是首先在人物照片的脸部找出相应位置,然后添加上对应的生理特征。比如添加法令纹,程序首先找出鼻翼两侧和嘴角的位置,再在这两点之间勾画出沟状灰线即可。
小知识
★为什么有些人看起来要比实际的年龄大很多?其实正是这些生理体征捣的鬼。你不妨对照下表计算一下,是哪些体征让你显老。
生理体征 年龄增减(岁)
毛孔粗大 +3
法令纹下垂 +7
鱼尾纹 +5
眼袋 +3
牙龈萎缩 +10
指甲厚黄 +5
手背青筋暴露 +7
首先要解决的是定位问题,这通过人脸识别技术即可办到。它的原理说起来相当简单,主要是通过颜色的相似程度来判断,比如黑色的眼睛、红色的嘴唇,很容易被识别出来。大家知道,图片的每个像素是由RGB三色混合而成,通过对像素的颜色值进行计算就能判断出是什么色彩(比如#ffff00和#fff100都是近似黄色)。
图2:图片是由像素构成,像素颜色由RGB三色混合
程序中的人脸识别,涉及到计算机图形学中一些非常复杂的计算,不过程序员们倒不用太担心,开源程序库OpenCV(Open Computer Vision,http://sourceforge.net/projects/opencvlibrary)提供了很多功能,调用即可。
通过人脸识别确定位置之后就好办了,对脸部特定区域的像素进行处理,比如将脸部皮肤变黑,眼睛下面添加眼袋,鼻翼两侧和嘴角之间添加法令纹等。其实除了程序自动运算,我们手工也能达成这样的效果。如图3所示,就是我在Photoshop中,仿照in20years网站的效果,手工制作的:通过加深工具(快捷键为O),将皮肤变黑,再勾画出眼袋、法令纹等,是不是一下子老了20岁?只不过这个工作,在in20years网站中是由程序自动完成罢了。
网终大补贴
具体的程序实现原理,不是一两篇文章能讲清的。想进一步了解的朋友,可以参看更多的相关文献。下面推荐一部分。
★利用OpenCV实现人脸检测:
网址:http://tinyurl.com/2cg36cp
★基于OpenCV的人脸检测算法研究:
网址:http://tinyurl.com/29kr2b5
★VC编程实现数字图像的边缘检测
网址:http://www.docin.com/p-32588863.html
★肤色模型的面部肤色区域提取
网址:http://tinyurl.com/26qqecm
小趣闻:另类的秃头计算器
秃头计算器,可以预测男士变成秃头的具体年龄(或者确定他们到老仍会头发浓密)。这个德国科学家首创的,据称能准确预测男性会否脱发的计算机程序,使得全球各国的男士趋之若鹜。
打开http://www.alpecin.com/en/balding-calculator/index.php,点击Start(开始),然后根据向导提示回答使用者的年龄、每天掉发情况、现时发线位置(见图4)、职业、心理压力等10个问题,最后计算出你秃头的时间。当然,诚如该软件作者所说:秃头计算器的主要目的,还是为了提醒男同胞对秃头问题引起注意。