C#实现DLT直接线性变换(Direct Linear Transform)算法
参考资料:
1.武大版《工业测量技术与数据处理》P100-P106
2.转载博文——MATLAB实现DLT(Direct Linear Transform)算法
一、编程要求及依据
- 编写程序主要实现DLT算法,读取数据文件,进行计算,输出计算结果。
- 程序算法依据参见: 徐进军教授.《工业测量技术与数据处理》.武汉大学出版社.第100-106页
二、编程环境与语言
编程使用微软的Visual Studio 2015中的WinForm环境下编写,编写语言为C#。
三、DLT计算流程框图
四、程序使用流程
- 打开DLT直接线性变换.exe程序,依次导入左像控制点数据文件,右像控制点数据文件和待求点像方数据文件;
- 计算左像系数L和像主点x0和y0,计算右像系数L和像主点x0和y0;
- 计算待定点物方坐标;
- 导出待定点物方坐标;
- 导出DLT计算报告。
五、计算结果分析
计算所得待定点物方坐标 |
|||
点号 |
X |
Y |
Z |
1707 |
9.02889589578903 |
18.59576617145 |
10.7734065818369 |
3204 |
8.56662784077059 |
16.9495742408647 |
9.28675243972944 |
4204 |
7.74577543635323 |
16.1927805136872 |
9.29030273423021 |
3304 |
6.96298396130135 |
16.9611644191554 |
9.30017945488335 |
已知待定点物方坐标 |
|||
点号 |
X |
Y |
Z |
1707 |
9.0332 |
18.6024 |
10.7738 |
3204 |
8.5615 |
16.9463 |
9.2898 |
4204 |
7.7391 |
16.1831 |
9.2921 |
3304 |
6.9585 |
16.9551 |
9.3016 |
因为选取了少量数据,且只选择了两张像片计算系数L,所以精度在毫米范围内。
六、数据文件格式说明
1.leftimage.txt和rightimage.txt文件为选择的像方和物方的同名控制点。其中1004号点对应测试数据里的1D04。
格式为:点号 x y X Y Z
2.unknownpoint.txt为待求点已知像方坐标。
格式为:点号 左片坐标x y 右片坐标x y
3.待求点物方坐标.txt文件为计算得到的待求点物方坐标。
格式为:点号 物方X Y Z
4.DLT计算报告.txt文件为计算过程中的中间量。
七、 程序界面
八、程序源代码
using System;
using System.IO;
using System.Windows.Forms;
namespace DLT直接线性变换
{
public partial class Form1 : Form
{
public