3D机器视觉【1】图像形成、颜色模型
创始人
2025-05-29 11:46:16

第一、图像形成模型

图像形成的简单模型如上图,f(x,y)表示图像的亮度、它和入射分量 i ,以及和物体表面的反射分量 r 这两个因素有关系;i 取决于照射源,而 r 主要和物体表面的反射系数或者叫投射系数有关,r 通常的取值范围是0到1的区间,以上是最简单的图像生成模型。

还有一个常用的平行光源模型,此模型会考虑光源的方向,还有物体表面的法线方向。如上图,点p表示物体上表面的一个点,n'p表示的是点p的法线方向;cam表示的是摄像机,平行光源方向用V'p表示;上图公式I'kp表示通过摄像机观察物体表面p点的图像的亮度,这个亮度和以下几个方面有关:

  • 光源的亮度E'k,正比关系。

  • 物体表面的反射率 r,成正比。

  • 物体表面法线方向 与 光源方向的夹角,表示向量n'p和V'p的点积,如果这两个向量垂直,那这个图像的亮度就是0了。

以上是简单的平行光源模型的介绍,明显看到是此模型是在简单模型的基础上,增加了物体表面法线和光源的计算。

最后介绍点光源的模型。在平行光源模型里,光的方向是固定唯一的,而点光源和平行光不同,它到物体表面的每一个点都有一个独特唯一的方向。这里用 I'sx表示从光源s指向物体表面x的光源方向,在点光源的模型里面,物体表面的亮度o,一样和光源亮度E、物体表面反射率r成正比,物体表面法线与光源方向夹角的点积成正比,然后这里增加了光源到物体表面的方向求模的操作,其实是计算光源到物体的距离,距离值再求3次方。o与此值成反比关系,主要的意思是表达了光线亮度随距离的衰减。

此模型在光线立体视觉里会经常用到,而且点光源不唯一,每个点光源对物体表面亮度的计算互不影响。

第二、颜色模型

最简单的一种颜色模型,也是最常用的颜色模型,就是这个RGB颜色模型。共有红色R绿色G蓝色B这三个分量,这三个通道的颜色模型,可以用一个类似三维笛卡尔坐标系的立方体来表示它。每个通道用24bit表示可以形成一个彩色的立方体,这个彩色立方体的每一个点都代表一种颜色值,总共可以表示256的三次方种颜色值。RGB颜色模型在图像显示,图像打印这些应用的时候是用得最多的。

而在图像分析图像识别中,可能更多是用HSI颜色模型。从RGB模型可以直接推到转换到HSI模型。转换过程可以这样简单理解:

  • 首先可以把RGB模型的立方体进行一个旋转,把白点(255,255,255)放置顶端,黑点(0,0,0)放底端。(类似把一个魔方用一个顶点的方式竖起来)白点与黑点的连线和水平面垂直。

  • 旋转之后从上往下看,可以看到一个正六边形,如上图右1。然后 过随意一个立方体内的颜色值点,如(10,20,30) 与黑白连线垂直 截取这个立方体,得出一个平面。这个平面要不是六边形,要不就是三角形,有了这个平面多边形以后,就可以得出 色调 和 饱和度。

  • 色调H:作中心点过红色点的延长线为基准,沿着多边形的包围圈逆时针旋转至指定颜色值的位置,旋转所需的角度就是该颜色的色调

  • 饱和度S:多边形中心点到指定颜色值的距离,做归一化的长度,就是该颜色的饱和度

  • 强度 I:以所在的多边形平面,与 黑白点连线垂直过黑点的平面,两个平面的垂直距离,就是该颜色的强度。

那么有了RGB,可以直接通过以上公式得到HSI模型对应的数据值。

上图給出了RGB和HSI各分量的可视化比对图。

  • 色调是从红轴开始作为起始点。RGB图像中红色块,对应色调图中就是0值(纯黑色)。

  • 再看饱和度图,比对RGB图中的色块都是六边形的顶点值,归一化长度都是1,而白色点与中心点重合,所以饱和度为0。

  • 而在强度图里面,对应RGB图像当中的白色(255,255,255)位于整个HSI模型的最顶点,距离最大为1,其余三基色位于同一平面,与黑色底点距离一样,所以强度也一样。

那么有了HSI模型,可以基于强度I列出一幅图像中的强度值矩阵列,这就是简称 灰度图。注意矩阵坐标与传统的笛卡尔坐标系的区别,Y是方向的。

还可以已知HSI,可以通过以上数学关系转换为RGB模型中的数据。

篇外、灰度等级、对比度、亮度

介绍过HSI(色调、饱和度、强度)颜色模型,这里再提及几个名词定义。

  • 对比度其定义是指一幅数字图像当中,灰度反差的大小。

  • 亮度其定义是指一幅数字图像中像素的均值。

  • 灰度等级是指一幅数字图像当中,灰度值的范围。这可以是不受限制的256个等级(24bit [0,255]),也可以是阶梯式的125个等级(0~2的灰度归为一个相同的灰度)如此类推。

下一章会更详细的介绍图像灰度和亮度,以及相关变换是如何操作的。

相关内容

热门资讯

鸟哥的Linux私房菜 She... 第十二章、学习 Shell Scripts https://linux.vbird.org/linu...
2分钟快速了解!全网最详细的性...  目录:导读 Redis 简介 Redis 优势 Redis与其他key-value存...
设计模式-02 4,创建型模式 4.2 工厂模式 4.2.1 概述 需求:设计一个咖啡店...
纠错码中的汉明码,NAND F...      纠错码是一种用在不可靠的或者噪音比较大的通信信道中用来控制数据传输错误的技术。这种技术的核...
【Java】P14 面向对象(... 类的封装性封装性高内聚与低耦合何为封装性如何封装get 与 set 方法案例 封装性 高内聚与低耦...
【FPGA】Xilinx Co... 功能描述 1、Rotate Rotate 实现的功能是坐标的旋转。 输入 X, Y, Phase 输...
【Pytorch】使用Pyto... 文章目录1. 题目描述2. 代码实现验证写在最后 1. 题目描述 在这个例子中网络结构如下所示&#...
client-go disco... 1. 概述 discovery包主要用来发现服务器支持的API组、版本和资源的方法,及...
[LeetCode周赛复盘] ... [LeetCode周赛复盘] 第 100 场双周赛20230318 一、本周周赛总结二、 [Easy...
Matlab基础教学入门 Matlab是一种非常强大的数学计算工具,广泛应用于科学和工程领域。本篇文章将介绍一些...
设计模式-02 4,创建型模式 4.2 工厂模式 4.2.1 概述 需求:设计一个咖啡店...
条款21:优先考虑使用std:... 让我们先对std::make_unique和std::make_shared做个铺垫。std::ma...
Leetcode 第四天 动态... 来源:力扣(LeetCode) 链接:htt...
MongoDB用户管理授权 文章目录1 角色类型2 注意事项3 给单个数据库授权4 给一个用户授权多个数据库5 其它命令 1 角...
下载、安装JDK、sublim... 直接官网下载,jdk8或者jdk11。配置环境变量:如果不配置环境变量&...
算法的时间复杂度介绍 本文主要算法时间复杂度的相关知识。1 概述算法(Algorithm)是指...
编码方式概括 1.三种码表1.iso8859-1码表:是一种8位的单字节编码方式。它可以表示256个...
YOLOv5源码逐行超详细注释... 前言  本篇文章主要是对YOLOv5项目的验证部分。这个文件之前是叫test.py,后...
centos docker 安... 1、首先安装docker 下面是一键安装脚本 curl -fsSL https://get.dock...
线上操作规范 1.目的    1)为了避免测试线上随意操作给客户造成损失   2)为了...
查找算法之费氏搜寻法 给定一个大小为n的排序数组arr[],并在其中搜索一个元素x。如果x在数组中ÿ...
cv2报错:Unsupport... cv2 报错 error: OpenCV(4.6.0) /io/opencv/modules/img...
DVWA_xss 反射型xsslow直接在输入框输入提前准备的代码,就可以得到回显cookie信息 Me...
音视频开发编程技术(二):音频... 1. 音频简介   上一节讲过,视频的帧率即每秒钟采集多少张图片的概念。同理ÿ...
【Java学习笔记】33.Ja... 前言 本章介绍Java的HashSet及HashMap。 Java HashSet HashSet ...
RabbitMQ基础介绍及同步... 一、同步通讯与异步通讯 大多数情况下会使用同步,对并发没有很高的要求,但...
面试官:整理了一些react的... 请解释一下React生命周期。它们各自的作用是什么? React生命周期是指组件从创建...
【C++进阶】AVL树的实现 文章目录AVL树概念AVL树性质AVL树节点的结构AVL树的插入插入新节点更新整体节点的平衡因子旋转...
缺失的第一个正整数:给定一个未... 给定一个未排序的整数数组,找出其中未出现的最小正整数。 (本文获得CSDN质量评分...
[架构之路-141]-《软考-... 前言:如何“从无到有”设计一个企业信息系统?本文将探索这个话题。第1章 ...