已知太少了,不能很好拟合纠偏。假设转换公式是: x2 = x1 * a + y1 * b + x * y * c + d y2 = x1 * e + y1 * f + x * y * g + h那么要拟合计算 abcdefgh 这8个变量,也至少需要4个已知点的坐标。而且已知坐标多一些(例如8个点)更好。甚至可能需要将你得目标“分区”,然后在每一个区选择8个点进行拟合。 假设公式更复杂,那么需要的“最少的已知点”个数更多。(不过更高次的公式,可能将本来是“一条直线”变成了“曲里拐弯”的蛇形线,因此可以不采用)
x2 = x1 * a + y1 * b + x1 * y1 * c + d y2 = x1 * e + y1 * f + x1 * y1 * g + h 给出4个以上的已知点,可以通过“最小二乘”等拟合算法来计算出8个变量的值。然后把这8个值保存起来,可以用于计算坐标纠偏。如果你能找到更合理的公式,那么可能效果更好。
比如说试试拟合 x2 = x1 * x1 * a + y1 * y1 * b + x1 * y1 * c + x1 * d + y1 * e + f x2 = x1 * x1 * g + y1 * y1 * h + x1 * y1 * i + x1 * d + y1 * j + k呵呵
y2 = x1 * e + y1 * f + x * y * g + h那么要拟合计算 abcdefgh 这8个变量,也至少需要4个已知点的坐标。而且已知坐标多一些(例如8个点)更好。甚至可能需要将你得目标“分区”,然后在每一个区选择8个点进行拟合。
假设公式更复杂,那么需要的“最少的已知点”个数更多。(不过更高次的公式,可能将本来是“一条直线”变成了“曲里拐弯”的蛇形线,因此可以不采用)
y2 = x1 * e + y1 * f + x1 * y1 * g + h
给出4个以上的已知点,可以通过“最小二乘”等拟合算法来计算出8个变量的值。然后把这8个值保存起来,可以用于计算坐标纠偏。如果你能找到更合理的公式,那么可能效果更好。
x2 = x1 * x1 * g + y1 * y1 * h + x1 * y1 * i + x1 * d + y1 * j + k呵呵
似乎你应该用鲍志雄前辈写的软件转,如果要实现的代码么,我建议你看看武大教科书,标准公式。
HGO数据处理软件包
Coord MG