项目

一般

简介

行为

功能 #1768

打开

Setup window: STARTLight Calibration (仅startlight需要)

俞晨羲超过一年 之前添加. 更新于 超过一年 之前.

状态:
已解决
优先级:
指派给:
目标版本:
-
开始日期:
2023-09-20
计划完成日期:
% 完成:

0%

预期时间:
机台点位:
中芯

描述

1. 移到特殊图形处,按Add新增。(至少需选6个,若Blank至少要4个),---在6个里,最好有
1)大图形
2)小图形
3)尖角地方
4)数字而且所有图形要平均分布在Inspection area里。
2. 按下Calibrate,计算机开始计算。
3. DB选择NextSL选择Exit Setup ,跳到Inspection画面。


文件

施捷 更新于 超过一年 之前

客户端光标定设置界面:
光标定设置独立作为Recipe的一个步骤,由于预览图的像元比较大,直接在预览图上选标定点的话偏差较大,操作方式可以这样:
用户通过双击预览图上的某个位置(可在相机视口查看图形,控制面板微调),新增(更新)标定点在预览图上的位置,记录标定点的平台坐标位置及预览图上的坐标。
标定点的最大数量3个,是否要加用于符合灰度值的点的个数设置,个数就可以得到标定结果。
灰度值上下幅度范围
光标定设置前必须要做对准测试

光标定
方案一:

透反射同时调整光、core代码 SL、DB光标定的接口分别独立开来

1、透射光和反射光分别设置期望的最佳亮度
2、通过用户输入的起始透射光亮度和反射光能量值采集图像
3、在起始值附近采集图像,透射光和反射光分别N张(假设有N个光标定点)。

透射光和反射光采集一次定点后分别调用下面的接口:
int StormInspect::AutoLight(unsigned char* img_data, int width, int height, int lightEnergy, int src_idx,int bestlight ) {
//拷贝返回
VOS_Log(LL_INFO, "AutoLight:get light energy %d.", lightEnergy);
unsigned char * pstrip_dst = new unsigned char[width*height];
while (pstrip_dst == NULL) {
Sleep(300);
VOS_Log(LL_ERROR, "pstrip_dst is null.");
}
memcpy(pstrip_dst, img_data, sizeof(unsigned char)*width*height);
light_s *light_inst = new light_s;
light_inst->img_width = width;
light_inst->img_height = height;
light_inst->lightEnergy = lightEnergy;
light_inst->src_idx = src_idx;
light_inst->img_data = pstrip_dst;
light_inst->best_light = bestlight;
light_char.insert(light_char.end(), (*light_inst));
return 0;
}
4、客户端调用,core线性插值计算一次最佳亮度

AutoLightReturn(int &bestenergy,int &itr_confirm)

5、根据第一次返回的透射光、反射光亮度调整光、采集图像后再次迭代计算。

6、设置最大迭代次数,如果收敛,则返回。如果不收敛,则返回迭代过程中的最佳值。

7、考虑到透射光和反射光的亮度相互影响,和光标定点位置不同亮度也可能这些影响,可以通过几次迭代先确定一个大致的范围,然后不使用线性插值,对大致范围小步长调整。

方案二:
透反射分别调整光

施捷 更新于 超过一年 之前

  • 状态新建 变更为 已解决
  • 指派给施捷 变更为 周庆

已发布测试

行为

导出 Atom PDF