2026.05.18征图日记16(改回逐项素积分&优化LiDAR与拍照的时序问题)
上午把测量缺陷的方式从取中间1/4深度,改为了拿到深度图,检测到缺陷后,确定缺陷位置在深度图的哪个位置,只拿到这个部分的深度,之后再进行逐项素积分,对于深度图无数据的地方,用靠近这个位置的其他深度进行填平
之后就在看标定法了,发现标定法只是得到了相机的内参+矫正畸变,对于测量物体的真实长度or面积,还是需要一层像素到物理世界的换算,所以还是需要有一个已知长度的物体,拍照之后在App里面进行标定(Leader说这个很low)
并且在工业上的标定,相机镜头是固定不变的,无论是拍摄照片的解析力,还是精度,都无法和专业的工业相机比较
之后又发现有一个同框标定的方案,不用撤标定板,直接把被测物体放在标定板上面。另外如果都用上标定板了,那为什么不直接用工业的成熟方案呢,还要用手机这种精度低的方式,再说,我现在都不知道这个app的缺陷面积检测是用在什么具体场景,对精度的要求怎么样,固定还是不固定。问mentor也是你先做吧,leader一天也忙得很。
还了解到,激光雷达结合X射线或超声波技术,激光雷达可构建物体内部点云模型,辅助判断孔洞位置与大小。在航空航天领域,该技术已用于检测复合材料层间缺陷。
下午在mentor手机上测了一下发现了几个问题:
1、拍照与深度采集不在同一时刻或相近时刻,导致用户点击拍照后裁切之后拿到的深度数据不与RGB图像匹配
2、深度图像素相对于RGB图片的像素太低,RGB图像中16xx16的像素对应同一个深度
3、保证裁切后的图像拿到的深度数据匹配
还和另一个同事(骏哥)聊了一会标定的东西,和骏哥聊天就舒服多了,不仅仅是因为我做的东西他也在做(他是做机械臂的,机械臂上也有摄像头和激光雷达),并且我们的思维方式很相似。
最后我知道了,标定法只是确定内相机内参,但是还是需要LiDAR的深度数据。
每日温度
1 | class Solution { |
最长公共子序列
1 | class Solution { |
今日工作内容
- 将 LiDAR 面积计算从中心深度平均法改为逐像素积分,每个缺陷像素独立查询深度值并累加 Z²/(fx×fy);
- 新增 depthLookupWithFallback 邻近填充;
- 实现 DepthCaptureModule 预热机制(prewarmDepthSession),CaptureScreen 挂载时启动深度 session,拍照后直接取缓存帧,延迟从 ~700ms 降至 ~100ms;
- 修复预热→采集的线程竞态问题(串行队列同步)
- 重写 CaptureScreen:用 VisionCamera 替代系统相机,快门瞬间同步拍照+LiDAR深度采集;
- 复用 openCropper 后裁切;添加 LiDAR 状态指示器;修复竞态问题(相册/快门互斥、卸载后回调守卫、取消裁切清理残留数据)
下阶段计划
1、优化App缺陷测量精度
2、优化App交互逻辑