人脸关键点参考手册
版本: 3.0
状态: 生效中
最后更新: 2026-07-08
维护者: RD Agent
历史合并说明:本文档由以下 3 份文档合并而成:MEDIAPIPE_468_REFERENCE.md、MEDIAPIPE_468_TO_106_MAPPING_STRATEGY.md、VOLCANO_106_POINTS.md。内容已合并为单一人脸关键点参考手册,交叉引用 docs/07-STANDARDS/COORDINATE_SYSTEM.md。
1. 概述
本文档整合了两套主流人脸关键点标准:
- MediaPipe Face Mesh:468 个 3D 人脸关键点,用于实时人脸网格检测。
- 火山引擎 106 点标准:与商汤/Face++ 106 点标准一致,是行业通用的人脸关键点检测规范,也是 PicMe 美颜/滤镜管线的内部标准。
本文档同时提供 MediaPipe 468 → 火山 106 的映射策略,供 MediaPipe468Adapter.kt 与 FaceLandmarkOverlay.kt 参考实现。
坐标系说明:MediaPipe 与火山引擎均返回归一化坐标(0-1),原点(0,0)在左上角,x轴向右,y轴向下。前置摄像头需要水平镜像(x = 1 - x)。详见 docs/07-STANDARDS/COORDINATE_SYSTEM.md。
2. 火山引擎 106 点标准
2.1 拓扑结构
轮廓(0-32,共33点)
开放曲线:从右脸鬓角(画面左侧)开始,经过下巴,到左脸鬓角(画面右侧)结束。
| 0-16 |
右轮廓(画面左侧,从右上到下巴右) |
共17点 |
| 0 |
右鬓角/太阳穴 |
轮廓起点(画面左侧) |
| 1-7 |
右脸颊 |
从上到下 |
| 8-15 |
右下颌到下巴右侧 |
|
| 16 |
下巴中心 |
下巴最低点 |
| 17-32 |
左轮廓(画面右侧,从下巴左到左上) |
共16点 |
| 17-25 |
下巴左侧到左下颌 |
|
| 26-31 |
左脸颊 |
从下到上 |
| 32 |
左鬓角/太阳穴 |
轮廓终点(画面右侧) |
眉毛(33-42, 64-71,共18点)
上部眉毛(33-42)
| 33-37 |
右眉上部(画面左侧) |
从眉头到眉尾,5点 |
| 33 |
右眉头 |
靠近鼻梁 |
| 34-36 |
右眉腰 |
|
| 37 |
右眉尾 |
靠近太阳穴 |
| 38-42 |
左眉上部(画面右侧) |
从眉头到眉尾,5点 |
| 38 |
左眉头 |
靠近鼻梁 |
| 39-41 |
左眉腰 |
|
| 42 |
左眉尾 |
靠近太阳穴 |
| 43 |
眉心 |
两眉之间中心 |
下部眉毛(64-71)
| 64-67 |
右眉下部(画面左侧) |
从眉头到眉尾,4点 |
| 68-71 |
左眉下部(画面右侧) |
从眉尾到眉头,4点 |
鼻子(44-51, 78-83,共12点)
鼻梁(44-46)
| 44 |
鼻梁上/山根 |
两眼之间鼻梁起点 |
| 45 |
鼻梁中 |
鼻梁中段 |
| 46 |
鼻梁下 |
鼻梁底部 |
鼻尖(47-51)
| 47 |
左外 |
275 |
画面左侧,鼻尖左侧外部 |
| 48 |
左内 |
48 |
画面左侧,鼻尖左侧内部 |
| 49 |
鼻尖中心 |
4 |
鼻子最突出点 |
| 50 |
右内 |
51 |
画面右侧,鼻尖右侧内部 |
| 51 |
右外 |
357 |
画面右侧,鼻尖右侧外部 |
对称性:47(275)↔︎51(357)关于鼻尖中心对称,48(48)↔︎50(51)关于鼻尖中心对称。
山根/鼻梁底部(78-79)
| 78 |
山根右 |
193 |
画面左侧,眉心43(168)左侧下方点 |
| 79 |
山根左 |
419 |
画面右侧,眉心43(168)右侧下方点 |
对称性:78(193)↔︎79(419) 关于眉心168对称。 验证:基于 face001_landmarks.png 标注,193/419 位于山根两侧,比 281/49 更准确。
鼻孔(80-83)
| 80 |
右鼻孔左 |
画面左侧 |
| 81 |
右鼻孔右 |
鼻中隔右侧 |
| 82 |
左鼻孔左 |
鼻中隔左侧 |
| 83 |
左鼻孔右 |
画面右侧 |
眼睛(52-77,共26点)
右眼(52-57,画面左侧)
| 52 |
右眼外角 |
362 |
上眼睑起点,靠近太阳穴 |
| 53 |
右眼上眼睑外 |
363 |
上眼睑外侧,不含眼角 |
| 54 |
右眼上眼睑中 |
367 |
上眼睑中心位置 |
| 55 |
右眼上眼睑内 |
370 |
上眼睑内侧,不含眼角 |
| 56 |
右眼内角 |
463 |
上眼睑终点/下眼睑起点,靠近鼻梁 |
| 57 |
右眼下眼睑内 |
372 |
下眼睑内侧,靠近内角 |
左眼(58-63,画面右侧)
| 58 |
左眼外角 |
33 |
上眼睑起点,靠近太阳穴 |
| 59 |
左眼上眼睑外 |
35 |
上眼睑外侧,不含眼角 |
| 60 |
左眼上眼睑中 |
38 |
上眼睑中心位置 |
| 61 |
左眼上眼睑内 |
41 |
上眼睑内侧,不含眼角 |
| 62 |
左眼内角 |
133 |
上眼睑终点/下眼睑起点,靠近鼻梁 |
| 63 |
左眼下眼睑内 |
43 |
下眼睑内侧,靠近内角 |
注意:眼周每眼8点轮廓 = 外角(52/58) + 上眼睑3点(53-55/59-61) + 内角(56/62) + 下眼睑内角(57/63)。上眼睑3点沿外轮廓均匀分布不含眼角。 对称性:左右眼严格对称,53(363)↔︎55(370)关于眼睛中心对称,59(35)↔︎61(41)关于眼睛中心对称。 MediaPipe路径:右眼外轮廓 362→363→364→365→366→367→368→369→370→371→463→372→373→374→375;左眼外轮廓 33→34→35→36→37→38→39→40→41→42→133→43→44→45→46。
右眼补充(72-74,画面左侧)
| 72 |
右眼下眼睑中 |
374 |
下眼睑中心位置 |
| 73 |
右眼下眼睑外 |
375 |
下眼睑外侧,靠近外角 |
| 74 |
右瞳孔 |
473 |
瞳孔中心(478点模式) |
左眼补充(75-77,画面右侧)
| 75 |
左眼下眼睑中 |
44 |
下眼睑中心位置 |
| 76 |
左眼下眼睑外 |
45 |
下眼睑外侧,靠近外角 |
| 77 |
左瞳孔 |
468 |
瞳孔中心(478点模式) |
注意:下眼睑3点(不含内角)为 72-74(右眼) / 75-77(左眼)。下眼睑内角在57/63位置,与72-74/75-77组成完整下眼睑轮廓。 对称性:72(374)↔︎75(44) 下眼睑中对称,73(375)↔︎76(45) 下眼睑外对称,74(473)↔︎77(468) 瞳孔对称。
嘴巴(84-103,共20点)
嘴巴外轮廓(84-95,共12点)
| 84 |
左嘴角 |
61 |
外唇起点(画面左侧) |
| 85 |
上唇左2 |
40 |
上唇外轮廓左部,距唇珠2步 |
| 86 |
上唇左1 |
37 |
上唇外轮廓左中部,距唇珠1步 |
| 87 |
唇珠/上唇中心 |
0 |
上唇最顶端中心点 |
| 88 |
上唇右1 |
267 |
上唇外轮廓右中部,距唇珠1步 |
| 89 |
上唇右2 |
270 |
上唇外轮廓右部,距唇珠2步 |
| 90 |
右嘴角 |
291 |
外唇终点(画面右侧) |
| 91 |
下唇右外 |
321 |
下唇外轮廓最右侧,距中心3步 |
| 92 |
下唇右内 |
314 |
下唇外轮廓右内侧,距中心1步 |
| 93 |
下唇中间对称点 |
17 |
下唇最底端中心点 |
| 94 |
下唇左内 |
84 |
下唇外轮廓左内侧,距中心1步 |
| 95 |
下唇左外 |
91 |
下唇外轮廓最左侧,距中心3步 |
注意:外轮廓拓扑顺序为顺时针闭合曲线:84(左嘴角) → 85→86→87→88→89(上唇从左到右) → 90(右嘴角) → 91→92→93→94→95(下唇从右到左) → 84。 对称性: - 87为唇珠/上唇中心(MediaPipe 0),位于上唇最顶端 - 93为下唇中间对称点(MediaPipe 17),位于下唇最底端 - 86(37)与88(267)关于唇珠(87)对称 - 85(40)与89(270)关于唇珠(87)对称 - 92(314)与94(84)关于下唇中心(93)对称,距中心1步 - 91(321)与95(91)关于下唇中心(93)对称,距中心3步
嘴巴内轮廓(96-103,共8点)
| 96 |
左内角 |
78 |
内唇起点(画面左侧) |
| 97 |
上唇内左1 |
81 |
上唇内侧左部,距中心2步 |
| 98 |
上唇内侧对称点 |
13 |
上唇内侧中心位置 |
| 99 |
上唇内右1 |
311 |
上唇内侧右部,距中心2步 |
| 100 |
右内角 |
308 |
内唇终点(画面右侧) |
| 101 |
下唇内右1 |
178 |
下唇内侧右部,距中心2步 |
| 102 |
下唇内侧对称点 |
14 |
下唇内侧中心位置 |
| 103 |
下唇内左1 |
402 |
下唇内侧左部,距中心2步 |
注意:内轮廓拓扑顺序为顺时针闭合曲线:96(左内角) → 97..99(上唇内侧从左到右) → 100(右内角) → 101..103(下唇内侧从右到左) → 96。 对称性: - 98为上唇内侧对称点(MediaPipe 13),97(81)与99(311)关于98对称,距中心2步 - 102为下唇内侧对称点(MediaPipe 14),101(178)与103(402)关于102对称,距中心2步
瞳孔(104-105,共2点)
| 104 |
右瞳孔 |
画面左侧,与74位置接近 |
| 105 |
左瞳孔 |
画面右侧,与77位置接近 |
2.2 火山 106 点完整映射表
非轮廓区域 33-105(73点)
| 33-37 |
70, 63, 105, 66, 107 |
右眉上部 |
画面左侧=实际右脸,从眉头到眉尾 |
| 38-42 |
336, 296, 334, 293, 300 |
左眉上部 |
画面右侧=实际左脸,从眉头到眉尾 |
| 43 |
168 |
眉心 |
两眉之间中点 |
| 44-46 |
197, 5, 4 |
鼻梁 |
从上到下(鼻根→鼻梁中→鼻尖上) |
| 47-51 |
98, 241, 2, 461, 327 |
鼻尖 |
从左到右,严格对称 |
| 52-57 |
226, 30, 56, 133, 26, 110 |
右眼外轮廓 |
画面左侧=实际右脸,顺时针 |
| 58-63 |
362, 286, 260, 446, 339, 256 |
左眼外轮廓 |
画面右侧=实际左脸,顺时针 |
| 64-67 |
53, 52, 65, 55 |
右眉下部 |
画面左侧=实际右脸,从眉头到眉尾 |
| 68-71 |
285, 295, 282, 283 |
左眉下部 |
画面右侧=实际左脸,从眉尾到眉头 |
| 72-74 |
27, 23, 473 |
右眼内/下 |
74=右瞳孔 |
| 75-77 |
257, 253, 468 |
左眼内/下 |
77=左瞳孔 |
| 78-79 |
193, 417 |
山根 |
193↔︎417 关于 168 对称 |
| 80-83 |
198, 420, 49, 279 |
鼻孔 |
左右鼻孔轮廓 |
| 84-95 |
61, 40, 37, 0, 267, 270, 291, 321, 314, 17, 84, 91 |
嘴巴外轮廓 |
顺时针闭合曲线 |
| 96-103 |
78, 81, 13, 311, 308, 178, 14, 402 |
嘴巴内轮廓 |
顺时针闭合曲线 |
| 104-105 |
473, 468 |
瞳孔 |
104=右瞳孔(同74), 105=左瞳孔(同77) |
2.3 火山 106 点注意事项
- 镜像说明:本文档中的”左/右”是基于被摄者真实面部(前置摄像头镜像后)。画面左侧=实际右脸,画面右侧=实际左脸。
- 轮廓方向:轮廓 0-32 为开放曲线,从右脸鬓角(索引0,画面左侧)开始,经过下巴(索引16),到左脸鬓角(索引32,画面右侧)结束。
- 瞳孔位置:104/105 与 74/77 位置接近,用于需要瞳孔中心点的场景。
- 对称性:左右脸关键点应保持对称分布,映射时需确保左右对称性。
3.1 关键点区域分布
| 左眼 |
71 |
上眼睑、下眼睑、眼角 |
| 右眼 |
71 |
上眼睑、下眼睑、眼角 |
| 嘴巴 |
40 |
上唇、下唇、嘴角 |
| 鼻子 |
52 |
鼻梁、鼻尖、鼻翼、鼻孔 |
| 眉毛 |
40 |
左眉20点,右眉20点 |
| 脸部轮廓 |
122 |
额头、脸颊、下巴、耳朵 |
| 脸部内部 |
72 |
脸部中心区域 |
| 总计 |
468 |
|
3.2 对称规则说明
MediaPipe Face Mesh 的面部关键点关于面部中轴线(垂直中心线)对称。
- 左侧点:位于画面左侧(被摄者右脸)
- 右侧点:位于画面右侧(被摄者左脸)
- 中心点:位于面部中轴线上,无对称点
对称规律:大多数对称对满足 左侧索引 + 右侧索引 ≈ 500,但存在例外。
3.3 脸部轮廓(FACE_OVAL,0-35,共36点)
MediaPipe 的 FACE_OVAL 区域包含36个点,形成闭合曲线(含额头),与106点开放轮廓不同。
语义定义
| 0 |
下巴中心 |
下巴最低点 |
| 1-7 |
左下颌 |
从下巴到左耳下 |
| 8-23 |
左脸颊到额头 |
左侧轮廓 |
| 24-35 |
额头到右脸颊 |
右侧轮廓(闭合) |
与106点对应关系: - 106点轮廓为开放曲线(33点),不包含额头 - 需要选取 MediaPipe 中不含额头的轮廓点
轮廓对称关系
| 7 |
左下颌 |
397 |
右下颌 |
|
| 8 |
左脸颊下 |
396 |
右脸颊下 |
|
| 9 |
左脸颊中 |
395 |
右脸颊中 |
|
| 10 |
左脸颊上 |
394 |
右脸颊上 |
|
| 11 |
左耳前 |
393 |
右耳前 |
|
| 12 |
左耳下 |
392 |
右耳下 |
|
| 13 |
左鬓角 |
391 |
右鬓角 |
|
| 14 |
左太阳穴 |
390 |
右太阳穴 |
|
| 15 |
左额侧 |
389 |
右额侧 |
|
| 16 |
左额头 |
388 |
右额头 |
|
| 17 |
左额中 |
387 |
右额中 |
|
| 18 |
左额上 |
386 |
右额上 |
|
| 19 |
左额顶 |
385 |
右额顶 |
|
| 20 |
左发际线 |
384 |
右发际线 |
|
| 21 |
左发际中 |
383 |
右发际中 |
|
| 22 |
左发际上 |
382 |
右发际上 |
|
| 23 |
左头顶 |
381 |
右头顶 |
|
| 24 |
头顶中左 |
380 |
头顶中右 |
|
| 25 |
头顶左 |
379 |
头顶右 |
|
| 26 |
头顶后左 |
378 |
头顶后右 |
|
| 27 |
后脑左 |
377 |
右脑右 |
|
| 28 |
后脑下左 |
376 |
后脑下右 |
|
| 29 |
颈后左 |
375 |
颈后右 |
|
| 30 |
颈部左 |
374 |
颈部右 |
|
| 31 |
鼻底左 |
35 |
鼻底右 |
特殊对称 |
| 32 |
下巴左 |
361 |
下巴右 |
|
轮廓中心点(无对称)
| 0 |
下巴中心 |
| 1 |
鼻尖下/鼻小柱 |
| 2 |
左鼻孔左 |
| 3 |
下巴偏左 |
| 4 |
鼻尖中心 |
| 5 |
鼻底中 |
| 6 |
鼻根/山根 |
| 168 |
眉心下方 |
| 195 |
鼻梁下 |
| 197 |
鼻梁中 |
3.4 左眼区域(索引 33-142,共71点)
左眼关键点位
| 33 |
外眼角 |
|
| 133 |
内眼角 |
|
| 159 |
上眼睑中 |
|
| 145 |
下眼睑中 |
|
| 468 |
左瞳孔 |
478点模式下可用 |
左眼外轮廓对称
| 33 |
左眼外角 |
362 |
右眼外角 |
| 34 |
左眼上眼睑外1 |
363 |
右眼上眼睑外1 |
| 35 |
左眼上眼睑外2 |
364 |
右眼上眼睑外2 |
| 36 |
左眼上眼睑外3 |
365 |
右眼上眼睑外3 |
| 37 |
左眼上眼睑中1 |
366 |
右眼上眼睑中1 |
| 38 |
左眼上眼睑中2 |
367 |
右眼上眼睑中2 |
| 39 |
左眼上眼睑中3 |
368 |
右眼上眼睑中3 |
| 40 |
左眼上眼睑内1 |
369 |
右眼上眼睑内1 |
| 41 |
左眼上眼睑内2 |
370 |
右眼上眼睑内2 |
| 42 |
左眼上眼睑内3 |
371 |
右眼上眼睑内3 |
| 133 |
左眼内角 |
463 |
右眼内角 |
| 144 |
左眼下眼睑内1 |
474 |
右眼下眼睑内1 |
| 145 |
左眼下眼睑中 |
374 |
右眼下眼睑中 |
| 146 |
左眼下眼睑外1 |
375 |
右眼下眼睑外1 |
| 147 |
左眼下眼睑外2 |
376 |
右眼下眼睑外2 |
| 148 |
左眼下眼睑外3 |
377 |
右眼下眼睑外3 |
| 149 |
左眼下眼睑外4 |
378 |
右眼下眼睑外4 |
| 150 |
左眼下眼睑外5 |
379 |
右眼下眼睑外5 |
| 151 |
左眼下眼睑外6 |
380 |
右眼下眼睑外6 |
| 152 |
左眼下眼睑外7 |
381 |
右眼下眼睑外7 |
| 153 |
左眼下眼睑外8 |
382 |
右眼下眼睑外8 |
| 154 |
左眼下眼睑外9 |
383 |
右眼下眼睑外9 |
瞳孔/虹膜对称
| 468 |
左瞳孔中心 |
473 |
右瞳孔中心 |
| 469 |
左虹膜上 |
474 |
右虹膜上 |
| 470 |
左虹膜右 |
475 |
右虹膜右 |
| 471 |
左虹膜下 |
476 |
右虹膜下 |
| 472 |
左虹膜左 |
477 |
右虹膜左 |
3.5 右眼区域(索引 362-471,共71点)
右眼关键点位
| 362 |
外眼角 |
|
| 463 |
内眼角 |
|
| 386 |
上眼睑中 |
|
| 374 |
下眼睑中 |
|
| 473 |
右瞳孔 |
478点模式下可用 |
右眼对称关系见 3.4 左眼对称关系 表格,左右互换即可。
3.6 左眉区域(索引 70-106,共20点)
关键点位
- 70:眉头(靠近鼻梁)
- 105:眉峰
- 107:眉尾
左眉对称关系
| 70 |
左眉头 |
336 |
右眉头 |
| 71 |
左眉上1 |
335 |
右眉上1 |
| 72 |
左眉上2 |
334 |
右眉上2 |
| 73 |
左眉上3 |
333 |
右眉上3 |
| 74 |
左眉上4 |
332 |
右眉上4 |
| 75 |
左眉中1 |
331 |
右眉中1 |
| 76 |
左眉中2 |
330 |
右眉中2 |
| 77 |
左眉中3 |
329 |
右眉中3 |
| 78 |
左眉下1 |
328 |
右眉下1 |
| 79 |
左眉下2 |
327 |
右眉下2 |
| 105 |
左眉峰 |
300 |
右眉峰 |
| 107 |
左眉尾 |
296 |
右眉尾 |
| 108 |
左眉尾下1 |
297 |
右眉尾下1 |
| 109 |
左眉尾下2 |
298 |
右眉尾下2 |
| 110 |
左眉尾下3 |
299 |
右眉尾下3 |
| 111 |
左眉尾下4 |
301 |
右眉尾下4 |
| 112 |
左眉尾下5 |
302 |
右眉尾下5 |
| 113 |
左眉尾下6 |
303 |
右眉尾下6 |
3.7 右眉区域(索引 296-336,共20点)
关键点位
- 336:眉头(靠近鼻梁)
- 334:眉峰
- 300:眉尾
右眉对称关系见 3.6 左眉对称关系 表格,左右互换即可。
3.8 鼻子区域(共52点)
鼻梁(中心线,无对称)
| 6 |
鼻根/山根 |
| 168 |
眉心下方 |
| 197 |
鼻梁中 |
| 195 |
鼻梁下 |
鼻尖对称
| 48 |
鼻尖左 |
51 |
鼻尖右 |
48=241, 51=327 |
| 98 |
左鼻翼下 |
327 |
右鼻翼上 |
47=98, 51=327 |
| 241 |
鼻梁左 |
461 |
鼻梁右 |
48=241, 50=461 |
对称说明: - 47=98 ↔︎ 51=327:鼻翼下/上侧对称 - 48=241 ↔︎ 50=461:鼻梁左右对称(已验证,241+461=702) - 49=2:中心点(左鼻孔左),无对称
鼻孔对称
| 2 |
左鼻孔左 |
326 |
右鼻孔右 |
| 326 |
左鼻孔右(鼻中隔左) |
327 |
右鼻孔左(鼻中隔右) |
| 358 |
右鼻孔右 |
2 |
左鼻孔左 |
鼻底对称
3.9 嘴巴区域(索引 13-194,共40点)
嘴巴关键点位
| 61 |
左嘴角 |
|
| 0 |
上唇中心/唇珠 |
上唇最顶端 |
| 291 |
右嘴角 |
|
| 78 |
上唇内左 |
|
| 308 |
下唇内左 |
|
嘴巴外轮廓对称
| 61 |
左嘴角 |
291 |
右嘴角 |
| 62 |
上唇左外1 |
292 |
上唇右外1 |
| 63 |
上唇左外2 |
293 |
上唇右外2 |
| 64 |
上唇左外3 |
294 |
上唇右外3 |
| 65 |
上唇左外4 |
295 |
上唇右外4 |
| 66 |
上唇左中1 |
296 |
上唇右中1 |
| 67 |
上唇左中2 |
297 |
上唇右中2 |
| 68 |
上唇左中3 |
298 |
上唇右中3 |
| 69 |
上唇左内1 |
299 |
上唇右内1 |
| 70 |
上唇左内2 |
300 |
上唇右内2 |
| 71 |
上唇左内3 |
301 |
上唇右内3 |
| 72 |
上唇左内4 |
302 |
上唇右内4 |
| 73 |
上唇左内5 |
303 |
上唇右内5 |
| 74 |
上唇左内6 |
304 |
上唇右内6 |
| 75 |
上唇左内7 |
305 |
上唇右内7 |
| 76 |
上唇左内8 |
306 |
上唇右内8 |
| 77 |
上唇左内9 |
307 |
上唇右内9 |
| 84 |
下唇左外 |
321 |
下唇右外 |
| 85 |
下唇左中1 |
322 |
下唇右中1 |
| 86 |
下唇左中2 |
323 |
下唇右中2 |
| 87 |
下唇左中3 |
324 |
下唇右中3 |
| 88 |
下唇左中4 |
325 |
下唇右中4 |
| 89 |
下唇左中5 |
326 |
下唇右中5 |
| 90 |
下唇左中6 |
327 |
下唇右中6 |
| 91 |
下唇左中7 |
328 |
下唇右中7 |
| 92 |
下唇左中8 |
329 |
下唇右中8 |
| 93 |
下唇左中9 |
330 |
下唇右中9 |
| 94 |
下唇左中10 |
331 |
下唇右中10 |
| 95 |
下唇左中11 |
332 |
下唇右中11 |
嘴巴内轮廓对称
| 78 |
上唇内左 |
308 |
上唇内右 |
| 79 |
上唇内左1 |
309 |
上唇内右1 |
| 80 |
上唇内左2 |
310 |
上唇内右2 |
| 81 |
上唇内左3 |
311 |
上唇内右3 |
| 82 |
上唇内左4 |
312 |
上唇内右4 |
| 83 |
上唇内左5 |
313 |
上唇内右5 |
| 84 |
上唇内左6 |
314 |
上唇内右6 |
| 85 |
上唇内左7 |
315 |
上唇内右7 |
| 86 |
上唇内左8 |
316 |
上唇内右8 |
| 87 |
上唇内左9 |
317 |
上唇内右9 |
| 88 |
上唇内中 |
13 |
上唇内中(对称点) |
| 178 |
下唇内右 |
402 |
下唇内左 |
| 179 |
下唇内右1 |
403 |
下唇内左1 |
| 180 |
下唇内右2 |
404 |
下唇内左2 |
| 181 |
下唇内右3 |
405 |
下唇内左3 |
| 182 |
下唇内右4 |
406 |
下唇内左4 |
| 183 |
下唇内右5 |
407 |
下唇内左5 |
| 184 |
下唇内右6 |
408 |
下唇内左6 |
| 185 |
下唇内右7 |
409 |
下唇内左7 |
| 186 |
下唇内右8 |
410 |
下唇内左8 |
| 187 |
下唇内右9 |
411 |
上唇内右9 |
| 14 |
下唇内中 |
17 |
下唇内中(对称点) |
嘴唇中心点(无对称)
| 0 |
上唇中心/唇珠 |
| 13 |
上唇内侧中心 |
| 14 |
下唇内侧中心 |
| 17 |
下唇中心 |
3.10 瞳孔/虹膜区域(468-477,共10点)
注意:瞳孔检测需要开启 refine_landmarks=True
| 468-471 |
左眼虹膜 |
5点 |
| 472-475 |
右眼虹膜 |
5点 |
关键点位: - 468:左瞳孔中心 - 473:右瞳孔中心
3.11 脸部内部区域(共72点)
这些点分布在脸部内部,用于表情检测和3D重建,在映射到106点时通常不使用。
| 100 |
左脸颊内1 |
329 |
右脸颊内1 |
| 101 |
左脸颊内2 |
330 |
右脸颊内2 |
| 102 |
左脸颊内3 |
331 |
右脸颊内3 |
| 103 |
左脸颊内4 |
332 |
右脸颊内4 |
| 104 |
左脸颊内5 |
333 |
右脸颊内5 |
| … |
… |
… |
… |
注:脸部内部点位较多,完整对称关系可通过 左侧索引 + 右侧索引 ≈ 500 推算。
- 坐标系定义:
- MediaPipe 返回的坐标为归一化坐标(0-1)
- 原点(0,0)在左上角
- x轴向右,y轴向下
- 前置摄像头镜像:
- 使用前置摄像头时,需要水平镜像:
x = 1 - x
- 镜像后,“左侧”和”右侧”互换
- 对称精度:
- 理想情况下,对称点的y坐标应该完全相同
- x坐标应该关于0.5对称(即
x_left + x_right = 1.0)
- 实际检测中存在微小偏差是正常的
- 中心点处理:
- 位于面部中轴线上的点没有对称点
- 包括:鼻尖(4)、鼻梁(6, 168, 195, 197)、唇珠(0)等
- 特殊情况:
- 某些对称对不严格遵循
left + right = 500 规律
- 建议通过实际坐标验证对称性
- 轮廓差异:
- MediaPipe FACE_OVAL 为36点闭合曲线(含额头)
- 106点标准为33点开放曲线(不含额头)
- 映射时需要选择不含额头的 MediaPipe 轮廓点
- 瞳孔检测:
- 需要开启
refine_landmarks=True
- 瞳孔点索引为 468-475(478点模式)
- 左右定义:
- MediaPipe 中的”左/右”是基于观察者视角,与106点标准一致
- 深度信息:
- MediaPipe 每个点包含 (x, y, z) 三维坐标,z轴以鼻尖为原点
3.13 对称性验证方法
// 检查两个点是否关于面部中轴线对称
fun isSymmetric(leftPoint: Pair<Float, Float>, rightPoint: Pair<Float, Float>): Boolean {
val centerX = 0.5f // 面部中轴线x坐标
val tolerance = 0.02f // 容差
// x坐标应该关于中心对称
val xSymmetric = Math.abs((leftPoint.first + rightPoint.first) - 1.0f) < tolerance
// y坐标应该接近
val ySimilar = Math.abs(leftPoint.second - rightPoint.second) < tolerance
return xSymmetric && ySimilar
}
// 大多数对称对满足:左侧索引 + 右侧索引 ≈ 500
fun checkSymmetryIndex(leftIndex: Int, rightIndex: Int): Boolean {
val sum = leftIndex + rightIndex
return sum in 490..510 // 允许±10的误差
}
4.1 核心映射原则
第一性原理
MediaPipe 468 点本身的拓扑结构不对称,因此不能简单使用几何镜像(x = 1-x),而必须:
- 先确定语义对称的固定点:为每个 106 点找到 MediaPipe 中语义对应的固定点
- 再插值过渡点:在固定点之间使用
midPoint 插值
- 验证左右对称性:确保 M0-M15 与 M17-M32 关于 M16 对称
左右对称定义
- 中轴点:M16=152(下巴中心)
- 右半边:M0-M15(画面左侧=被摄者右脸,从上到下)
- 左半边:M17-M32(画面右侧=被摄者左脸,从下到上)
- 对称验证:每个 M_i 与 M_(32-i) 应关于中轴线对称
4.2 完整映射表
见 2.2 火山 106 点完整映射表。
4.3 眼部详细映射
右眼 52-57(6点)
| 52 |
226 |
外角 |
↔︎ 58(362) |
| 53 |
30 |
上眼睑外 |
↔︎ 59(286) |
| 54 |
56 |
上眼睑中 |
↔︎ 60(260) |
| 55 |
133 |
上眼睑内 |
↔︎ 61(446) |
| 56 |
26 |
内角 |
↔︎ 62(339) |
| 57 |
110 |
下眼睑内 |
↔︎ 63(256) |
左眼 58-63(6点)
| 58 |
362 |
外角 |
↔︎ 52(226) |
| 59 |
286 |
上眼睑外 |
↔︎ 53(30) |
| 60 |
260 |
上眼睑中 |
↔︎ 54(56) |
| 61 |
446 |
上眼睑内 |
↔︎ 55(133) |
| 62 |
339 |
内角 |
↔︎ 56(26) |
| 63 |
256 |
下眼睑内 |
↔︎ 57(110) |
4.4 眉毛详细映射
右眉上部 33-37(5点)
| 33 |
70 |
眉头 |
| 34 |
63 |
眉腰外 |
| 35 |
105 |
眉腰中 |
| 36 |
66 |
眉腰内 |
| 37 |
107 |
眉尾 |
左眉上部 38-42(5点)
| 38 |
336 |
眉头 |
| 39 |
296 |
眉腰外 |
| 40 |
334 |
眉腰中 |
| 41 |
293 |
眉腰内 |
| 42 |
300 |
眉尾 |
右眉下部 64-67(4点)
| 64 |
53 |
眉头下 |
| 65 |
52 |
眉腰下外 |
| 66 |
65 |
眉腰下内 |
| 67 |
55 |
眉尾下 |
左眉下部 68-71(4点)
| 68 |
285 |
眉尾下 |
| 69 |
295 |
眉腰下内 |
| 70 |
282 |
眉腰下外 |
| 71 |
283 |
眉头下 |
4.5 鼻子详细映射
鼻梁 44-46(3点)
| 44 |
197 |
鼻梁上 |
| 45 |
5 |
鼻梁中 |
| 46 |
4 |
鼻尖上 |
鼻尖 47-51(5点)
| 47 |
98 |
左外(左鼻翼下) |
↔︎ 51(327) |
| 48 |
241 |
左内(鼻梁左) |
↔︎ 50(461) ✅ |
| 49 |
2 |
中心 |
- |
| 50 |
461 |
右内(鼻梁右) |
↔︎ 48(241) ✅ |
| 51 |
327 |
右外(右鼻翼上) |
↔︎ 47(98) |
山根 78-79(2点)
| 78 |
193 |
左鼻孔上 |
↔︎ 79(417) |
| 79 |
417 |
右鼻孔上 |
↔︎ 78(193) |
鼻孔 80-83(4点)
| 80 |
198 |
左鼻孔 |
| 81 |
420 |
右鼻孔 |
| 82 |
49 |
左鼻孔下 |
| 83 |
279 |
右鼻孔下 |
4.6 嘴巴详细映射
嘴巴外轮廓 84-95(12点,顺时针)
| 84 |
61 |
左嘴角 |
| 85 |
40 |
上唇左外 |
| 86 |
37 |
上唇左中 |
| 87 |
0 |
上唇中 |
| 88 |
267 |
上唇右中 |
| 89 |
270 |
上唇右外 |
| 90 |
291 |
右嘴角 |
| 91 |
321 |
下唇右外 |
| 92 |
314 |
下唇右中 |
| 93 |
17 |
下唇中 |
| 94 |
84 |
下唇左中 |
| 95 |
91 |
下唇左外 |
嘴巴内轮廓 96-103(8点,顺时针)
| 96 |
78 |
左内角上 |
| 97 |
81 |
上唇内左 |
| 98 |
13 |
上唇内中 |
| 99 |
311 |
上唇内右 |
| 100 |
308 |
右内角下 |
| 101 |
178 |
下唇内右 |
| 102 |
14 |
下唇内中 |
| 103 |
402 |
下唇内左 |
4.7 实施注意事项
- 前置摄像头镜像:使用前置摄像头时,MediaPipe 返回的 x 坐标需要镜像:
x = 1 - x
- 归一化坐标:MediaPipe 返回的坐标为归一化坐标(0-1),直接使用即可
- 插值函数:使用
midPoint(a, b) 计算两点中点
- 调试方法:
- 在 CameraDebugOverlay 中显示 106 点(蓝色)
- 对比 106 点与 MediaPipe 原始点的位置关系
- 验证左右对称性
5. 参考文件
beauty-engine/src/main/java/com/mamba/picme/beauty/internal/facedetect/adapter/MediaPipe468Adapter.kt |
生产环境 468→106 映射 |
app/src/main/java/com/mamba/picme/features/gallery/components/FaceLandmarkOverlay.kt |
静态图调试映射与可视化 |
docs/07-STANDARDS/COORDINATE_SYSTEM.md |
坐标系标准 |
docs/03-TECHNICAL-SPECS/BEAUTY_ENGINE_TECH_SPEC.md |
大美丽技术规格 |
6. 参考资源