使用Momocs做形态测量项目时fgProcrustes无法正确对齐图像的解决建议
你之前的轮廓平滑、居中、缩放、采样步骤都是正确的,对齐异常本质是无地标广义普鲁克分析的轮廓起始点不一致问题。Momocs的fgProcrustes在没有手动指定地标时,默认以轮廓的第一个采样坐标为对齐基准,你的小数据集采样时大概率所有样本的起始点刚好统一(比如都在叶尖),所以运行正常;全量数据中不同样本的轮廓起始点位置零散,才会出现轮廓旋转、散成环形的问题。
具体解决方案
- 第一步:统一所有轮廓的起始点。运行
fgProcrustes前用coo_slidedirection()函数固定起始点位置,比如要统一以叶尖为起始点可以用:
叶尖如果是其他方向,调整test5 <- coo_slidedirection(test5, direction="top", center=TRUE)direction参数为left/right/bottom即可。 - 第二步:校正镜像/旋转偏移。如果存在180度旋转的问题,可以开启
fgProcrustes的自动镜像校正参数,调整后的运行代码为:test6 <- fgProcrustes(test5, reflect = TRUE, tol = 1e-6, max.iter = 200, verbose = FALSE) - 第三步:精度要求高的场景建议添加1-2个固定地标。比如手动标注所有样本的叶尖、叶柄与叶片连接处两个地标,存入Out对象的
$ldk槽中,有地标的情况下普鲁克对齐的准确率会大幅提升,Momocs中可以通过ldk_add()函数完成批量地标标注。
形态测量学学习建议
- 优先看完Momocs包自带的官方 vignette,里面有完整的叶片轮廓分析实操流程,覆盖从数据导入、预处理到后续统计分析的全部环节,是最贴合你当前使用场景的入门材料。
- 基础理论可以参考《Morphometrics with R》,这本书配套了大量R语言可运行的示例代码,搞懂几何形态测量学的基础逻辑后,可以避开绝大多数预处理阶段的常见坑。
- 遇到包函数异常时优先查官方文档的参数说明,很多默认参数是针对通用场景设置的,不一定适配你的样本特征,通常调整参数就能解决大部分问题。
内容的提问来源于stack exchange,提问作者botanicalenglish
相关产品推荐
相关产品推荐

