机器视觉打光技巧

光源专家的8个打光技巧

机器视觉系统中的照明系统是极其重要的一部分,它的好坏直接影响着后面的图像处理。在听了一位日本光源专家的讲座之前,我其实对照明并不太了解,不就是将图像照亮以至于相机能够拍到图像吗?但事实并非如此,照明远非增强图像亮度这样简单,好的照明系统可以减少很多图像处理工作,提升整个机器视觉系统效率。那么照明是怎样一门学问呢?如何在机器视觉系统中选择合适的照明系统呢?

合适的照明是机器视觉应用成功的关键,而且是第一要考虑的部分。一个设计良好的照明系统不仅会带来更好的性能,节约时间,而且从长远来看能节约成本。下面来分享选择最合适机器视觉照明的八个小技巧,它们是:

(1) 检测材料缺损请使用亮度高的光;

(2) 精确定位请使用合适波长的光;

(3) 检测玻璃上的刮痕请使用非漫射的光,即Non-Diffused Light;

(4) 检测透明包装请使用漫射光,即Diffused Light;

(5) 创造对比请使用颜色光;

(6) 检测快速移动物体请使用频闪光;

(7) 消除反射时请使用红外光;

(8) 消除颜色变化请使用红外光;

照明是怎样影响机器视觉应用的呢?

对于将质量最为输出的机器视觉系统依赖于图像质量。高质量的图像使得系统能够精确地解释出从检测物体中提取的信息,这样就可以产生可靠的并可重复的系统性能。在任何视觉应用中需要的图像质量很大程度上取决于照明条件:颜色,角度和使用照明对象的光源数量意味着好图像之间的差异,有可能会产生更好的性能,也会带来质量差的图像,产生不好的结果。

机器视觉照明应该最大化特征对比,同时最小化其它剩下的对比度,因此让相机清晰看到部分或标记。高对比度特征简化集成和提高可靠性;对比度差的图像和不规则的照明需要来自系统的更多努力,而且也增加了处理时间。最优的照明取决于检测物体的尺寸,它的表面特征和部分几何特征和系统需求。具有宽范围的波长(颜色),视场(尺寸),对于特殊应用需要,就可以灵活的选择机器视觉照明。

当选择照明时需要考虑以下五个方面:

  1. 表面是光滑,还是崎岖不平?

  2. 表面是暗淡,还是光亮?

  3. 对象是弯曲的,还是平坦的?

  4. 条码或标记的颜色是怎样的?

  5. 是检测移动的物体,还是静止的对象?

技巧1:使用亮光去检测材料缺损

比如在塑料浇注中验证是否不足

从塑料浇注应用中验证材料缺损对于确保良好的密封表面是重要的。当有材料缺损时,你有了不足的条件(比如浇注到模型中的材料不充分)。

照明技术:亮场

亮场照明技术依赖表面纹理和平坦地形。光线遇到平坦反光的表面将光线反射回到相机,创立一个亮区域。粗糙纹理或表面缺损会将光线散射而远离相机,创立了暗区域。
在这里插入图片描述

技巧2:对于精确组件定位使用合适的波长

比如检测倒装芯片(Flipped Chips),在PCB装配中验证合适的零件方向是常见的机器视觉应用。

照明技术:亮场

为了验证装配问题,使用蓝光波长的打亮芯片方位。这个照明技术依靠波长和同轴照明几何。蓝色波长(460 纳米)能很好地区分银质和铜质表面:铜吸收蓝光呈现出暗场,银反射蓝光呈现亮场。同轴照明几何消除错误反射:不想要的耀眼点,反射和暗点。

在这里插入图片描述

技巧3:在玻璃中检测裂痕使用非漫射光

比如检测玻璃容器上的裂痕

照明技术:暗场

在这个应用当中,用暗场照明来创立一个明亮的,在暗背景下容易检测的感兴趣特征。在一个暗场区域中光线直接通过透明的瓶子。大多数穿透透明对象的光线不会被相机检测到。如果材料不规则,比如有裂纹,一些光线就会凸显出这个不规则。特别是划痕创立了一个内部空缺,这里光线折射和反射,以许多角度散射包括返回给相机。这些光线将很难检测的划痕转换到暗背景下的亮特征。

在这里插入图片描述

技巧4:检测透明包装使用漫射光

比如验证吸塑包装的内容

照明技术:连续漫射

连续的漫射照明技术不强调表面纹理和升高中的变化。它提供了非常大的固定照明角度,从多角度让光线找到对象上,因此消除了反射和典型的非方向性或单个光源产生的阴影。

在这里插入图片描述

技巧5: 使用颜色创造对比度

在机器视觉应用中创造一个高对比度图像的一个有用的方法是用特殊波长(彩色)的光照明物体。对于黑白相机来讲,光的波长能使得跟彩色一样的特征变亮或变暗。使用彩色轮子作为参考,选择一个相反颜色的光来使得特征变暗;或选相同颜色的光使得特征变亮。例如:

  1. 如果你想变暗的特征是红色,则使用绿光;

  2. 使用绿光能使得绿色特征呈现更亮;

  3. 记住铝上刻印在红光和蓝光下的区别。

在这里插入图片描述

技巧6: 针对快速移动的物体使用频闪光

当物体快速移动成像是模糊时,就需要使用频闪光。频闪宽度 = 视场÷ 像素/移动速度

技巧7: 消除反射使用红外光

机器视觉系统依靠数字图像中的灰度级转化。在许多视觉应用当中,环境光带来了不想要的亮反射,这样使得检测感兴趣特征变得困难或不可能。红外光就能解决这个问题。

在这里插入图片描述

技巧8:使用红外光消除颜色差异

红外光能用于在彩色对象之间消除灰度差别。暗对象吸收红外波长,创造出一致性,而其它则呈现阴影。这个照明方案有利于检测颜色或阴影变化的非一致性。

在这里插入图片描述

为自己的机器视觉系统选择合适的照明方案,需要从多方面来考虑,从这些小技巧中选择可取的,结合到自己的系统特点中去,相信会事半功倍!照明学问很大,需要一步步学习~!

本文原文连接:https://www.sohu.com/a/218714822_610702
本文原文连接:https://www.sohu.com/a/218714822_610702
本文原文连接:https://www.sohu.com/a/218714822_610702

热门文章

暂无图片
编程学习 ·

【图像处理】A Skinned Multi-Person Linear Model(SMPL)浅解析

【图像处理】A Skinned Multi-Person Linear Model(SMPL)浅解析SMPL的原理结语 SMPL的原理首先,博主不做3D建模的工作(尽管这项工作真的很酷),学习blender也仅是出于兴趣,因此,这篇博文中对SMPL模型的理解会有部分不足,内容仅供参考。《SMPL: A Skinned Multi-Person …
暂无图片
编程学习 ·

单例和枚举原理

单例和枚举原理 枚举 简单介绍枚举类能够统一管理一些全局的变量,封装对于他们的逻辑与方法。还能和switch-case结合,简化大量的if-else,让代码更加优雅。直接Demo public enum Week {//本文的枚举类变量,枚举类实例,name属性指的就是MONDAY//这类的变量MONDAY(0,"星…
暂无图片
编程学习 ·

自定义注解 通过AOP切面的方式实现所有业务实力类的变更记录

自定义注解 通过AOP切面的方式实现所有业务实力类的变更记录需求:重点难点整体思路:app_changelog 存放变更记录的表自定义注解changeLog自定义注解FieldDescpojo类切面方法切面关键在于通过反射获取对应的类、方法和属性、属性值 需求: 实力类的属性值在修改时变化了 ,…
暂无图片
编程学习 ·

牧牛链,牧牛帮排线

牧牛链医疗鉴证区块链 截至到目前为止,国家大数据局尚未完成对所有医疗机构内生成的医疗数据收集整理,也未完成对居民个人健康档案或病历的电子化进程。医疗机构上传数据和居民主动上传意愿不强烈。越来越多的医疗纠纷报道已经严重影响到医生群体的工作热情。许多医生对于基于…
暂无图片
编程学习 ·

Android Studio报错Error while merging dex archives

今天在编译代码时候出现这个报错,首先谈几句关于学习,其实刚开始新手时候什么都不懂,一遇到错误就慌得很,其实严格意义上这些所谓的报错都不是本身的错误,都只是我们不会用或者用错了导致的问题,就好像买了一辆车去水上开,结果沉了,还质问厂家问什么沉了。 所以这种所谓…
暂无图片
中恒嘉业 ·

Heap Sort 讲解

Heap Sort sorts a group of unordered elements using the Heap data structure. The sorting algorithm using a Min Heap is as follows: Heapify all elements into a Min HeapRecord and delete the top elementPut to top element into an array T that stores all so
暂无图片
cgfy ·

8. 源码分析之ConsumeQueue

源码分析之ConsumeQueue 消息发送时数据在ConsumeQueue的落地 ​ 连续发送5条消息,消息是不定长,首先所有信息先放入 Commitlog中,每一条消息放入Commitlog的时候都需要上锁,确保顺序的写入。 ​ 当Commitlog写成功了之后。数据…
暂无图片
coreui ·

Heap Sort 讲解

Heap Sort sorts a group of unordered elements using the Heap data structure. The sorting algorithm using a Min Heap is as follows: Heapify all elements into a Min HeapRecord and delete the top elementPut to top element into an array T that stores all so
暂无图片
coreui ·

[react] 你觉得react上手快不快?它有哪些限制?

[react] 你觉得react上手快不快?它有哪些限制? 相对vue来说不快。 限制 需要学习JSX需要工程化的配置需要对原生JavaScript有相当的掌握react只是一个UI层面的库,像vue内置了动画处理、keep-alive等功能,react则需要去找第三方库…
暂无图片
未来博客 ·

Heap Sort 讲解

Heap Sort sorts a group of unordered elements using the Heap data structure. The sorting algorithm using a Min Heap is as follows: Heapify all elements into a Min HeapRecord and delete the top elementPut to top element into an array T that stores all so
暂无图片
未来博客 ·

[react] 你觉得react上手快不快?它有哪些限制?

[react] 你觉得react上手快不快?它有哪些限制? 相对vue来说不快。 限制 需要学习JSX需要工程化的配置需要对原生JavaScript有相当的掌握react只是一个UI层面的库,像vue内置了动画处理、keep-alive等功能,react则需要去找第三方库…
暂无图片
建站日记 ·

[react] 你觉得react上手快不快?它有哪些限制?

[react] 你觉得react上手快不快?它有哪些限制? 相对vue来说不快。 限制 需要学习JSX需要工程化的配置需要对原生JavaScript有相当的掌握react只是一个UI层面的库,像vue内置了动画处理、keep-alive等功能,react则需要去找第三方库…
暂无图片
建站日记 ·

STL Practice —— 【map (1)】

Description 给出学生姓名和分数&#xff0c;要求你输入姓名查询分数。 Input 输入包含T组测试数据。 开头是一个正整数T (0<T<10)&#xff0c;为测试数据数量。 对于每组测试数据&#xff0c;第一行是一个正整数N (0<N<100000)。 接下来有N行&#xff0c;每行包…
暂无图片
mfbz ·

AOV网是否存在回路-拓扑排序-C++

拓扑排序是对测试AOV网是否存在回路的方法&#xff01; 拓扑排序的过程中&#xff0c;由于需要查找所有以某顶点为尾的弧&#xff0c;即找到该顶点的所有出边&#xff0c;故图要采用邻接表的存储方式。但拓扑排序较邻接表的存储方式有一点不同&#xff0c;由于要查找入度为0的点…
暂无图片
mfbz ·

[react] 你觉得react上手快不快?它有哪些限制?

[react] 你觉得react上手快不快&#xff1f;它有哪些限制&#xff1f; 相对vue来说不快。 限制 需要学习JSX需要工程化的配置需要对原生JavaScript有相当的掌握react只是一个UI层面的库&#xff0c;像vue内置了动画处理、keep-alive等功能&#xff0c;react则需要去找第三方库…
暂无图片
珊珊日记 ·

AOV网是否存在回路-拓扑排序-C++

拓扑排序是对测试AOV网是否存在回路的方法&#xff01; 拓扑排序的过程中&#xff0c;由于需要查找所有以某顶点为尾的弧&#xff0c;即找到该顶点的所有出边&#xff0c;故图要采用邻接表的存储方式。但拓扑排序较邻接表的存储方式有一点不同&#xff0c;由于要查找入度为0的点…
暂无图片
珊珊日记 ·

8. 源码分析之ConsumeQueue

源码分析之ConsumeQueue 消息发送时数据在ConsumeQueue的落地 ​ 连续发送5条消息&#xff0c;消息是不定长&#xff0c;首先所有信息先放入 Commitlog中&#xff0c;每一条消息放入Commitlog的时候都需要上锁&#xff0c;确保顺序的写入。 ​ 当Commitlog写成功了之后。数据…