当前位置: 首页 > news >正文

机器视觉-3 光学成像之明场与暗场

一. 原理介绍        

        在机器视觉中,光学成像的明场(Bright Field)和暗场(Dark Field)是两种常见的成像技术,分别用于不同的检测和分析场景。它们通过不同的光照方式来突出对象的特征,从而帮助识别、检测和测量对象的各类细节。

明场成像原理:是一种传统的光学成像技术。在这种技术中,光源直接照射到物体上,反射光或透射光直接进入相机或传感器。成像的亮度主要由物体的反射率、透光率以及物体的形状和结构决定。明场照明的定义是光源位于相机视野(FoV)的反射锥内(高角度照明)。

暗场成像原理:暗场成像是通过使光线以倾斜的角度照射到物体上,只有散射光或反射光进入相机或传感器,直接反射光不会进入镜头,因此在图像中背景通常是黑暗的,只有物体的边缘或细微结构被高亮显示。

如下图示蓝色圆锥确定了相机的视野(FoV)。位于目标前面的光被反射回相机,而FoV则由内侧和外侧的反射角看到。在二维模型中,这也称为“W’照明,因为内角和外角创造了一个“W”形的边界。
入射角在“W”边界之外的反射光称为暗场照明。可以看到光与目标的角度要小得多(低角度照明),由于大部分光被反射到远离相机镜头的地方,形成了高对比度。

二. 使用场景与优缺点

明场成像(Bright Field Imaging)

1. 适用场景:明场成像通常用于表面特征明显、对比度较高的场景。例如:

  • 表面检测:检测物体表面的划痕、凹坑、污渍等缺陷。
  • 尺寸测量:对物体的边缘、形状等进行精确测量。
  • 颜色和对比度分析:用于检查物体的颜色一致性和对比度。

示例图像:明场下的屏幕的污渍

2. 优点:

  • 成像方式简单,容易实现。
  • 适合对比度明显的目标物检测。
  • 可用于颜色和亮度的分析。

3. 缺点:

  • 对于表面细微的凹凸结构或透明、半透明的材料,成像效果不佳。
  • 如果背景过亮,可能会导致目标物体的边缘不清晰。

暗场成像(Dark Field Imaging)

1. 适用场景:暗场成像非常适合检测微小的表面缺陷或边缘结构,例如:

  • 表面微小缺陷检测:如裂纹、颗粒、划痕等微小的表面缺陷。
  • 透明或半透明材料的检测:如玻璃、薄膜的表面缺陷检测。
  • 轮廓边缘检测:突出物体的边缘,使其与背景形成鲜明对比。

示例图像:暗场下屏幕的异物

2. 优点:

  • 能有效突出表面微小的结构或缺陷。
  • 对于透明或半透明物体,能显示其内部或表面的细微变化。
  • 适合在低对比度环境中增强图像的细节表现。

3. 缺点:

  • 由于背景通常是黑暗的,图像的整体亮度较低。
  • 对于整体形状的分析不如明场成像有效,主要适用于细节检测。
  • 光照系统的设计和调试相对复杂。

总结:

  • 明场成像:适合用于整体外观检测、尺寸测量以及颜色分析的场景。
  • 暗场成像:更适合用于微小缺陷、边缘检测以及透明或半透明材料的检测。

        两种成像技术各有优劣,在实际应用中,选择适合的成像方式取决于具体的检测需求和被检测物体的特性。在某些复杂的检测任务中,甚至可以结合使用明场和暗场成像技术,以获得更全面的信息。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 微信小程序手写签名
  • Spring Boot 的Web项目如何直接显示html
  • Linux开发:在 VSCode 中配置 Linux C++ 项目的头文件路径
  • 嵌入式——什么是堆、什么是栈
  • 【Spring Boot 3】【Web】国际化
  • EasyCVR视频汇聚平台:巧妙解决WebRTC无法播放H.265视频的难题
  • 透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路
  • SOMEIP_ETS_088: SD_Answer_multiple_subscribes_together
  • DML、DQL、DCL的基础介绍
  • 【Java】ApiPost请求返回 `406` 状态码(jackson)
  • 解决linux云服务器ping不通另一台linux云服务器的问题
  • IP 协议详解
  • flutter之常用数据类型
  • 力扣704:二分查找
  • Ruby 多线程
  • exif信息对照
  • Java应用性能调优
  • Js基础知识(一) - 变量
  • js面向对象
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • Python爬虫--- 1.3 BS4库的解析器
  • Redis字符串类型内部编码剖析
  • Spring声明式事务管理之一:五大属性分析
  • 百度地图API标注+时间轴组件
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 汉诺塔算法
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 前端之React实战:创建跨平台的项目架构
  • 如何实现 font-size 的响应式
  • 使用docker-compose进行多节点部署
  • 在weex里面使用chart图表
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • # 数论-逆元
  • #etcd#安装时出错
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (C11) 泛型表达式
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (补充)IDEA项目结构
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (三十)Flask之wtforms库【剖析源码上篇】
  • (四) 虚拟摄像头vivi体验
  • (四)库存超卖案例实战——优化redis分布式锁
  • (一) storm的集群安装与配置
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转载)深入super,看Python如何解决钻石继承难题
  • .bashrc在哪里,alias妙用
  • .md即markdown文件的基本常用编写语法
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .Net Core 笔试1