分布表计算器设计文档.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
分布表计算器工程设计文档 UI界面说明 整个UI分为4部分: 主、从摄像头选择。运行软件后,首先要选择主、从。因为后续所有的操作,都会因摄像头的不同而进行不同的操作。 系统配置参数: 系统参数是进行标定数据文件检测与分布表计算的基本参数 。如果没有这些,后续无法进行。所以,首先应该将系统参数测量出来。“输入319.5像素距离”、“切换像素点像素”、“切换像素点距离”作用含义可以解释一下作用含义 名词解释: 319.5像素距离:如下面的图1所示,中心线在底边的刻度值。 切换像素点:主摄像头在底边最左端测量到的第一个像素点;从摄像头在右边最下端测到的第一个像素点的值。 切换像素点距离:切换像素点所对应的刻度值。 标定数据记录。将每个标定点的像素与距离记录下来。每记录一组数据,点击一次“保存单个标定”,所有标定点记录完之后,需点击“保存所有标定”,将标定数据保存至硬盘。保存完了之后,进行文件校验,检测记录文件是否出错。 生成分布表。点击后将根据记录的文件产生相应的分布表。 设计说明 主、从摄像头选择。它们为两个单选按钮。 系统参数配置与保存,保存系统参数的名称为MasterSystemConfig.ini或SlaveSystemConfig.in,分别对应主、从摄像头系统配置参数。与此功能相关的结构体与函数如下: 结构体: typedef struct { int system_width; int system_height; int pixel3195_dis; int switch_pixel_num; int switch_pixel_dis; }SYSTEM_CONFIG,*PSYSTEM_CONFIG; 相关函数: int SaveSystemCofig(SYSTEM_CONFIG save_config,char flag); int GetSystemCofig(char flag); 标定点数据记录 标定点:测试治具指定测试孔位的点。(没看懂什么意思) 我们需要记录每个标定点的距离以及对应的像素。将记录数据以文件形式保存。还需要对记录文件进行检测,查看记录数据是否有误。 主要函数: void OnBnClickedSaveall(); char FileVerifyFun(char flag_param); 分布表计算 名词解释: 中心线:像素点为319.5对应的直线 垂直线:与像素线垂直的直线 像素线:标定点对应像素的那条直线 交叉点:像素线与垂直线的交点。 基本原理: 通过标定点的坐标可以计算出,该点对应像素线方程式。通过中心线的坐标计算出垂直线的坐标。由两条直线相交原理可计算出,交叉点的坐标。由于在垂直线,像素线之间的距离可以认为是相等的。由此可以推断出其它,其它未测量到的像素线的斜率(方程)。当知道主、从两个摄像头每条像素线的斜率(方程),可以根据直线相交原理计算出它们的交点。交点就是我们需要的物理坐标。 可参考以下图形进行理解。 图 1 计算步骤,如下函数所示: int CaculateDistrTable(char flag) { // int DemarcateNum,iResult; float h = 1150,w = 1600; FPOINT AllCrossPoint[6400],DemarcateCrossPoints[640];//保存所有摄像头平面交点 DEMARCATEPIX DemarcatePixTable[640];//保存标定文件中测试出来的数据,最大640个点 float k_CentreLine,h_CentreLine; float k_Array[640];// 根据标定数据计算出标定点的斜率,像素线的方程为 LINE lineArray[640],CentreLine,VerticalLine; //第0步 读出系统配置参数 if(-1==GetSystemCofig(flag))return -1; //第一步 读出文件中的数据到一个测量表中 DemarcateNum = GetDemarcateTable(DemarcatePixTable,flag); //第二步 计算摄像头中线的参数 iResult = GetCamraCentreLine(&CentreLine,flag); //第三步 计算出每个标定点对应的方程式,得出标定线 iResult = GetDemaracateLineArray(DemarcatePixTable,lineArray,DemarcateNum,flag); //第四步 计算出垂直线(实际上是成像平面)的方程式 i

文档评论(0)

书是爱的奉献 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档