机器视觉检测--相机
一,相机就是CCD么?
通常,我们把相机都叫作CCD,CCD已经成了相机的代名词。其实很可能正在使用的是CMOS。CCD以及CMOS都称为感光元件,都是将光学图像转换为电子信号的半导体元件。他们在检测光时都采用光电二极管,但是在信号的读取和制造方法上存在不同。两者的区别如下:
CCD | CMOS | |
---|---|---|
制造技术 | 比较困难 | 比较容易 (可以转而使用通用半导体制造装置) |
制造成本 | 高价 | 低价 |
消耗电力 | 多 | 少 |
干扰 | 比较少 | 比较高 |
对光的敏感度 | 高 | 不如CCD |
二,像素
所谓像素,是指图像的最小构成单位。电脑中的图像,是通过像素(或者称为PIXEL)这一规则排列的点的集合进行表现的。每一个点都拥有色调和阶调等色彩信息,由此就可以描绘出彩色的图像。
例如:液晶显示器上会显示「分辨率 :1280×1024」等。这表示横向的像素数为1280,纵向的像素数为1024。这样的显示器的像素总数即为1280×1024=1,310,720。由于像素数越多,则越可以表现出图像的细节,因此也可以说「清晰度更高」。
三,像素直径
所谓像素直径,是指每个CCD元件的大小,通常使用μm作为单位。
严谨的说,这个大小中包含了受光元件与信号传送通路。(=像素间距,即某个像素的中心到邻近一个像素的中心的距离)。也就是说,像素直径与像素间距的值是一样的。如果像素直径较小,则图像将通过较小的像素进行描绘,因此可以获得更加精细的图像。可以通过像素直径和有效像素数,求出CCD元件的受光部的大小。
假设某个CCD元件的条件如下所示:
- 有效像素数…768 × 484
- 像素直径…8.4μm × 9.8μm
则受光部的大小为
- 横向 768 × 8.4μm = 6.4512mm
- 纵向 484 × 9.8μm = 4.7432mm
四,CCD的大小
CCD感光元件的大小,一般分为采用英寸单位表示和采用APS-C大小等规格表示这2种方式。
采用英寸表示时,该尺寸并不是拍摄的实际尺寸,而是相当于摄像管的对角长度。
【例】1/2英寸的CCD表示「拥有相当于1/2英寸的摄像管的拍摄范围」。
为什么如此计算呢?这是由于当初制造CCD的目的就是用来代替电视机录像机的摄像管的。当时,由于想要继续使用镜头等光学用品的需求比较强烈,由此就诞生了这种奇怪的规格。主要的英寸规格的尺寸如下表所示。
尺寸 | 对角长度 | 拍摄区域 |
---|---|---|
2/3英寸 | 11mm | W8.8×H6.6mm |
1/2英寸 | 8mm | W6.4×H4.8mm |
1/3英寸 | 6mm | W4.8×H3.6mm |
1/4英寸 | 4.5mm | W3.6×H2.0mm |
五,快门速度
快门速度,表示CCD或CMOS感光元件中蓄积电荷的时间。
如果快门速度为1/250,则蓄积光的时间为1/250秒。快门速度越快,则元件的受光量越少,相反如果快门速度越慢,则元件的受光量越多。
也可以说,快门速度将起到了调整光量的作用。
关于快门速度和受光量(正确来说应该称为蓄积的电荷量),存在以下的关系:
【例】如果将快门速度基准定为 1/1000秒(1ms),则
- 快门速度变为 1/500秒(2ms),则受光量变为2倍。
- 快门速度变为 1/2000秒(0.5ms),则受光量变为1/2。
六,增益
所谓增益,是指将图像信号进行电子增幅的过程。用于图像处理的CCD中,配备了可以通过在暗处拍摄时增幅信号,从而看上去变得明亮的功能。另外,还配有根据拍摄对象的亮度自动进行调整的增益控制功能等。
【例】在1/10000快门速度下拍摄,增加增益前后的对比如下:
七,1D相机(线扫描相机)
面型相机
前面所有我们提到的像素呈矩阵排列的CCD,即为覆盖视觉检测中99%应用的面阵相机。
线型相机
而线阵相机在长度方向目前最多有16K像素,但是宽度方向只有一个像素。通过移动来获取图像。
相比于平面相机,线扫相机主要优势体现在两个方面:
- 更高的分辨率。
- 成像质量更高。(反光产品,柱状体产品)
另外,对于布匹装的连续监测的产品,线扫描相机也非常方便。
但是,相比于面阵相机,线扫描相机成本更高,安装架设难度更高。同时,需要配合编码器来配合触发拍照,需要有这方面的Know-how。
最后,线扫描相机需要使用特殊的镜头和光源。
八,3D相机
目前市面的3D相机根据成像原理不同,主要分为三种。
- 激光类(Laser)
- 多目类(Binocular Vision)
- 光栅类(Strip Pattern)
1,激光类(Laser)
主要是通过三角反射原理,激光发生器投出激光束照在物体表面,反射回来的光线被CCD接受,然后建模成3D图像。
激光扫描成像
2,双目类(Binocular Vision)
双目立体视觉是指用两台性能相当、位置固定的CCD摄像机, 获取同一景物的两幅图像,通过两个摄像头所获取的二维图像,来计算出景物的三维信息。
在原理上比较类似人类的双目视觉。组建一个完整的双目立体视觉系统一般需要经过摄像机标定,图像匹配,深度计算等步骤。
九,2.5D相机
(详细介绍请参考之前历史文章)通过控制光源从不同角度照明,得到图像凹凸信息产生的阴影图像,而最后合成计算得到3D信息的图像(注:高度“Z”方向不能定量测量,所以叫2.5D)。
原图-->合成图像
来源基恩士官网
相关文章:

机器视觉检测--相机
一,相机就是CCD么? 通常,我们把相机都叫作CCD,CCD已经成了相机的代名词。其实很可能正在使用的是CMOS。CCD以及CMOS都称为感光元件,都是将光学图像转换为电子信号的半导体元件。他们在检测光时都采用光电二极管&#…...

【人工智能】第四部分:ChatGPT的技术实现
人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…...

小程序配置自定义tabBar及异形tabBar配置操作
什么是tabBar? 小程序的tabbar是指小程序底部的一组固定导航按钮,通常包含2-5个按钮,用于快速切换小程序的不同页面。每个按钮都有一个图标和文本标签,点击按钮可以切换到对应的页面。tabbar通常放置在小程序的底部,以…...
解析《动物园规则怪谈》【逻辑】
鉴赏《动物园规则怪谈》【逻辑】 前言版权推荐鉴赏《动物园规则怪谈》推理游客正方“它”方其他物品 不同规则或纸条的对比联系出现的地方及联系游客入园历程:被“它”污染的过程鉴赏升华 最后 前言 2024-5-31 13:05:38 以下内容源自《【逻辑】》 仅供学习交流使用…...

上传RKP 证书签名请求息上传到 Google 的后端服务器
上传证书签名请求 1.准备环境:OK pip3 install google-auth2.13.0 requests2.28下载 device_info_uploader.py 。 没找到先跳过 选项 1:通过 GCP 帐户使用 device_info_uploader.py 运行脚本。 ./device_info_uploader.py --credentials /secure/s…...

Debian和ubuntu 嵌入式的系统的 区别
随着开源操作系统的日益流行,Debian和Ubuntu这两个基于Linux的发行版本成为了众多开发者和系统管理员的首选。它们各自拥有独特的优势和特点,那么,在选择时,哪一个更适合你呢?接下来,我们将深入探讨两者的关…...

HTML旋转照片盒子
效果图 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Compatible" content…...

【UE5 刺客信条动态地面复刻】实现无界地面01:动态生成
2024.6.4更新 昨天半夜意识到生成Cube的方案不合适,又开始到处找动态地面的方法,发现了我想要的效果直接可以用nigara实现!!!! 于是这个部分就暂时告一段落,今季开始新的方向的学习。 为了快速…...

AI产品经理系列-如何使用kimi快速撰写用户故事(含提示词)
在AI时代,可能人人都可成为产品经理。 之前我们聊过如何使用kimi协助完成产品需求文档,如何写竞品分析报告,这一篇我们聊聊用户故事,如何使用kimi协助撰写产品需求文档中的用户故事。 在此之前我们先了解下什么是用户故事&#…...

MySQL索引与事务
前言👀~ 紧接着数据库的相关知识,今天讲解MySQL面试中频繁被问到的知识点,索引与事务!!! 如果各位对文章的内容感兴趣的话,请点点小赞,关注一手不迷路,如果内容有什么问题的话,欢迎各位评论纠正…...
『大模型笔记』从基础原理出发提升深度学习性能
从基础原理出发提升深度学习性能 文章目录 一. 从基础原理出发提升深度学习性能1.1. 计算(compute)1.2. 带宽(Bandwidth)1.2.1 关于内存带宽成本的推理(Reasoning about Memory-Bandwidth Costs)1.3. 开销(Overhead)二. 总结三. 参考文献Making Deep Learning Go Brrrr F…...

【二叉树】Leetcode 222. 完全二叉树的节点个数【简单】
完全二叉树的节点个数 你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最…...

golang界面设计器,全网少见
今天登录govcl的网站,无意中看到有个简易UI设计器。 对于golang的UI专用设计器,还没在网上真正见过。 之前也用govcl来做过两三个桌面应用,好用是好用,不过要安装Lazarus的IDE来拖动设计UI,还要配置很多东西࿰…...

如何在GlobalMapper中加载高清卫星影像?
GlobalMapper在GIS行业几乎无人不知,无人不晓,但它可以直接加载卫星影像也许就不是每个人都知道的了。 这里就来分享一下如何在GlobalMapper中加载高清卫星影像,并可以在文末查看领取软件安装包和图源的方法。 如何加载高清图源 首先&…...

【机器学习】解锁AI密码:神经网络算法详解与前沿探索
👀传送门👀 🔍引言🍀神经网络的基本原理🚀神经网络的结构📕神经网络的训练过程🚆神经网络的应用实例💖未来发展趋势💖结语 🔍引言 随着人工智能技术的飞速发…...

Java如何实现pdf转base64以及怎么反转?
问题需求 今天在做发送邮件功能的时候,发现邮件的附件部分,比如pdf文档,要求先把pdf转为base64,邮件才会发送。那接下来就先看看Java 如何把 pdf文档转为base64。 两种方式,一种是通过插件 jar 包的方式引入…...

动态规划5:62. 不同路径
动态规划解题步骤: 1.确定状态表示:dp[i]是什么 2.确定状态转移方程:dp[i]等于什么 3.初始化:确保状态转移方程不越界 4.确定填表顺序:根据状态转移方程即可确定填表顺序 5.确定返回值 题目链接:62. …...
Python编程学习第一篇——Python零基础快速入门(五)-列表(List)
今天我们来一起学习Python的列表(list),Python中的列表(List)是一种有序、可变的数据结构,可以用来存储多个值。列表可以包含不同类型的数据,例如整数、浮点数、字符串等。以下是关于Python列表…...

c# - 运算符 << 不能应用于 long 和 long 类型的操作数
Compiler Error CS0019 c# - 运算符 << 不能应用于 long 和 long 类型的操作数 处理方法 特此记录 anlog 2024年5月30日...
问题排查|记录一次基于mymuduo库开发的服务器错误排查(回响服务器无法正常工作)
问题背景: 服务器程序如下: #include <mymuduo/TcpServer.h> #include <mymuduo/Logger.h>#include <string> #include <functional>class EchoServer { public:EchoServer(EventLoop *loop,const InetAddress &addr, con…...

遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...

el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
C语言中提供的第三方库之哈希表实现
一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...
学习一下用鸿蒙DevEco Studio HarmonyOS5实现百度地图
在鸿蒙(HarmonyOS5)中集成百度地图,可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API,可以构建跨设备的定位、导航和地图展示功能。 1. 鸿蒙环境准备 开发工具:下载安装 De…...

《Docker》架构
文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器,docker,镜像,k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...

Linux基础开发工具——vim工具
文章目录 vim工具什么是vimvim的多模式和使用vim的基础模式vim的三种基础模式三种模式的初步了解 常用模式的详细讲解插入模式命令模式模式转化光标的移动文本的编辑 底行模式替换模式视图模式总结 使用vim的小技巧vim的配置(了解) vim工具 本文章仍然是继续讲解Linux系统下的…...