一人工程 · solus opus

← 全部作品

imageOSINT几何CUDA

三角测距一座随机岛

yassa9 用一台 GPU + 8 阶段 OSM 过滤链,把一张风景照三角化到 Micronesia 的 Oan resort。相机 NW 324.97°,坐标 7.363444°N, 151.755750°E。

三角测距一座随机岛

三角测距一座随机岛

HN best #12 今天看到 yassa9 的 gralhix-004: 一张随机海岛照片,几何反投影 + 手写 CUDA 内核 + OSM 多边形过滤链把位置锁死。

八阶段过滤链

  1. 海岸线轮廓粗筛 — 把图片二值化找海岸线,按形状匹配 OSM 候选岛屿
  2. 海洋颜色直方图 — 颜色统计 + 海洋深度带
  3. 植被指数 NDVI — 红光 + 近红外光谱匹配 Sentinel-2 影像
  4. 太阳高度反推纬度 — 阴影长度比例 → 太阳仰角 → 当地时间
  5. 地标匹配 — 远处山脊形状匹配 OSM 节点
  6. 人类建筑特征 — 屋顶形状、码头方位
  7. 行政区反查 — 剩余候选进入 OSM 国家多边形
  8. 最终指针确认 — 26 个幸存者里第 8 个就是答案

最终坐标 7.363444°N, 151.755750°E,Micronesia 的 Oan resort, 相机方位 NW 324.97°。

CUDA 在里头干什么

不是把过滤写快,是把"从相机射线 + 高度图 + 海岸线多边形 反投影到 OSM 节点"这一步做并行—— 每个候选岛屿分配一个 thread block, block 内每个 thread 算一条相机射线打高度图的交点, shared memory 里汇总成密度分布,warp shuffle 做跨线程约简。

GPU 比 CPU 单核快 70×;作者用的还是一块 2014 年的破卡。

画里

一座圆形 coral cay 浮在泻湖中间; 远处左边一座火山岛、右边一座低矮环礁; 相机在前景,扇出三道视线到小岛; 地平线上方 Sentinel-2 NDVI 双带叠加; 右下角经纬度星标落在 Micronesia。