网友讨论的MARK校正实际上分为两个问题
1.MARK的识别,即要求设备得到MARK点的实际坐标,涉及图像采集和图像处理.计算方法比较复杂,但绝对不要怀疑DELPHI是否可以作图像处理.
限于篇幅,以后再谈这个问题.
2.图像校正.
图像校正就是根据mark点的标准坐标和对应的实际坐标,计算得到一个转化公式,可以实现任意点 标准坐标<-->实际坐标的转换公式.
例程中有转换的源程序,说明如下:
第1步:根据MARK点的标准坐标和对应的实际坐标,计算坐标转换系数
方法如下:
//入参数: XOLD,YOLD:mark点的标准坐标数组,从0开始
//入参数:XNEW,YNEW:mark点对应的实际坐标数组,从0开始
//入参数:N mark点的个数,同其他入参数匹配
//出参数:XXS : array[0..5] of double,转换X坐标用的系数
//出参数:YXS: array[0..5] of double 转换Y坐标用的系数
procedure zbbh(
xold,yold:array of double;
xnew,ynew:array of double;
n:integer;
var xxs,yxs:array of double
);
第2步:利用上面得到的转换系数,进行坐标转换
X':=XXS[0]*X^2+XXS[1]*XY+XXS[2]*Y^2+XXS[3]*X+XXS[4]*Y+XXS[5];
Y':=YXS[0]*X^2+YXS[1]*XY+YXS[2]*Y^2+YXS[3]*X+YXS[4]*Y+YXS[5];
X,Y为任意标准坐标, X' Y'为得到的实际坐标
如果有3个以上的MARK点,上述方法可以对PCB的弯曲进行校正,
这个程序已经用在有关SMT专业设备上.实际效果非常好.