我眼中的《视觉测量技术基础》
为什么会写这篇博客:
首先给大家说几点:看我的自我介绍对于学习这本书没有任何帮助,如果你是为了急切的想找一个视觉测量的解决方案那可以跳过自我介绍往下看或者换一篇博客看看,如果你是刚入门想学习计算机视觉的同学,那整篇文章读完你可能会觉得一无所获也可能会收获到意想不到的东西,接下来是我的自我介绍。
1.自我介绍
我,一个普普通通的大高个,今年大学刚毕业,以前写博客的初衷是想记录一下自己学习的过程,所以哈我的博客很随性,有突发奇想的创作、连续学习的笔记、简简单单的应用…有的粉丝问我一些系列还有更新吗?答案是肯定的,首先澄清一点,有一些以前的博客被我删除了,可能有的粉丝之前关注收藏了,后来看不到了,在此说一声抱歉,后续会更新的,删除的原因是在某天我回顾我的博客时,感慨之下删除了40篇博客,觉得质量不高(主要粉丝放映有的博客图片不显示了),越学越菜的感觉激励我接下来更新的每一篇博客都尽力向高质量看齐吧。
2.事件背景
一次偶然的机会,我发现非计算机视觉专业的人对普通的相机和工业相机有认知上的不同。
同样都是相机:
为什么工业相机拍摄时还需要光源?
为什么工业相机拍远处物体需要图像矫正?
为什么在检测面板上面板颜色和被检测物颜色相近就很难检测?
为什么一些情况我们人眼能区分但是在图像处理方面不好实现?
普通的USB摄像头能不能替代工业相机?
上述只是我列出的部分问题,虽然我尽力为其解答,但是最终还是把我问的无话可说。不全面考虑环境因素分析影响成像效果的图像处理只能是纸上谈兵,在我看来实际应用就得多看、多想,不但要知其然还要知其所以然。在我看来图像就是矩阵,可能没有学过很难理解,这就应了那句话“各行如隔山”。
我和我的导师提起这件事,我的导师给我列了两个公式计算出了选型时所需的一些参数,我突然意识到,为啥我没有想到呢?我庆幸毕业时候我只把书都寄回来了(运费比书的价格高,但是书的价值高),我忙翻出了那本《视觉测量技术基础》,是的,有讲呀,实际应用的时候到了!我决定利用工作的空余时间去把这本书看完,以通俗易懂的文字记录我的学习过程。如果是大牛看我这篇博客可能学不到啥哈,如果小白那应该会让你对视觉测量有一定的了解,书中的每一行我不会精读(注:要是前言都精读那写博客的时候我难受,看的时候你兴许都没有看下去的耐心了),例如前言之类的,可能也就像论文摘要那样一笔带过了。其中一些推导过程我会手写或代码实现,跟着我来看看吧,看这篇博客时候可以吃着零食喝着可乐,注意别撒电脑上面就行。
注意:本篇博客本不会去解析书上每一个公式,例如辐射度量计算公式这一类的物理学推倒公式,但是会去解析一些与图像处理相关的公式,每一章节的学习不会按部就班的把所有的内容深度的解析,只会涉及一些我感兴趣且小白易于接受的内容。
学习内容:我眼中的《视觉测量技术基础》
学习产出:
映入眼帘的是书籍封面上好多束光与三个不同样式的电子显微镜,打开书,我的书中掉出了很多张纸,源于我每次上课都要手写笔记的习惯,这是在小学就养成的习惯了,在此特别要感谢我的父亲,从小学到初中便答应我以5元每张手写笔记的价格回收我的笔记(其实我也算不清多少笔记了,始终也没正式的兑换过,也没有具体的交易时间与地点,因为是一次性兑换原则,我总想攒着买电脑,后来养成习惯了,也就不在意回不回收的问题了)。
第一章 绪论
- 计算机视觉的发展,始于20世纪50年代
- Marr视觉理论
1.Marr视觉理论从信息处理系统角度将系统研究分为:计算理论层次、表达与算法层次、硬件实现层次,通俗讲就是:1.解决什么问题,怎么计算,为什么这么算;2.定义计算的方法以及输入输出的意义,建立关系;3.硬件部署;
2.Marr从视觉理论角度出发,通过早、中、后期的视觉处理将原始二维图像到三维环境的表示;
3.基于其输入什么就处理什么、目的总是恢复场景中物体的位置与形状、不足够重视高层知识的指导作用以及无反馈的不足,提出了改进。其实通俗来说就是:我们眼睛都是主动去看、主动去选、可根据我们的意识去判断与调整的反馈机制;
- 计算机视觉的研究内容
1.输入设备:各种探测成像的设备,例如:相机;
2.低层视觉:图像滤波、增强、边缘检测、角点检测等,我通常用opencv去实现这些效果;
3.中层视觉:立体视觉、测距成像、运动估计;一些2.5维的信息;
4.高层视觉:建立三维物体的完整图像、位置与方向;
5.体系架构:在高度抽象的层次上,根据系统模型而非实际设计的例子来研究系统的结构;书上举例说根据清朝时期的建筑风格和根据这种风格设计出来的具体建筑之间的区别。
- 计算机视觉的问题
1.多义性:图像是二维的丢失了深度信息,例如在不同角度拍摄同一物体图像差异很大,我们能理解其是一个物体是因为我们可以从触觉、视觉等不同角度感受这个物体,而对于计算机来说却是不可想象的;
2.环境因素:光源角度、方向、空气条件、物体颜色、相机的空间位置等都会对图像产生影响;就例如本篇博客开头“事件背景”中提到的非计算机视觉专业的人可能不会去考虑那么多,但是实际应用可能就是平台旁边的一扇窗户的开关都得考虑进去,可能就因为一扇窗户的开启,人眼看着没有区别的图像在计算机看来天差地别。
3.需要让计算机去理解自然景物需要大量的数据集,需要人员去标注,这就引出了深度学习。通俗来讲,计算机就是一个孩子,看的多了也就会了,一幅图像我告诉计算机其是什么,那实现的是分类,我需要计算机检测出其中某一物体在图像中的位置,首先需要大量的数据集进行标注也就是人工去画框框然后存成特定格式作为输入去训练模型,有训练集、测试集、验证集,就像考试刷题一样,做的多了就会了。
- 视觉应用
有摄像头的地方就可以做视觉检测,应用例如:三维重建、缺陷检测、机器人导航等。可以说视觉是一个很有发展前景的方向。
第二章 人类视觉

- 三基色学说:红、绿、蓝三种颜色组成其他颜色。这就是为啥彩色图像rgb三通道。
- 感受野:视网膜面上受到点状光源照射时每个神经元都有的响应区域。感受野越小,仅从有限的区域接受信号故空间分辨率高,反之则低。
- 视觉暂留:当帧率高于16fps时,人眼就认为是连贯的。(也就是1秒内播放16张图像以上)
- 视觉对比:由光刺激在空间上的分布不同所引起的视觉经验,分为明暗对比与颜色对比。
明暗对比:白盘子中找黑李子,黑盘子中找白米饭肯定比白盘子中找白米饭来得容易,但是注意这只是相对的,如果打了一束强光射到盘子上面,可能什么都看不到,故引出另外一点就是:物体的亮度不仅取决于其照明与其反射系数,环境亮度不同可产生不同的亮度感觉。
- 颜色对比:物体颜色会受到周围颜色的影响。简单来说就例如一个灰色物体在红色背景下呈绿色,黄色背景下呈蓝色,向着补色方向发展。
- 视错觉:看物体时,基于经验或是参照物不同造成的错觉。仔细观察下面的图片是不是在转动?


- 马赫带效应:如下图所示,在明暗交界处亮处更亮,暗处更暗。

- 赫尔曼格子错觉:如下图,是不是感觉后有黑色圆点闪烁?

第三章 光辐射与光源照明
- 了解什么是电磁波?什么是光辐射?
电磁波的频率范围广,涵盖宇宙射线到无线电波,电磁波按照波长列成可视化的图表即电磁波谱。
0.38~0.78μm波长的电磁波能引起人眼视觉感,此范围内的便称之为光辐射。
- 常见光源有什么?
1.热辐射光源(白炽灯、卤钨灯)
2.气体放电光源(汞灯、低压钠灯)
3.LED光源(磷化镓LED(加入锌和氧时发红光、锌和氮时发绿光)、砷化镓LED(可产生高频光束)、磷砷化镓LED(可制成发光颜色不同的LED))
4.激光光源(固体、气体、液体、半导体、光纤)
- 照明光源(对项目光源选择很重要)
1.环形光源:光线与相机光轴近乎平行,均衡、无闪烁、无阴影。例如工业显微、工件检测、电路板检测等;
2.低角度环形光源:光线与相机光轴近乎垂直,为反光物提供360°无反光照明,均匀,适用于微不平坦的表面。例如高反射材料表面、晶片玻璃划痕及污垢、刻印字符、圆形工件边缘、瓶口缺损检测等;
3.均匀背景光源:突出物体外形轮廓、低发热、光线均匀、无闪烁,适用于轮廓检测、尺寸测量、透明物体缺陷检测,如外形检测;
4.条形光源:适用于较大被检测物的表面照明,亮度与安装角度可调、均衡、无闪烁。例如:金属表面裂缝检测、胶片和纸片包装破损检测、定位标记检测等;超市中扫描条形码就使用条形光源;
5.碗状光源:具有积分效果的半球面内壁。均匀反射从底部36°发射出的光线,使整个图像的照度非常均匀。适用于透明物体内部或立体表面检测(玻璃瓶、滚珠、不平整表面、焊接检测、线缆检测等);
6.同轴光源:光线与相机光轴平行且同轴,可消除因物体表面不平整引起的阴影从而减少干扰。适用于反射度极高的物体(金属、玻璃、胶片、晶片等)表面划伤检测,如金属面划痕检测。
- 照明方式
- 照明颜色:使用互补色光线照射物体时可以使物体成像颜色趋近与黑色,可以增加对比度,更加便于区分。
第四章 光学成像与图像采集
- 镜头:由多个透镜、可变光圈和对焦环组成,相当于晶状体。
- 工作距离、视场、焦距与CCD芯片尺寸关系
第五章 图像基础
- 图像的产生:照射源+形成图像的场景元素对光能的反射或吸收相结合=图像
- 图像(记录方式不同):模拟图像(analog image)、数字图像(digital image)
- 简单来说,相机拍摄的图像是模拟图像,计算机需要处理数字图像,模拟图像通过采样(sampling)与量化(quantization)两种操作实现模拟图像转数字图像即数字化。
采样是啥?
一张照片经过采样后变成离散图像,采样点即像素,图像就是一个WxH的矩阵,W和H越大相当于图像分辨率越高、数据量越大、失真越小。这里简单写一个关于采样的程序,模拟采样的过程。
量化是啥?
将采样点亮度值离散化,即将亮度连续变化的区间转换成单个特定数码的过程。
- 均衡量化:原图像灰度层从最暗至最亮均匀分为有限个层次;
- 非均匀量化:即不均匀;
- 图像文件格式
| 文件格式 | 应用背景 | 数据压缩方式 |
|---|---|---|
| BMP | Windows | 改进的LZ77压缩法 |
| TIFF | 支持多平台与操作系统 | RLE |
| GIF | 网上图像在线传输 | RLE、Huffman、LZW(字典压缩)等 |
| JPEG | 存储照片图像 | RLE4、RLE8或不压缩 |
- 图像分类:
依据图像动与不动分为静止图像和运动图像;
依据图像维数可分为二维和三维;
依据图像辐射波长不同可分为X射线图、紫外线图、可见光图像、红外线图像、微波图像等;
依据图像的强度或颜色等级划分可分为二值图像、灰度图像、索引图像、RGB图像;
依据成像传感器类别划分,图像可分为电视图像、红外图像、雷达图像、超声图像、X射线、核磁共振图像。
- 彩色图像
红、绿、蓝为三基色。
这篇文章是今天无意间在草稿箱中发现的,还是我上学时候写的,转眼已经过去一年有余,好久没更新了,本来想着把他写完再更新,一看要写的东西太多了,包括后面如何对图像处理,原理是啥?怎么实现?对于才入门的小伙伴来说,看书肯定比看我在这唠嗑强,所以直接发布了。
相关文章:
我眼中的《视觉测量技术基础》
为什么会写这篇博客: 首先给大家说几点:看我的自我介绍对于学习这本书没有任何帮助,如果你是为了急切的想找一个视觉测量的解决方案那可以跳过自我介绍往下看或者换一篇博客看看,如果你是刚入门想学习计算机视觉的同学࿰…...
【Cisco Packet Tracer】管理方式,命令,接口trunk,VLAN
💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …...
深入协议栈了解TCP的三次握手、四次挥手、CLOSE-WAIT、TIME-WAIT。
TCP网络编程的代码网上很多,这里就不再赘述,简单用一个图展示一下tcp网络编程的流程: 1、深入connect、listen、accept系统调用,进一步理解TCP的三次握手 这三个函数都是系统调用,我们可以分为请求连接方和被…...
接口自动化测试系列-yml管理测试用例
项目源码 目录结构及项目介绍 整体目录结构,目录说明参考 测试用例结构类似httprunner写法,可参考demo 主要核心函数 用例读取转换json import yaml import main import os def yaml_r():curpath f{main.BASE_DIR}/quality_management_logic/ops_ne…...
开源对象存储系统minio部署配置与SpringBoot客户端整合访问
文章目录 1、MinIO安装部署1.1 下载 2、管理工具2.1、图形管理工具2.2、命令管理工具2.3、Java SDK管理工具 3、MinIO Server配置参数3.1、启动参数:3.2、环境变量3.3、Root验证参数 4、MinIO Client可用命令 官方介绍: MinIO 提供高性能、与S3 兼容的对…...
Matlab之数组字符串函数汇总
一、前言 在MATLAB中,数组字符串是指由字符组成的一维数组。字符串可以包含字母、数字、标点符号和空格等字符。MATLAB提供了一些函数和操作符来创建、访问和操作字符串数组。 二、字符串数组具体怎么使用? 1、使用单引号或双引号括起来的字符序列 例…...
基于深度学习网络的火灾检测算法matlab仿真
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ................................................................................ load F…...
【Linux】高级IO和多路转接 | select/poll/epoll
多路转接和高级IO 咳咳,写的时候出了点问题,标点符号全乱了(批量替换了几次),干脆就把全文的逗号和句号都改成英文的了(不然代码块里面的代码都是中文标点就跑不动了) 1.高级IO 1.1 五种IO模型…...
el-select 支持多选 搜索远程数据 组件抽取
el-select 支持多选 搜索远程数据 组件抽取 使用方式 import selectView from ./components/selectView<el-form><el-form-item label"选择器"><selectView v-model"selValue" change"handleChange"></el-form-item> …...
el-table纵向垂直表头
参考:https://www.jianshu.com/p/1f38eaffd070 <el-tablestyle"width: 100%":data"getValues":show-header"false"border:cell-style"cellStyle" ><el-table-columnv-for"(item, index) in getHeaders"…...
Pinyin4j介绍和简单使用
前言 Pinyin4j是一个Java库,用于将汉字转换为拼音。它是由中国清华大学的Tsinghua University和中国科学院计算技术研究所的研究人员开发的。Pinyin4j可以用于Java应用程序中,以便在需要时将汉字转换为拼音。例如,它可以用于中文输入法、文本…...
【数据结构】查找
【数据结构】查找 数据结构中,有顺序查找、二分查找、散列查找、插值查找、斐波那契额查找 1.顺序查找 条件:待查找的元素与数组中的元素按顺序排列。算法:从数组的第一个元素开始,逐个比较,直到找到目标元素或遍历完…...
第一次面试
1.多态的原理 2.编译原理 3.HTTPS的加密原理 4.说一说C11新特性 5.平时用过哪些STL容器 6.STL的比较器 原来就是自定义工具类hhhhhh 7.函数指针用过吗 8.I/O多路复用 9.Redis 问的基本都背过,但是一紧张啥都忘了hhhhhhhhh...
Nacos配置文件更新+热更新+多环境配置共享+集群搭建
对服务配置文件 场景: 如果多个服务对应的配置文件都需要更改时,可以利用配置管理,方便对配置文件进行更新,而且是在本地配置前先读取nacos的配置文件,优先级大于本地配置文件 配置步骤 1.首先在Nacos中的配置列表中增…...
李宏毅-机器学习hw4-self-attention结构-辨别600个speaker的身份
一、慢慢分析学习pytorch中的各个模块的参数含义、使用方法、功能: 1.encoder编码器中的nhead参数: self.encoder_layer nn.TransformerEncoderLayer( d_modeld_model, dim_feedforward256, nhead2) 所以说,这个nhead的意思,就…...
记一次使用NetworkManager管理Ubuntu网络无效问题分析
我们都知道CentOS、Redhat系列网络配置比较连贯,要么在/etc/sysconfig/network-scripts/ifcfg-网络设备名,文件中编辑后,重启网络服务;要么使用nmtui或者nmcli进行配置。但是,Ubuntu变动就比较大: 早期版本…...
Nginx重写功能
Nginx重写功能 一、Nginx常见模块二、访问路由location2.1location常用正则表达式2.2、location的分类2.3、location常用的匹配规则2.4、location优先级排列说明2.5、location示例2.6、location优先级总结2.7、实例2.7.1、location/{}与location/{}2.7.2、location/index.html{…...
王道考研计算机网络
文章目录 计算机网络体系结构计算机网络概述计算机网络的性能指标 计算机网络体系结构与参考模型错题 物理层通信基础基础概念奈奎斯特定理和香农定理编码与调制电路交换、报文交换和分组交换数据报与虚电路 传输介质物理层设备错题 数据链路层数据链路层的功能组帧差错控制检错…...
数据链路层重点协议-以太网
以太网简介 "以太网" 不是一种具体的网络,而是一种技术标准;既包含了数据链路层的内容,也包含了 一些物理层的内容。例如:规定了网络拓扑结构,访问控制方式,传输速率等; 以太网数据帧…...
学习计划
白驹过隙,转眼已是大二。新学期,新气象,新计划。 一、专业学习方面 学习vue、spring boot、redis、MybatisPlus、Elasticsearch、ssm框架,完成项目的编写,思考复盘。 二、读书方面 因为我大概率会走前端方向࿰…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...
Linux部署私有文件管理系统MinIO
最近需要用到一个文件管理服务,但是又不想花钱,所以就想着自己搭建一个,刚好我们用的一个开源框架已经集成了MinIO,所以就选了这个 我这边对文件服务性能要求不是太高,单机版就可以 安装非常简单,几个命令就…...
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10pip3.10) 一:前言二:安装编译依赖二:安装Python3.10三:安装PIP3.10四:安装Paddlepaddle基础框架4.1…...








