ก่อนอื่นแอปจะหาหน้าของคุณบนรูปภาพ
ด้วยข้อจำกัดหลายๆอย่าง แอปอาจตรวจไม่พบหน้าของทุกคนในภาพ
ควรหันหน้าตรงเพื่อง่ายต่อการตรวจจับ


เมื่อเจอภาพแล้วหน้าแล้ว จะดึงพื้นที่ประมาณ 10% กลางหน้าออกมา
จะได้จุดสีบริเวณจุดสีฟ้ากลางภาพแบบด้านล่าง
(เป็นภาพจำลองอาจไม่เท่าสัดส่วนที่แอปทำ)


จากนั้นแอปจะเรียกทุก pixel ในบริเวณที่เลือกออกมา
แบ่งสีเป็น แดง เขียว น้ำเงิน จากนั้นแอปจะหาค่าเฉลี่ยของสีแต่ละสี
โดยเอาค่าสีในแต่ละ pixel บวกกันแล้วหารด้วยจำนวนพิกเซลทั้งหมด

จากนั้นแอปหาค่าความขาวผ่านทาง Relative Luminance ดังสมการ

Y = 0.2126 R + 0.7152 G + 0.0722 B 

เมื่อ Y คือ ค่าความสว่าง (Relative Luminance)
R คือค่าเฉลี่ยของ Pixel สีแดง
G คือค่าเฉลี่ยของ Pixel สีเขียว
B คือค่าเฉลี่ยของ Pixel สีน้ำเงิน

จากนั้นหารด้วย 255 แล้วคูณร้อยเพื่อแปลงเป็นเปอร์เซ็นต์
(สี RGB ของคอม มีค่าอยู่ที่ 0 - 255)

เท่านี้เราก็จะได้เลขเปอร์เซ็นต์ความขาวแล้ว

โดยชื่อคำเรียกของสีแต่ละสี ตามการเรียกของ Fitzpatrick  ดังนี้

โดยแยกเป็น 6 สีได้แก่  ขาวซีด,ขาว,ชา,มะกอก,น้ำตาลและดำ

โดย Fitzpatrick ได้แบ่งคำเรียกออกตามสเกลของ Von Luschan
ซึ่งสเกลของ Von Luschan มีดังนี้


โดยเราหา Relative Luminance ที่ต่ำสุดของแต่ละช่วงสีจึงได้ค่าประมาณออกมาว่า

มากกว่า 96% เป็นสีขาวซีด
มากกว่า 92% เป็นสีขาว
มากกว่า  90% เป็นสีชา
มากกว่า 76%  เป็นสีมะกอก
มากกว่า 38% เป็นสีน้ำตาล
ต่ำกว่า 38% เป็นสีดำ


ขออธิบายเพิ่มเติมว่าทำไมใช้ในมือถือแล้วค้าง
หลายๆท่านคงเคยเล่นแอป How-Old แล้วไม่เห็นค้าง
เพราะว่าสถานที่ในการประมวลผลมันต่างกันครับ

How-old นั้นจะส่งรูปไปประมวลผลที่เซิฟเวอร์ของ Azure 
ทำให้อุปกรณ์เพียงรอคำตอบจาก Azure เท่านั้น

แต่ Pure's app จะดึงโค้ดมาประมวลผลที่เครื่องของผู้ใช้
ทำให้เครื่องที่มีความสามารถในการประมวลผลต่ำกระตุกและค้างได้ครับ



ทั้งนี้ผมไม่มีความประสงค์ให้เหยียดสีผิวแต่ประการใด
แอปนี้สร้างขึ้นเพื่อความสนุกเท่านั้น

หากสนใจ สามารถอ่านที่มาของแอปนี้ต่อได้ที่นี่
คัดลอกไปยังคลิปบอร์ดแล้ว