计算机视觉基础——数字图像与颜色空间

2023-11-14

欢迎大家关注微信公众号:baihuaML白话机器学习

码字不易,如转载请私信我!!

在这里,我们一起分享AI的故事。

您可以在后台留言,关于机器学习、深度学习的问题,我们会选择其中的优质问题进行回答!



Hello,大家好。白话机器学习新的一个专题又开始了。在本次专题中,我们呼应“白话”这个概念,为大家科普一些简单的计算机视觉的概念,帮助大家扫盲~~~

今天我们首先聊一聊——数字图像与颜色空间。

我们经常会说做算法其实也是在玩数学,很大的原因就是我们需要将想要分析的对象转化为数字,然后再对数字中存在的规律进行分析。而在计算视觉任务中,我们主要处理的对象就是图像数据。

图像是指使用各种观测系统以不同形式和手段观测客观世界而获得的,可以直接或间接作用于人眼并进而产生视觉的实体。包括:1)各类图片,如普通照片、X光片、遥感图片;2)各类光学图像,如电影、电视画面;3)客观世界在人们心目中的有形想象以及外部描述,如绘画、绘图等。
为了对图像数据进行更好的分析,我们会采用计算机来对其进行进一步的加工处理,也就是离散化、数字化,进而得到了数字图像。
 

 


其中,图像中每个基本单元叫做图像的元素,简称像素(Pixel)。

数字图像处理(Digital Image Processing):是指应用计算机来合成、变换已有的数字图像,从而产生一种新的效果,并把加工处理后的图像重新输出,这个过程称为数字图像处理。也称之为计算机图像处理(Computer Image Processing)。

我们在后续的章节中,会陆续介绍一系列数字图像处理的技术。在介绍具体数据之前,我们需要进一步了解数字图像中的数据结构。

对于一张彩色数字图片,我们通常会将它表成一个H×W×C的3维矩阵。其中,H表示图片的宽,W表示图片的高,C表示图片的通道数。H×W描述的就是图片的分辨率,也就是像素点的个数。对于每一个像素点,都会表示一个颜色,用一个C维的向量描述。

我们重点聊一聊这个C。

在上文中,我们讲了C是通道数。实际上,C还有另一个重要的意思,就是可以描述不同的颜色空间。而在不同的颜色空间下,C的不同维度也表达了不同含义,换句话说:我们通过赋予C的不同维度不同的含义,用来描述不同的颜色空间。

色彩空间


色彩是人的眼睛对于不同频率的光线的不同感受,色彩既是客观存在的(不同频率的光)又是主观感知的,有认识差异。“色彩空间”一词源于西方的“Color Space”,又称作“色域”,色彩学中,人们建立了多种色彩模型,以一维、二维、三维甚至四维空间坐标来表示某一色彩,这种坐标系统所能定义的色彩范围即色彩空间。我们经常用到的色彩空间主要有RGB、CMYK、Lab、HSV等。


那色彩空间和图片数据又是什么关系呢?


实际上,C也就是channel的含义,取决于当前图片数据所表示的色彩空间,而图像数据具体的值则表示了在对应色彩空间中的取值。

以RGB色彩空间为例:
对于H×W的彩色图像,在RGB空间,C取值为3,对应的三个通道则分别表示R、G、B(红,绿,蓝),这三种颜色也被称为了三基色。通过三基色,可以构成非常丰富的彩色空间。
 



比如,我们在使用PS中的拾色器时候,会看到对应像素点的RGB通道上的值
 



对于视觉系统,我们感知到的图像中的每一个像素点都会有一个颜色,在RGB色彩空间中,这个颜色我们表示为(R,G,B)。其中,RGB的取值范围都是在0~255之间。比如,我们如果看到一个像素点颜色为红色,则对应的图像矩阵上的值则为(255,0,0),如果为绿色,则对应的图像矩阵上的值为(0,255,0),蓝色则对应到(0,0,255)。其他颜色则同样由(R,G,B)上不同取值决定。比如:WEB标准颜色https://baike.baidu.com/item/WEB%E6%A0%87%E5%87%86%E9%A2%9C%E8%89%B2/10874354?fr=aladdin



讲到这里,大家应该可以想到,对于一张H×W的彩色图像,图像矩阵实际上就是由H×W个(R,G,B)这样的向量组成,也就是一个3维的矩阵,其中(R,G,B)对应到了第三维上的取值。

具体在python-opencv中,表示h*w大小的三通道图像的示意图如下:
 



使用OpenCV读取并打印高宽为3*4三通道的RGB彩色图片,代码如下:

# -*- coding: utf-8 -*-
import cv2
img=cv2.imread('3.png',1)#返回RGB彩色图像
print(img) #打印代表灰度图像的3维矩阵

打印结果:

 


快来关注我们啦~

一大波实习,招聘机会也陆续出现!为了大家能够更好地交流。我们也拉了几个算法面试群,感兴趣的小伙伴可以加我微信,欢迎入群~注明:面试群。另外,我们也有算法群,欢迎各位加入,注明:算法群!扫码加下面微信好友!特别提醒:不要骚扰小姐姐~~

 

欢迎加入深度学习、机器学习技术研讨群!

966164090

 

欢迎关注我们的微信公众号:baihuaML,白话机器学习

关注知乎“会写代码的好厨师”

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算机视觉基础——数字图像与颜色空间 的相关文章

  • 在谷歌C​​olab中使用cv2.imshow()

    我正在尝试通过输入视频来对视频进行对象检测 cap cv2 VideoCapture video3 mp4 在处理部分之后 我想使用实时对象检测来显示视频 while True ret image np cap read Expand di
  • 安装 gstreamer 对 opencv python 包的支持

    我已经从源代码构建了自己的 opencv python 包 import cv2 print cv2 version 打印 3 4 5 现在我面临的问题是关于 opencv 的 VideoCapture 类中的 gstreamer 的使用
  • 从 PyCharm IDE 运行 Django 项目时出现“ImportError:没有名为 cv2 的模块”

    我正在从 PyCharm 运行一个 Django 项目 其配置设置为使用 virtualenv 中的 Python 解释器 该解释器依赖于 opencv 当我运行时 该网站在本地运行良好django admin py runserver 但
  • Opencv中内存Mat表示

    我知道在内存中opencv将Mat对象表示为一个大数组 因此 如果我有 3 个尺寸为 200x200 的通道垫 那么在内存中它将将该垫存储在尺寸为 3x200x200 的数组中 或者更一般地说 内存中的任何 Mat 都将存储为channel
  • Opencv - Features2D + 单应性不正确的结果

    我在将检测到的物体的轮廓放置在正确的位置时遇到了一些问题 就好像坐标位于错误的位置一样 我将粗麻布设置为 2000 并过滤了小于最小距离 3 倍的匹配 任何帮助 将不胜感激 运行匹配和单应性的结果 代码示例如下 public static
  • 使用 openCV 锐化视频图像

    我想使用 OpenCV 锐化我的图像 我在网上查看了一个示例 该示例正在对灰度图像执行锐化 我尝试了它 它工作得很好 然而 我现在尝试做同样的事情 但使用 RGB 颜色 所以我分别在三个通道上执行相同的功能 但它没有给我任何结果 图像与原始
  • 在 python + openCV 中使用网络摄像头的问题

    我正在使用以下代码使用 openCV python 访问我的网络摄像头 import cv cv NamedWindow webcam feed cv CV WINDOW AUTOSIZE cam cv CaptureFromCAM 1 然
  • 针对不同相机(RGB 和红外)的 StereoCalibrate

    我在校准两个摄像头时遇到问题 第一个是 RGB 第二个是红外 它们有不同的分辨率 我调整了大小并裁剪了更大的图像 焦距等等 例子 RGB 1920x1080 Infrared 512x424 如何相互校准它们 我应该在stereoCalib
  • 附加信息:OpenCV:使用 c# 的不同大小的对象

    目前 我的 EmguCV c 代码面临问题 我试图从数据库中识别我的图像 但它不起作用 一旦检测到我的脸 它就会崩溃 然后会出现此错误 附加信息 OpenCV 不同大小的对象 我尝试寻找这个错误 但我一无所知 这是我的代码 Action f
  • 用于 C++ 中图像分析的 OpenCV 二进制图像掩模

    我正在尝试分析一些图像 这些图像的外部周围有很多噪声 但内部有一个清晰的圆形中心 中心是我感兴趣的部分 但外部噪声正在影响我对图像的二进制阈值处理 为了忽略噪音 我尝试设置一个已知中心位置和半径的圆形蒙版 从而使该圆之外的所有像素都更改为黑
  • OpenCV:使用 StereoCamera 系统对颜色标记进行 3D 姿态估计

    我有一个立体摄像系统并使用两者正确校准它 cv calibrateCamera and cv stereoCalibrate My reprojection error似乎没问题 凸轮0 0 401427 凸轮1 0 388200 立体声
  • Opencv - 找不到头文件

    我正在尝试使用 opencv 开始开发 问题是 到目前为止我几乎无法设置 opencv 因为我找不到它的头文件 我对此主题进行了一些研究 但没有一个真正有帮助 下面是一些链接 opencv2 包含文件在哪里 https stackoverf
  • OpenCV 完美识别物体

    我有一个应用程序 我想一次跟踪 2 个在图片中相当小的对象 该应用程序应该在 Android 和 iPhone 上运行 因此算法应该是高效的 对于我的客户来说 如果我们提供一些模式以及附加到要跟踪的对象的软件 以获得易于识别的目标 那就完全
  • 将线性数组转换为二维矩阵

    我有一个浮点指针 数组 它代表一个图像 它的元素计数和索引具有宽度 高度 图像不像矩阵 其原点位于左上角 相反 它的原点位于左下角 就像在笛卡尔坐标系中一样 达到最大宽度后 它从左侧开始下一行 所以我想有效地将 这个数组转换为二维矩阵 可选
  • OpenCV:如何使用图像计算相机和物体之间的距离?

    我是 OpenCV 的新手 我正在使用以下公式来计算距离 distance to object mm focal length mm real height of the object mm image height pixels obje
  • 如何在 OpenCV 中将 Float Mat 写入文件

    我有一个矩阵 Mat B 480 640 CV 32FC1 包含浮点值 我想将此矩阵写入一个可以打开的文件Notepad https en wikipedia org wiki Windows Notepad or 微软Word https
  • GrabCut - bgdModel 和 fgdModel 为空 - 断言错误

    我正在尝试使用 OpenCV2 1 C 中的 GrabCut 算法进行图像分割 这是我的代码 Mat rgbWorkImage imread argv 1 Mat mask mask Scalar 0 Mat bgdModel fgdMod
  • 将yuv420p原始数据转换为opencv图像

    我有来自 rtmp 服务器的原始数据 像素格式为 yuv420p 我使用管道来读取数据 但我不知道如何将原始数据解码为图像 command ffmpeg command extend loglevel fatal i rtmp localh
  • 在OpenCV中将YUV转换为BGR或RGB

    我有一个电视采集卡 其输入内容为 YUV 格式 我在这里看到了与此问题类似的其他帖子 并尝试尝试所述的所有可能的方法 但它们都没有提供清晰的图像 目前最好的结果是 OpenCVcvCvtColor scr dst CV YUV2BGR 函数
  • 使用opencv+picamera流IO用树莓派捕获视频

    我使用 Raspberry 来简单地显示一个视频 目前仅此 为此 我必须使用 opencv cv2 我尝试了很多解决方案 但现在我想使用 Picamera 库捕获视频 我将向您展示我的代码 import io import time imp

随机推荐

  • 私人网站域名服务器公安备案指南【网站备案】

    今天收到了工信部的审核通过短信 你的服务器要想使用域名解析 其中一个要求就是服务器要有备案 很开心 但 事情没那么简单 要求你30天内进行公安备案 我打开谷歌网址 开始了我的坎坷备案之旅 一天下午 加一天晚上 第二天下午
  • vue —— 路由 replace

    作用 控制路由跳转时操作浏览器历史记录的模式 2 浏览器的历史记录有两种方式 分别为 push 和 replace push是追加历史记录 replace是替换当前记录 路由跳转的时候默认 push 3 开启replace模式
  • CPU使用率和负载Load计算方法

    2019独角兽企业重金招聘Python工程师标准 gt gt gt Loadavg分析 Loadavg浅述 cat proc loadavg 可以看到当前系统的load cat proc loadavg 0 01 0 02 0 05 2 3
  • 判断两条线段是否相交(C++)

    背景 在做51nod上的第1951题时 需要根据给出的两条线段来判断这两条线段是否相交 所以在这里记录一下 判断两条线段是否相交有两步 快速排斥计算 跨立计算 快速排斥 给出线条AB CD 如果以AB CD为对角线的矩形不相交 那么AB C
  • mysql5.5安装最后卡主_在MySQL5.5版本时安装到最后一步卡死的解决办法

    今天给老师安装mysql 5 5 版本时出了问题 老师的电脑为windows7 mysql安装版本为mysql 5 5 安装到最后一步 mysql实例配置最后一步卡死了 安装了多次也没有方法 百度了许多方法 比如删除注册表 删除某些主要文件
  • 量化交易项目怎么做

    同学们前面两期量化交易内容 Python量化交易入门 量化交易的历史 文章目录 学习目标 1 量化交易研究流程 1 1 分析结果 1 2 什么是策略 1 3 流程包含的内容 二 量化开发和研究岗位的要求 学习目标 1 说明量化交易的研究流程
  • SourceTree 解決冲突 Please commit your changes or stash them before you merge.

    目录 本机环境 通过 Sourcetree 拉取代码时提示冲突信息 一 本机环境 本机系统 Mac git 2 24 1 git version 查看 二 通过 Sourcetree 拉取代码时提示冲突信息 原因 同分支下 其他伙伴修改的
  • @SpringBootApplication失效问题

    SpringBootApplication的默认扫描范围 在练习springsecurity中 突然发现spring的自动配置失效 需要手动的在主应用程序类添加 ComponentScan才可以扫描到 然后排查发现idea自动在根路径创建一
  • 提示工程师指南4-ChatGPT Prompt Engineering

    ChatGPT Prompt Engineering 在这个部分 我们将介绍 ChatGPT 的最新提示工程技术 包括技巧 应用 限制 论文和额外的阅读材料 主题 与 ChatGPT 对话 Python 笔记本 请注意 本部分正在紧密开发中
  • java中的service层,dao层,controller层的理解

    基本概念 DAO层 DAO层叫数据访问层 属于一种比较底层 比较基础的操作 具体到对于某个表的增删改查 也就是说某个DAO一定是和数据库的某一张表一一对应的 其中封装了增删改查基本操作 Service层 Service层叫服务层 被称为服务
  • WORD文档误删除、误清空等恢复的几种方法

    前因 word中保存了近一个星期的读书笔记 设置了自动保存 也会习惯性的CTRL S手动保存 但前天word不知怎么就挂了 再打开时写的文档已经不在本地文件夹了 当时就傻眼了 刚开始只好认栽就打算重新录一遍吧 但越想越觉得浪费时间 觉得肯定
  • Python 中的异常处理

    异常的原因通常在程序本身之外 例如 不正确的输入 输入输出设备故障等 由于程序在遇到异常时会突然终止 因此可能会对系统资源 如文件 造成损害 因此 应该正确处理异常 以防止程序突然终止 Python 使用try和except关键字来处理异常
  • 牛客网刷题-两数之和

    问题描述 给出一个整数数组 请在数组中找出两个加起来等于目标值的数 你给出的函数twoSum 需要返回这两个数字的下标 index1 index2 需要满足 index1 小于index2 注意 下标是从1开始的 假设给出的数组中只存在唯一
  • 哈希表【散列表】详解

    哈希表 hash 一 哈希表的插入及查询 hash表是一种数据结构 又称为散列表 其根本的原理就是把一个数变成另外一个易于存储的数 先来看一道例题吧 假如有n个数 n的范围只有10万 但是每个数的大小有1e9 怎么做才能统计每个数出现的次数
  • Windows系统中的Linux系统设置固定IP

    当前虚拟机的Linux操作系统 其IP地址是通过DHCP服务获得的 DHCP 动态获取IP地址 即每次重启设备都会获取一次 可能导致IP地址频繁变更 在VMware Workstation 或Fusion 中配置IP地址网关和网段 IP地址
  • 端口转发&&映射详解、代理&&反向代理深入认知

    端口转发 端口映射 端口转发和端口映射都是为了解决内网主机的端口无法在外部直接访问而衍生出来的技术 通过中间服务器进行中转 将内部的端口映射到公网IP上或者将内部端口转发到外部服务器 供用户或者自己来使用 端口转发 概念 端口转发 Port
  • 抖音去水印最新php方法代码

    输出正常JSON param string 提示信息 param array 输出数据 return json function jok msg success data null header content application js
  • UCI常用说明

    UCI常用函数说明 结构体 API函数 参考文章 安装完成后在 加粗样式 usr local include 目录下存放UCI h文件可以进行参考 结构体 1 struct uci package 包结构体 它对应一个配置文件内容 stru
  • unity-使用UGUI实现游戏开始、结束的设计

    开始界面 结束界面的制作 在场景中 新建一个canvas 在canvas中新建一个image作为背景图 可以通过Inspector界面 设置好image的相关属性 设置好背景之后 在场景中添加Button 根据个人需要 设置好Button的
  • 计算机视觉基础——数字图像与颜色空间

    欢迎大家关注微信公众号 baihuaML 白话机器学习 码字不易 如转载请私信我 在这里 我们一起分享AI的故事 您可以在后台留言 关于机器学习 深度学习的问题 我们会选择其中的优质问题进行回答 Hello 大家好 白话机器学习新的一个专题