C#联合halcon实现字符缺陷检测源码机器视觉 字符识别 IO输入输出 halcon联合C#实现字符识别,处理pin距离 4个巴斯勒相机相机SDK开发 设置相机的触发模式,采集模式,曝光增益 宇符模板 字符识别 pin模板 pin测量 密码登录 10输入输出控制卡卡

最近在工业视觉项目里折腾了一套字符缺陷检测系统,核心用C#搭界面和逻辑控制,底层图像处理交给Halcon。四个Basler相机怼在工位上抓拍,那场面跟拍电影似的,不过实际开发可比拍电影刺激多了。

先说说硬件配置怎么玩转

四个Basler acA2440-75uc相机用官方SDK搞同步触发。C#里新建个相机控制类,关键参数得这么配:

// 初始化相机
ICamera camera = CameraFactory.CreateCamera(CameraType.Basler);
camera.SetParameter("TriggerMode", "On");       // 硬件触发
camera.SetParameter("ExposureTime", 15000);     // 单位μs
camera.SetParameter("Gain", 12);                // 增益别调太高
camera.SetAcquisitionMode(AcquisitionMode.Continuous);

这里有个坑——曝光时间超过20ms时容易拖帧,后来发现是USB3.0带宽被隔壁工位的扫码枪抢了,改走独立USB控制器才解决。

字符识别这活儿得分两步走

Halcon里先做模板训练,用createocrmodel_auto算子自动生成特征模型。有个骚操作是给模板加噪声增强鲁棒性:

read_image (Image, 'font_sample.png')
add_noise_white (Image, NoisyImage, 15)  // 加15个灰度级的椒盐噪声
create_ocr_model_auto (NoisyImage, 'Arial', 10, 10, OCRHandle)

实际检测时遇到个奇葩问题——反光导致字符边缘膨胀,解决方法是在C#端做预处理:

// 形态学处理去毛刺
HOperatorSet.GrayOpeningRect(ho_Image, out ho_ProcessedImage, 3, 1);
HOperatorSet.Threshold(ho_ProcessedImage, out ho_Region, 128, 255);

PIN脚间距检测才是重头戏

用Halcon的metrology模型比传统边缘检测稳得多,特别是遇到弯曲引脚时:

create_metrology_model (MetrologyHandle)
add_metrology_object_line_measure(MetrologyHandle, PinRow1, PinColumn1, 
    PinRow2, PinColumn2, 30, 5, 1, 30, [], [], Index)
apply_metrology_model (Image, MetrologyHandle)
get_metrology_object_result (MetrologyHandle, "all", "result_type", "all_param", PinResult)

这里有个细节——测量线的长度参数要根据镜头畸变动态调整,我们直接在C#里封装了个自适应算法:

double CalcRoiLength(double pixelSize, double physicalLength) 
{
    return physicalLength / (pixelSize * 0.98); // 补偿径向畸变
}

IO控制卡搞事情

用了某国产控制卡,驱动接口写得那叫一个糙。关键操作得加CRC校验:

byte[] BuildCommand(byte ioPort, bool state)
{
    byte[] cmd = new byte[5] { 0xAA, ioPort, (byte)(state ? 0x01 : 0x00), 0x00, 0x55 };
    cmd[3] = (byte)(cmd[0] ^ cmd[1] ^ cmd[2]); // 异或校验
    return cmd;
}

最坑爹的是输出口烧了两次,后来发现是电磁阀反向电动势没处理,并联个二极管立马消停。

整套系统跑起来后,现场小哥说比之前的方案快了三倍不止。不过调试阶段真是掉头发——某次更新Halcon到19.11版本后模板匹配突然罢工,回滚驱动才发现新版本对AMD显卡支持有坑。现在项目现场跑得稳如老狗,就是工控机风扇声大得能当吹风机用。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐