从鞋印估算纽约人的身高

Lobsters Hottest 新闻

摘要

作者利用一张地铁站墙上的鞋印照片,通过图像处理和一个启发式的身体与鞋印比例,来估算通勤者的身高分布,并讨论了使用贝叶斯方法进行改进的可能性。

<p><a href="https://lobste.rs/s/rtegvw/estimating_heights_new_yorkers_from">评论</a></p>
查看原文
查看缓存全文

缓存时间: 2026/07/13 23:57

# 从鞋印估算纽约人的身高 | Jesse Li 来源:https://blog.jse.li/posts/smith9street/ 推特(https://twitter.com/__jesse_li)rss(https://blog.jse.li/index.xml)布鲁克林史密斯-第九街站的墙壁由混凝土制成。粗糙的表面比城市中其他车站光滑的瓷砖更能留住记忆。等车的通勤者一只脚靠在墙上,鞋子留下痕迹。它加入了过往旅人留下的印记。这些印记汇聚在一起,在地板上方约18英寸处形成一条变暗的条带。 ``` from matplotlib.image import imread import matplotlib.pyplot as plt import numpy as np import cv2 image = imread('IMG_4804.jpg') IMAGE_WIDTH = image.shape[1] Y1, Y2, X1, X2 = 1800, 2350, 1300, 3300 GROUND_Y = 2454 KEYPAD_X = 3380 KEYPAD_HEIGHT_PX = 670 KEYPAD_HEIGHT_IN = 32 PIXELS_PER_INCH = KEYPAD_HEIGHT_PX / KEYPAD_HEIGHT_IN landmarks = image.copy() cv2.rectangle(landmarks, (X1, Y1), (X2, Y2), (255, 0, 0), 20) cv2.line(landmarks, (0, GROUND_Y), (IMAGE_WIDTH, GROUND_Y), (0, 255, 0), 20) cv2.line(landmarks, (KEYPAD_X, GROUND_Y), (KEYPAD_X, GROUND_Y - KEYPAD_HEIGHT_PX), (0, 0, 255), 10) plt.imshow(landmarks) ``` 维修门旁的黄色键盘有32英寸高(我量过(https://blog.jse.li/smith9street/IMG_4802.jpg)),这给了我们一把尺子,将像素坐标转换为物理位置。 隔离出鞋印所在区域后,我们可以计算每个像素的**相对亮度**(https://en.wikipedia.org/wiki/Relative_luminance)。 ``` region = image[Y1:Y2, X1:X2] luminance = np.dot(region, [0.2126, 0.7152, 0.0722]) plt.imshow(luminance, cmap='Greys_r') ``` 如果我们取每行的平均值,就可以绘制出墙面暗度相对于地面高度的曲线。更暗的行意味着更多的鞋印。 ``` inches = (GROUND_Y - np.arange(Y1, Y2)) / PIXELS_PER_INCH avg_luminances = np.mean(luminance, axis=1) / 255 avg_darknesses = 1 - avg_luminances plt.figure(figsize=(10, 6)) plt.plot(inches, avg_darknesses) plt.title('史密斯-第九街站墙面的暗度') plt.xlabel('距地面的高度(英寸)') plt.ylabel('平均暗度(1减去相对亮度)') plt.grid(True, linestyle='--', alpha=0.6) ticks = np.arange(np.floor(inches.min()), np.ceil(inches.max())) plt.xticks(ticks[ticks % 2 == 0]) plt.show() ``` 仅仅通过一张照片,我们就得到了通勤者鞋子碰撞墙面的分布数据。我们能从中推导出他们的身高吗? 我做了个实验:穿上运动鞋,靠在卧室墙上,假装在等F线火车。我留下的鞋印大约在我身体高度的27%处。或者说,我的身高是鞋印高度的3.7倍。假设这个比例适用于所有人(实际并非如此),我们可以缩放图表来估算人群的身高分布。 平均值落在一个合理的位置——五英尺多,但方差太大。这个分布暗示有些人高得不可思议。除了身高外,另一个变量是人们弯曲腿的角度:如果和我一样高的人把脚抬得更高,那么我会错误地认为他们更高。我们的模型必须考虑这一点。 未来工作:如果我们知道角度的分布,就可以通过一些贝叶斯计算来纠正估算的身高分布。如果你想一起研究,请给我发邮件!我也很乐意看到你在现实中发现的其它有趣的磨损模式。

相似文章

可步行性对谁而言?利用多模态深度学习捕捉步行感知中的主观变异性

arXiv cs.LG

本文介绍了包含来自1,196名受访者的29,870条步行适宜性评分的数据集,并提出了一种用户条件多模态深度学习框架,将视觉特征与个体评分者属性相结合,以捕捉步行感知中的主观变异性。该模型在排名一致性上比仅基于图像的基线提高了65%,表明评估环境的主体至关重要。

走向包容性移动建模:城市系统中老年人轨迹模式的特征化与评估

arXiv cs.AI

本文使用泽西城的Citi Bike数据,研究了移动数据集中老年骑行者代表性不足如何引入移动建模的系统性偏差。结果表明,在多数主导群体上训练的模型会误报老年人的移动行为,且在有限的人口数据下,能力更强的模型并不一定能提高子群体的保真度。