背景
某互聯(lián)網(wǎng)公司產(chǎn)品經(jīng)理提了個(gè)需求分苇,要求app做到可以根據(jù)用戶手機(jī)殼顏色來(lái)改變app主題顏色腊满,最后產(chǎn)品經(jīng)理和程序員打了起來(lái)钢拧。
最近這件事刷了屏雄妥,不知道這件事是不是網(wǎng)友故意調(diào)侃最蕾。自古以來(lái)程序員和產(chǎn)品經(jīng)理似乎都是一對(duì)冤家依溯,哈哈,扯遠(yuǎn)了瘟则。想想產(chǎn)品經(jīng)理提的這個(gè)需求也挺奇葩的黎炉。這個(gè)根本沒(méi)法實(shí)現(xiàn)嘛,氣憤中醋拧。慷嗜。
冷靜下來(lái),思考一下丹壕,這個(gè)需求到底能不能實(shí)現(xiàn)呢庆械?我覺(jué)得可以考慮從下面這個(gè)方案入手。
方案
啟動(dòng)前置攝像頭菌赖,根據(jù)拍攝到的用戶眼睛中手機(jī)殼的倒影來(lái)檢測(cè)手機(jī)殼的顏色缭乘。
可行性
要想檢測(cè)用戶眼睛中手機(jī)的倒影,那需要先分析一下前置攝像頭的視力是多少盏袄。我們都知道正常人視力是1.0忿峻,對(duì)應(yīng)的視角是1角分,當(dāng)然也有好眼1.5或2.0辕羽,對(duì)應(yīng)視角是0.7角分和0.5角分逛尚。
我用iPhone 6s距離5米通過(guò)后置攝像頭拍攝視力表,大概可以勉強(qiáng)拍清1.2刁愿,1.2已經(jīng)開(kāi)始模糊绰寞,1.5已經(jīng)變成了小黑點(diǎn)。iPhone6s的后置攝像頭是1200萬(wàn)像素铣口,而前置攝像頭低于這個(gè)像素滤钱。我沒(méi)有使用過(guò)手機(jī)的前置攝像頭拍攝過(guò)視力表,但是可以通過(guò)像素?cái)?shù)來(lái)大體推算一下
iPhone 6s 前置攝像頭是500萬(wàn)像素脑题,對(duì)應(yīng)視力 500/1200 * 1.2 = 0.5
iPhone X 前攝攝像頭是700萬(wàn)像素件缸,對(duì)應(yīng)視力 700/1200 * 1.2 = 0.7
凸面鏡
凸面鏡成像,屬于光學(xué)規(guī)律叔遂。平行光線投射到凸面鏡上他炊,反射的光線將成為散開(kāi)光線,如果順著反射光線的相反方向延伸到凸面鏡鏡面的后面已艰,可會(huì)聚并相交于一點(diǎn)痊末,這一點(diǎn)就是凸面鏡的主焦點(diǎn)(F)。
角膜可以看做是一個(gè)凸面鏡哩掺,角膜的屈光度是43D (數(shù)據(jù)來(lái)自于《眼科學(xué)》)凿叠,那么角膜的焦距是
1 ÷ 43 ≈ 0.0233米,即 2.33厘米,
如果一束平行光通過(guò)角膜反射產(chǎn)生倒影盒件,那么倒影的虛像就在角膜后方的2.33厘米處蹬碧。但是我們看手機(jī),手機(jī)漫反射發(fā)出的光不是平行光履恩,而是散射光锰茉,散射光通過(guò)角膜反射產(chǎn)生的倒影距離角膜光心比平行光要遠(yuǎn)。遠(yuǎn)多少呢切心。我們來(lái)計(jì)算一下飒筑。
假設(shè)我們看手機(jī)的距離是30厘米,這30厘米也是焦距绽昏,產(chǎn)生的屈光度是
1 ÷ 0.3 ≈ 3.3D
這個(gè)屈光度會(huì)抵消掉角膜的屈光度协屡,那么倒影的焦距是
1 ÷ (43-3.3) ≈ 0.0252米,即2.52厘米
倒影的大小是多少呢全谤。
手機(jī)殼基本都是套在手機(jī)上肤晓,正面看只能看到邊框,假設(shè)手機(jī)殼的邊框?qū)挾仁?.5厘米认然,根據(jù)相似三角形可以計(jì)算出补憾,倒影中邊框的寬度是
2.52 ÷ (2.52+30) * 0.5 ≈ 0.0775厘米
你是不是被繞暈了?沒(méi)關(guān)系卷员,你只需要知道0.0775厘米就是距離眼睛30厘米的手機(jī)殼邊框在角膜中倒影的寬度就可以了盈匾。
手機(jī)前置攝像頭要想辨認(rèn)角膜中的手機(jī)殼,那么需要的視角是多少呢毕骡?
我們可以大體看做這是一個(gè)由0.0775厘米和30+2.52厘米作為兩條直角邊形成的直角三角形削饵,這個(gè)最小的銳角就是視角,通過(guò)反三角函數(shù)計(jì)算得出視角是
arcsin(0.0775 ÷ 32.52) ≈ 0.1365445°
轉(zhuǎn)成角分就是 8.193′
這個(gè)視角對(duì)應(yīng)的視力是多少度呢
推算一下
- 視力1.0的視角是1′
- 視力0.1的視角是10′
- 視力2.0的視角是0.5′
可以推算出未巫,在視力1.0視角是1′的基礎(chǔ)上
視角放大幾倍就是視力數(shù)值除以幾
視角縮小幾倍就是視力數(shù)值乘以幾
可以計(jì)算出8.19′的視角對(duì)應(yīng)的視力數(shù)值是 1 ÷ 8.19 ≈ 0.12
手機(jī)前置攝像頭的視力達(dá)到0.12就可以距離眼睛30厘米拍攝到用戶眼睛中手機(jī)殼前邊框?qū)挾炔⒊上駷?像素窿撬。前面推算出前置攝像頭視力為0.5以上,那么可以成像為4像素以上叙凡。
可以推斷出現(xiàn)在流行的手機(jī)基本都可以通過(guò)前攝攝像頭解析到用戶角膜中的手機(jī)殼的倒影劈伴。這只是理論數(shù)據(jù),實(shí)際當(dāng)中可能會(huì)有下面幾個(gè)影響因素:
- 光線太弱導(dǎo)致成像不清楚
- 攝像頭像素達(dá)到了握爷,但是解析能力太差宰啦,導(dǎo)致成像不清楚
- 最主要是,角膜并鏡子饼拍,對(duì)光線的反射能力太差,導(dǎo)致倒影發(fā)虛
但是手機(jī)將圖像數(shù)字化后田炭,可以分析圖像的顏色數(shù)值來(lái)精確判斷师抄,即使一點(diǎn)色差都可以察覺(jué)到,所以這個(gè)或許可以實(shí)現(xiàn)教硫。主要還是看手機(jī)對(duì)圖像的的捕捉和解析能力叨吮。
結(jié)論
通過(guò)分析辆布,這個(gè)需求也并不是完全不可能實(shí)現(xiàn),只是對(duì)技術(shù)以及硬件的要求都很高茶鉴。
聲明
本文為本人原創(chuàng)锋玲,數(shù)據(jù)分析計(jì)算過(guò)程中可能存在錯(cuò)誤。如需轉(zhuǎn)載請(qǐng)注明原文地址涵叮,謝謝~