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

图像处理中级篇 [1]—— 彩色照相机的效果与预处理

在工业检测中,黑白相机虽应用广泛,但在应对颜色差异检测时往往力不从心。彩色照相机凭借其对色彩信息的精准捕捉,成为复杂场景下的理想选择,而预处理技术则进一步释放了其性能潜力。

一、彩色照相机的效果

检查盖子上的金色标签

可以看到,当工件表面为有光泽的曲面时,使用黑白照相机并不能得到类似人眼所观察到的图像处理效果。 从上面的实物图像可以看到,造成这种现象的原因是标签的亮度不均匀。

如果使用彩色照相机,就可以如右图一样,只提取标签的金色部分。

这是因为,与采用亮度作为处理标准的黑白照相机不同,彩色照相机使用色相(色调)数据进行图像处理。

二、彩色照相机是什么?

对于使用图像传感器的彩色照相机,其中一种是俗称  单板式   CCD。为了得到彩色 图像,需要三原色(RGB)信息。CCD  的每一个像素都贴有一种三原色( RG  或   B  的滤镜。这样,每个像素就可以将 RG  B  256 级浓淡数据传送给控制器,控制器利用这些数据进行彩色图像处理。

【关于比色体系】

一种用数值表示颜色的体系,通常用含有三个轴的三维图表加以表示。

比色系统有许多种类,其中采用色调(Hue)、饱和度(Saturation)及亮 度(Value)等 3 要素的HSV模式接近人眼的观察效果,因此适于图像处理。

三、彩色二值化处理

彩色相机的核心优势在于其能捕捉 RGB 三原色的 256 级浓淡信息,形成 1677 万级颜色数据,远超黑白相机的 256 级灰度范围。单板式 CCD 的每个像素都覆盖 RGB 滤镜,能分别感应三原色光,再通过 HSV 色彩模式(色调、饱和度、亮度)处理,更贴近人眼的色彩感知,适合检测金色标签、彩色导线等场景。

彩色二值化处理是彩色相机的重要应用技术,能从千万级颜色中精准提取目标颜色范围。例如,检测线圈中绿色导线的断线时,通过提取绿色并二值化,可清晰显示断线位置;在混合螺丝中计数金色螺丝,彩色二值化能有效区分金色与银色,而这是黑白相机难以实现的。

四、彩色浓淡处理

彩色照相机的信息量是黑白照相机的 8 万倍。如果对于这些信息都进行处理,则需要大量的时间。而用于高速生产线的图像 传感器需要以百分之一秒的时间单位进行图像处理。另外,在一些不适于采用二值化处理的应用中(例如形状搜索、表面损伤 检查等),由于信息量过大,会形成干扰,从而使特征点变得不清晰。为了解决这些问题,开发了一种新的预处理功能,即“ 色浓淡处理 

在检测上图的左图所示的浅色图案时,如使用黑白浓淡处理,则只能得到非常淡的图像。但是采用基于颜色数据的彩色浓淡处理后,可以看到,背景成为黑色,淡色部位可以清晰地转换为灰色的图案。在进行标记形状差异或错位检查时,两种处理在效果上的差异一目了然。

五、通过照相机增益调整来优化图像

增益调整是优化图像的方法之一。对于彩色照相机来说,增益调整可以分别调整 RGB 三种颜色,因此可以使红色变得更 红、蓝色变得更蓝、而绿色则变得更绿。在区分颜色时,这种调整可以起到良好的效果。

但海量颜色数据会增加处理时间,针对这一问题,彩色浓淡处理技术应运而生。它将彩色图像转换为以目标颜色为最高亮度的 256 级灰度图,在保留颜色特征的同时,大幅减少数据量,满足高速生产线的检测需求。例如,检测浅色图案时,彩色浓淡处理能让浅色部位与黑色背景形成鲜明对比,便于形状差异识别。

各种图像传感器根据其使用目的的不同,会具有不同的预处理功能。利用这些功能,可以将图像转换成适宜的图像。 这些功能不仅适用于黑白照相机,同时还适用于经彩色二值化处理、彩色浓淡处理后的彩色照相机。

下面将介绍其中几种预处理功能。

在实际应用中,彩色相机与预处理技术的结合,能解决传统黑白相机无法应对的复杂检测任务。例如,在高反光曲面工件上检测金色标签,彩色相机可忽略亮度干扰,仅通过色调识别标签,大幅提升检测稳定性。

http://www.xdnf.cn/news/16608.html

相关文章:

  • SpringBoot之整合SSM步骤
  • PHP语法高级篇(七):MySQL数据库
  • [论文阅读] 人工智能 + 软件工程 | 增强RESTful API测试:针对MongoDB的搜索式模糊测试新方法
  • 【LINUX网络】使用TCP简易通信
  • 【STM32-HAL】 SPI通信与Flash数据写入实战
  • 国产化再进一步,杰和科技推出搭载国产芯片的主板
  • 【CF】Day115——杂题 (构造 | 区间DP | 思维 + 贪心 | 图论 + 博弈论 | 构造 + 位运算 | 贪心 + 构造 | 计数DP)
  • 代码随想录算法训练营第五十五天|图论part5
  • 【音视频】WebRTC-Web 音视频采集与播放
  • 如何利用 Redis 的原子操作(INCR, DECR)实现分布式计数器?
  • CSS-in-JS 动态主题切换与首屏渲染优化
  • IBM Watsonx BI:AI赋能的下一代商业智能平台
  • 领域驱动设计(DDD)在分布式系统中的架构实践
  • jenkins连接docker失败【还是没解决】
  • 基于SpringBoot+MyBatis+MySQL+VUE实现的便利店信息管理系统(附源码+数据库+毕业论文+远程部署)
  • 计算机网络基础(一) --- (网络通信三要素)
  • 【C++算法】77.优先级队列_数据流的中位数
  • PHP云原生架构:容器化、Kubernetes与Serverless实践
  • 机器学习笔记(四)——聚类算法KNN、Kmeans、Dbscan
  • 深入理解 Qt 元对象系统 (Meta-Object System)
  • 架构实战——互联网架构模板(“用户层”和“业务层”技术)
  • 【Linux系统编程】Ext2文件系统
  • 【C++】指针
  • 【面试场景题】阿里云子账号设计
  • 【数据结构】用堆实现排序
  • JavaWeb 入门:JavaScript 基础与实战详解(Java 开发者视角)
  • 「源力觉醒 创作者计划」_文心大模型 4.5 多模态实测:开源加速 AI 普惠落地
  • 某雷限制解除:轻松获取原始下载链接,支持多任务转换
  • Hyperchain安全与隐私机制详解
  • Android Slices:让应用功能在系统级交互中触手可及