numpy 将 RGB 图像转换为 YIQ 颜色空间

2024-03-14

对于一个类,我需要将 RGB 图像转换为 YIQ。 我们被告知可以通过以下方式进行转换:

我开始编写一个带有循环的凌乱代码来进行矩阵乘法,然后我发现了一个函数

 skimage.color.yiq2rgb(imYIQ)

当我往里面看他们在做什么时,我看到了以下内容(我正在复制内容,这样会更清楚):

yiq_from_rgb = yiq_from_rgb = np.array([[0.299,      0.587,        0.114],
                                 [0.59590059, -0.27455667, -0.32134392],
                                 [0.21153661, -0.52273617, 0.31119955]])
return np.dot(arr, yiq_from_rgb.T.copy())

when arr只是 RGB 图片作为矩阵

我试图理解为什么这有效?他们为什么采用转置矩阵? (.T) 当arr形状与 yiq_from_rgb 不同?


在包含转换矩阵的参考图中,转换矩阵位于 RGB 通道的左侧。因此,对于 RGB 图像中的第一个像素,我们将其称为(p1r, p1g, p1b)分别对应R、G、B通道,我们需要与变换矩阵相乘并对结果求和,如下所示:

y1y = (0.299*p1r + 0.587*p1g + 0.114*p1b)
y1i = (0.596*p1r - 0.275*p1g - 0.321*p1b)
y1q = (0.212*p1r - 0.523*p1g + 0.311*p1b)

where (y1y,y1i,y1q)是舍入/取整后生成的 YIQ 图像中第一个像素的值int。我们对整个 RGB 图像中的所有像素进行相同类型的乘法,并获得所需的 YIQ 图像。

现在,因为他们使用了整个实现np.dot(arr, yiq_from_rgb.T),为了正确计算出权重,需要转置变换矩阵。和copy只是为了这种转换而有一个专用的转置变换矩阵。

另外,请注意,与您的数字相反,np.dot()RGB 数组位于变换矩阵的左侧。

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

numpy 将 RGB 图像转换为 YIQ 颜色空间 的相关文章

  • Python:多处理和请求

    以下是我正在运行的使用多处理并行触发 HTTP 请求的代码片段 在控制台上运行后 它挂在 requests get url 处 既不继续前进也不抛出错误 def echo 100 q print before r requests get
  • 如何配置散景图以具有响应宽度和固定高度

    我使用通过组件功能嵌入的散景 实际上我使用 plot sizing mode scale width 它根据宽度进行缩放并保持纵横比 但我想要一个响应宽度但固定或最大高度 这怎么可能实现呢 有stretch both and scale b
  • 刷新访问令牌时出现“invalid_grant”错误的情况?

    最近我一直在为这个问题揪心 一些背景 使用oauth2客户端 https code google com p google api python client 库来管理用户的令牌 这些令牌用于定期并发执行各种后台任务 每次要为用户运行其中一
  • Python中#和"""注释的区别

    开始用 Python 编程 我看到一些带有注释的脚本 and comments 这两种评论方式有什么区别 最好的事情就是阅读PEP 8 Python 代码风格指南 https www python org dev peps pep 0008
  • 使用 K 均值聚类 OpenCV 进行交通标志分割

    I used K Means Clustering to perform segmentation on this traffic sign as shown below 这些是我的代码 读取图像并模糊 img cv imread 000
  • Python3模拟用另一个函数替换函数

    如何使用 python 中的另一个函数来模拟一个函数 该函数也将提供一个模拟对象 我有类似以下操作的代码 def foo arg1 arg2 r bar arg1 does interesting things 我想替换的实现bar函数 让
  • 计算带状矩阵的 colCumsums 的更快替代方案

    我是 R 和 stats 的新手 在我当前工作的领域中 我需要以独特的方式计算累积列总和 最初提供宽度为 b 行数为 n 的方带矩阵 例如 n 8 且 b 3 0 1 2 7 0 0 0 0 0 0 3 6 7 0 0 0 0 0 0 3
  • 如何通过facebook-sdk python api获取用户帖子?

    我使用 facebook jssdk 授权我的应用程序读取用户个人资料和用户帖子 FB login function response scope user status user likes user photos user videos
  • 如何在 Numpy 中实现垃圾收集

    我有一个名为main py 它引用另一个文件Optimisers py它仅具有功能并用于for循环进入main py 这些函数都有不同的优化功能 This Optimisers py然后引用另外两个类似的文件 其中也只有函数 它们位于whi
  • 散景中的时间序列流

    我想在散景中绘制实时时间序列 我只想在每次更新时绘制新的数据点 我怎样才能做到这一点 散景网站上有一个动画情节的示例 但它每次都需要重新绘制整个图片 另外 我正在寻找一个简单的示例 我可以在其中逐点绘制时间序列的实时绘图 散景效果0 11
  • if/else 在 while 循环内正确缩进[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我开始学习 Python 编程大约几周了 我遇到了一些麻烦 下面的代码是一个小程序 用于检查列表中是否有偶数 如果找到第一个偶数
  • 写入 UDP 套接字会被阻塞吗?

    如果是的话 在什么条件下 或者 换句话说 在twisted 中运行此代码是否安全 class StatsdClient AbstractStatsdClient def init self host port super StatsdCli
  • 如何使用 python-gnupg 加密大型数据集而不占用所有内存?

    我的磁盘上有一个非常大的文本文件 假设它是 1 GB 或更多 还假设该文件中的数据有 n每 120 个字符一个字符 我在用python gnupg https pythonhosted org python gnupg 对此文件进行加密 由
  • 从 subprocess.Popen 获取整个输出

    我通过调用 subprocess Popen 得到了一个有点奇怪的结果 我怀疑这与我对 Python 的陌生有很大关系 args cscript USERPROFILE tools jslint js USERPROFILE tools j
  • Pandas - 分割大的Excel文件

    我有一个大约有 500 000 行的 Excel 文件 我想将其拆分为多个 Excel 文件 每个文件有 50 000 行 我想用熊猫来做 这样它会是最快和最简单的 有什么想法如何制作吗 感谢您的帮助 假设您的 Excel 文件只有一个 第
  • tweepy 流到 sqlite 数据库 - 语法错误[重复]

    这个问题在这里已经有答案了 可能的重复 tweepy 流到 sqlite 数据库 语法无效 https stackoverflow com questions 9434205 tweepy stream to sqlite database
  • 对 pandas 数据框中的每一列应用函数

    我如何以更多的熊猫方式编写以下函数 def calculate df columns mean self df means for column in df columns columns tolist cleaned data self
  • 升级后 pip 损坏

    我做了 pip install U easyinstall 然后 pip install U pip 来升级我的 pip 但是 当我尝试使用 pip 时 我现在收到此错误 root d8fb98fc3a66 which pip usr lo
  • 在没有numpy的情况下在python中分配变量NaN

    大多数语言都有一个 NaN 常量 您可以使用它为变量分配值 NaN python 可以在不使用 numpy 的情况下做到这一点吗 是的 使用math nan https docs python org 3 library math html
  • Python 中的 C 指针算术

    我正在尝试将一个简单的 C 程序转换为 Python 但由于我对 C 和 Python 都一无所知 这对我来说很困难 我被 C 指针困住了 有一个函数采用 unsigned long int 指针并将其值添加到 while 循环中的某些变量

随机推荐

  • 如何通过Python使用MySQL的AES_DECRYPT()实现

    我正在尝试编写一个具有相同功能的Python代码AES ENCRYPT and AES DECRYPTMySQL 的 https dev mysql com doc refman 5 6 ja encryption functions ht
  • Swift 4 从错误中获取错误代码

    我有一个定义为错误的变量 这就是我打印它时的样子 Optional Error Domain com apple LocalAuthentication Code 2 Canceled by user UserInfo NSLocalize
  • iOS 模拟器权限被拒绝并且不显示权限警报对话框

    我正在开发 iOS 模拟器 并且面临请求权限的问题 我的应用程序运行正常 可以访问照片库 相机和位置服务 但是安装新的 XCode 8 1 后 我在模拟器上运行该应用程序 该应用程序不再允许使用照片库或相机或位置服务 我尝试以编程方式请求权
  • 将文件路径拖放到 Java Swing JTextField

    Using 这个问题 https stackoverflow com questions 811248 how can i use drag and drop in swing to get file path 我创建了下面的类 它处理将文
  • 将图片读取为灰度numpy数组,并保存回来

    我尝试了以下操作 希望看到源图像的灰度版本 from PIL import Image import numpy as np img Image open img png convert L arr np array img getdata
  • Server.Transfer() 对比服务器.执行()

    我对调用页面 第一页 和调用者页面 新页面 的请求哪个更好或效果感到困惑 我注意到在这两种情况下 浏览器中的 URL 仍然是首页 URL 不会刷新到新页面 URL 因为浏览器没有被请求这样做 任何值得注意的评论 原文位于 Server Tr
  • 强制虚拟方法表中函数的顺序?

    如何控制虚拟表中虚拟函数的顺序 它们的排列顺序是否与声明的顺序相同 当继承带有虚表的类时 继承类的虚表是基类的扩展 还是仅用继承类的虚函数创建的全新虚表 即虚拟表仍然位于类的索引 0x0 处吗 a 就标准而言 你不能 事实上你甚至不能假设
  • Sql Server 2005插入查询中的单引号和双引号

    地址文本框中有单引号和双引号 如何插入数据库 我用的是SQL2005 我的代码如下 str exec sp cust reg customer Cust Id customer Cust Name customer Gender custo
  • Java 中的特殊字符 \0 {NULL}

    如何替换字符串中的 0 NUL String b 2012yyyy06mm sth what i want String c 2 0 0 0012yyyy06mm String d c replaceAll 0 not work Strin
  • 如何调试 Ionic WebApp?

    我想在 WebStorm 中调试我的离子应用程序 我可以在浏览器中运行该应用程序 但我该如何调试呢 我试过 ionic serve debug这似乎不会触发任何调试 当应用程序在浏览器中运行时 如何调试它 使用 Chrome 您可以输入铬
  • 无法在java servlet中获取会话

    我是第一次使用 servlet 但我取得了很大的进步 我的 servlet 运行良好 因此 我决定采用一种身份验证机制 如果用户提供正确的密码和 ID 则会创建一个会话 但会议对我来说是全新的 所以我不太明白这个逻辑 但我已经开始理解了 正
  • Android:如何将图像资源与R.drawable.imagename进行比较?

    我正在开发一个示例应用程序 其中我需要在 onClick 侦听器中获取图像视图的资源 并将其与我知道存在的图像源进行比较 如果资源相同 我想启动另一个意图 我现在面临的问题是访问 ImageView 及其资源 Id 整数 以与可绘制资源进行
  • 检测 jQuery UI 的可拖动功能悬停在什么上方

    我试图让拖动的元素检测它悬停在stopjQuery 的 UI 可拖动功能的事件 这是我的尝试 但没有成功 artwork draggable stop function e ui ui mouseover function f if f t
  • Swift 2:“Bool”无法转换为“BooleanLiteralConvertible”

    我创建了一个应用程序XCode 6 今天我下载了XCode 7它已将我的应用程序更新为Swift 2 错误有很多 但现在只有一个我无法解决 我不知道为什么 但是Xcode不喜欢任何Bool选项animated并显示此错误 Bool 不能转换
  • FindByIdentity 在 ASP.NET Web 应用程序中失败并出现 PrcipalOperationException

    我在内部 Web 应用程序中使用 System DirectoryServices AccountManagement 时遇到问题 该错误不是很具有描述性 但发生的情况如下 当我尝试验证 AD 中是否存在提供的用户 ID 时 我使用以下代码
  • JAXB 异常:此上下文未知类

    当我调用一个特定的静态服务方法时 该方法是使用CXF 我收到以下错误 有人知道为什么以及如何解决它吗 发生 JAXBException 类 com octory ws dto 配置文件Dto也没有任何 其超类的已知 语境 服务方法及相关DT
  • JPA CriteriaBuilder 将合取条件转换为析取条件

    我需要将此查询复制到JPA 标准生成器 code where article client id 1 and article price gt 0 and article code like this is statement or art
  • Windows批处理:睡眠[重复]

    这个问题在这里已经有答案了 如何让 Windows 批处理脚本等待几秒钟 sleep and wait似乎不起作用 无法识别的命令 你可以试试 ping n XXX 127 0 0 1 gt nul 其中 XXX 是等待的秒数加一
  • JPA CriteriaQuery 计算用于 where 谓词的日期时间差

    我正在尝试从数据库中选择两个字段之间的时间差小于或大于某个值的实体 在标准 SQL 中 这可以使用 TIMESTAMPDIFF 函数简单地完成 SELECT from run where TIMESTAMPDIFF SECOND run e
  • numpy 将 RGB 图像转换为 YIQ 颜色空间

    对于一个类 我需要将 RGB 图像转换为 YIQ 我们被告知可以通过以下方式进行转换 我开始编写一个带有循环的凌乱代码来进行矩阵乘法 然后我发现了一个函数 skimage color yiq2rgb imYIQ 当我往里面看他们在做什么时