Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Distortion_Correction.py 使用说明

本脚本是一个基于 Tkinter 的畸变校正小工具,用于:

  • 读取畸变参数 Excel(标定点的实际坐标与检测坐标)
  • 读取面型数据 XYZ
  • 选择不同的校正模型并进行坐标校正
  • 对校正后的散点进行插值,生成规则网格的 XYZ
  • 输出校正后的 XYZ 文件并可视化结果

功能概述

脚本提供 3 种校正模式(界面单选):

  1. 二维多项式畸变:X、Y 同时使用二次多项式拟合。
  2. 一维 X 方向畸变:仅对 X 方向使用二次多项式拟合,Y 保持不变。
  3. Brown–Conrady 模型:先求径向畸变系数,再求切向畸变系数。

校正后会生成新的 XYZ 文件,并在窗口中显示:

  • 原始散点图
  • 校正后散点图
  • 插值后的规则网格图

运行环境

  • Python 3.9+(建议)
  • 依赖库:
    • numpy
    • pandas
    • matplotlib
    • scipy
    • tkinter(通常随 Python 自带)

安装依赖(如未安装):

pip install numpy pandas matplotlib scipy

输入文件要求

1) 畸变参数 Excel(.xlsx)

  • 脚本从 第 3 行开始读取数据(索引 2)。
  • 第 1、2 行可用于标题或说明,会被跳过。
  • 列格式要求:
    • A、B 列:实际坐标(X_actual, Y_actual)
    • C、D 列:检测坐标(X_detected, Y_detected)
  • 空行会被自动忽略。

2) 面型数据 XYZ(.xyz)

  • 文件前 14 行为头信息,脚本会保留并更新其中部分内容。
  • 从第 15 行开始为数据行,每行至少包含三列:
    • X Y Z
  • 文件末尾可带 # 结束行(脚本写出时会添加)。

使用步骤

  1. 运行脚本:
    python Distortion_Correction.py
  2. 在界面选择校正模式(二维 / 一维 / Brown–Conrady)。
  3. 选择畸变参数 Excel 文件(.xlsx)。
  4. 选择面型数据文件(.xyz)。
  5. 如有需要填写:
    • 旋转角度(度):检测坐标会按此角度旋转再进行拟合。
    • X/Y 方向偏移量:用于调整面型中心位置。
  6. 点击 “运行”

输出说明

脚本会在输入 XYZ 同目录下生成校正后的文件:

corrected_<原文件名>.xyz

输出文件特性:

  • 头信息会保留并更新第 4 行(网格起点与大小)。
  • 第 9 行显示宽高会在必要时扩大。
  • 数据部分为规则整数网格,Z 值为插值结果。
  • 插值范围外或超过阈值(默认 2.0)的区域写入 No Data

备注与注意事项

  • 旋转角度为 ,正值表示逆时针旋转。
  • 偏移量用于平移 XYZ 数据中心(在校正前应用)。
  • 插值使用线性方法,超出邻域范围会被置为 NaN 并写成 No Data
  • 校正过程会在界面显示三幅对比图,便于评估校正效果。

常见问题

Q: 为什么提示“旋转角度/偏移量必须为数字”?
A: 这些输入必须为可转换为浮点数的字符串;为空时默认为 0。

Q: 输出 XYZ 的网格是整数坐标,能否改为原始浮点?
A: 当前实现使用整数网格插值。如果需要保留浮点网格,需要修改插值部分的网格生成逻辑。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages