将 YCbCr 颜色空间映射到 RGB

2023-11-27

我正在尝试使用 python 进行 JPEG 压缩。我加载 tiff 图像并将其存储为 numpy uint8 RGB 数组。我这样做是为了颜色映射。

def rgb2ycbcr(im):
    cbcr = np.empty_like(im)
    r = im[:,:,0]
    g = im[:,:,1]
    b = im[:,:,2]
    # Y
    cbcr[:,:,0] = .299 * r + .587 * g + .114 * b
    # Cb
    cbcr[:,:,1] = 128 - .169 * r - .331 * g + .5 * b
    # Cr
    cbcr[:,:,2] = 128 + .5 * r - .419 * g - .081 * b
    return np.uint8(cbcr)

def ycbcr2rgb(im):
    rgb = np.empty_like(im)
    y   = im[:,:,0]
    cb  = im[:,:,1] - 128
    cr  = im[:,:,2] - 128
    # R
    rgb[:,:,0] = y + 1.402 * cr
    # G
    rgb[:,:,1] = y - .34414 * cb - .71414 * cr
    # B
    rgb[:,:,2] = y + 1.772 * cb
    return np.uint8(rgb)

我做了一个简单的 RGB 到 YCbCr 转换,然后进行了逆变换。

img = rgb2ycbcr(img)
imshow(img)
img = ycbcr2rgb(img)
imshow(img)

I got these two output image as YCbCr and RGB output after the color space transformation. YCbCr RGB

我的颜色转换似乎出了问题,但我无法弄清楚出了什么问题。我使用的是 JPEG 颜色空间转换维基百科。谢谢你的帮助。


您必须以浮点形式进行中间计算。海报化应该给你提示;你有很多“热”(饱和)像素。

def rgb2ycbcr(im):
    xform = np.array([[.299, .587, .114], [-.1687, -.3313, .5], [.5, -.4187, -.0813]])
    ycbcr = im.dot(xform.T)
    ycbcr[:,:,[1,2]] += 128
    return np.uint8(ycbcr)

def ycbcr2rgb(im):
    xform = np.array([[1, 0, 1.402], [1, -0.34414, -.71414], [1, 1.772, 0]])
    rgb = im.astype(np.float)
    rgb[:,:,[1,2]] -= 128
    rgb = rgb.dot(xform.T)
    np.putmask(rgb, rgb > 255, 255)
    np.putmask(rgb, rgb < 0, 0)
    return np.uint8(rgb)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 YCbCr 颜色空间映射到 RGB 的相关文章

  • 如何在 AWS CDK 创建的 Python Lambda 函数中安装外部模块?

    我在 Cloud9 中使用 Python AWS CDK 并且我部署简单的 Lambda 函数那应该是发送 API 请求到 Atlassian 的 API当对象上传到 S3 存储桶时 也是由 CDK 创建的 这是我的 CDK 堆栈代码 fr
  • python 中的代表

    我实现了这个简短的示例来尝试演示一个简单的委托模式 我的问题是 这看起来我已经理解了委托吗 class Handler def init self parent None self parent parent def Handle self
  • 将数据帧行转换为字典

    我有像下面的示例数据这样的数据帧 我正在尝试将数据帧中的一行转换为类似于下面所需输出的字典 但是当我使用 to dict 时 我得到了索引和列值 有谁知道如何将行转换为像所需输出那样的字典 任何提示都非常感激 Sample data pri
  • Pandas 中允许重复列

    我将一个大的 CSV 包含股票财务数据 文件分割成更小的块 CSV 文件的格式不同 像 Excel 数据透视表之类的东西 第一列的前几行包含一些标题 公司名称 ID 等在以下列中重复 因为一家公司有多个属性 而不是一家公司只有一栏 在前几行
  • Pandas 数据帧到 numpy 数组 [重复]

    这个问题在这里已经有答案了 我对 Python 很陌生 经验也很少 我已经设法通过复制 粘贴和替换我拥有的数据来使一些代码正常工作 但是我一直在寻找如何从数据框中选择数据 但无法理解这些示例并替换我自己的数据 总体目标 如果有人真的可以帮助
  • 使用 Python pandas 计算调整后的成本基础(股票买入/卖出的投资组合分析)

    我正在尝试对我的交易进行投资组合分析 并尝试计算调整后的成本基础价格 我几乎尝试了一切 但似乎没有任何效果 我能够计算调整后的数量 但无法获得调整后的购买价格有人可以帮忙吗 这是示例交易日志原始数据 import pandas as pd
  • 在Python中调整图像大小

    我有一张尺寸为 288 352 的图像 我想将其大小调整为 160 240 我尝试了以下代码 im imread abc png img im resize 160 240 Image ANTIALIAS 但它给出了一个错误TypeErro
  • 为什么在 Python 2.4 中使用 Unicode 数据会出现 ASCII 编码错误,而在 2.7 中却不会?

    我有一个程序 当在 Python 2 7 中运行时 会生成正确的 Unicode 输出到标准输出 当在 Python 2 4 中运行时 我得到UnicodeEncodeError ascii codec can t encode chara
  • 如何从Python中的字符串中提取变量名称和值

    我有一根绳子 data var1 id 12345 name John White python中有没有办法将var1提取为python变量 更具体地说 我对字典变量感兴趣 这样我就可以获得变量的值 id和name python 这是由提供
  • 如何设置 Celery 来调用自定义工作器初始化?

    我对 Celery 很陌生 我一直在尝试设置一个具有 2 个独立队列的项目 一个用于计算 另一个用于执行 到目前为止 一切都很好 我的问题是执行队列中的工作人员需要实例化一个具有唯一 object id 的类 每个工作人员一个 id 我想知
  • 将 JSON 对象传递给带有请求的 url

    所以 我想利用 Kenneth 的优秀请求模块 https github com kennethreitz requests 在尝试使用时偶然发现了这个问题自由库API http wiki freebase com wiki API 基本上
  • 如何在 python 中没有 csv.reader 迭代器的情况下解析单行 csv 字符串?

    我有一个 CSV 文件 需要重新排列和重新编码 我想跑 line line decode windows 1250 encode utf 8 在由 CSV 读取器解析和分割之前的每一行 或者我想自己迭代行 运行重新编码 并仅使用单行解析表单
  • 无法在 osx-arm64 上安装 Python 3.7

    我正在尝试使用 Conda 创建一个带有 Python 3 7 的新环境 例如 conda create n qnn python 3 7 我收到以下错误 Collecting package metadata current repoda
  • 创建嵌套字典单行

    您好 我有三个列表 我想使用一行创建一个三级嵌套字典 i e l1 a b l2 1 2 3 l3 d e 我想创建以下嵌套字典 nd a 1 d 0 e 0 2 d 0 e 0 3 d 0 e 0 b a 1 d 0 e 0 2 d 0
  • 默认情况下,Keras 自定义层参数是不可训练的吗?

    我在 Keras 中构建了一个简单的自定义层 并惊讶地发现参数默认情况下未设置为可训练 我可以通过显式设置可训练属性来使其工作 我无法通过查看文档或代码来解释为什么会这样 这是应该的样子还是我做错了什么导致默认情况下参数不可训练 代码 im
  • 当鼠标悬停在上面时,intellisense vscode 不显示参数或文档

    我正在尝试将整个工作流程从 Eclipse 和 Jupyter Notebook 迁移到 VS Code 我安装了 python 扩展 它应该带有 Intellisense 但它只是部分更糟糕 我在输入句点后收到建议 但当将鼠标悬停在其上方
  • Ubuntu 上的 Python 2.7

    我是 Python 新手 正在 Linux 机器 Ubuntu 10 10 上工作 它正在运行 python 2 6 但我想运行 2 7 因为它有我想使用的功能 有人敦促我不要安装 2 7 并将其设置为我的默认 python 我的问题是 如
  • 限制 django 应用程序模型中的单个记录?

    我想使用模型来保存 django 应用程序的系统设置 因此 我想限制该模型 使其只能有一条记录 极限怎么办 尝试这个 class MyModel models Model onefield models CharField The fiel
  • Elastic Beanstalk 中的 enum34 问题

    我正在尝试在 Elastic Beanstalk 中设置 django 环境 当我尝试通过requirements txt 文件安装时 我遇到了python3 6 问题 File opt python run venv bin pip li
  • 检查字典键是否有空值

    我有以下字典 dict1 city name yass region zipcode phone address tehsil planet mars 我正在尝试创建一个基于 dict1 的新字典 但是 它不会包含带有空字符串的键 它不会包

随机推荐

  • 颤动动画设计

    如何在 Flutter 中实现类似的动画 尝试了不同的动画与动画位置 看来是失败了 https giphy com gifs XJ1awq5Wr83uJFkLup 你可以试试this使用示例定制交换动画补间序列 final Animatio
  • 应用 AWS IAM 策略后我应该等待多长时间才能生效?

    我以编程方式添加和删除 AWS IAM 用户策略 但应用这些策略时得到的结果不一致 例如 这可能会成功 也可能不会成功 我使用的是 Java 1 6 6 SDK 从可以从特定存储桶读取数据的用户开始 清除用户策略 列出策略 然后为每一项调用
  • EXCEL VBA - 将工作簿导出到受密码保护的 ZIP 文件

    无论如何 是否可以修改 Ron De Bruin 的代码以将当前工作簿导出到密码保护zip 文件 我已经环顾了一段时间 但不知道如何启用这样的选项 代码在这里 http www rondebruin nl win s7 win001 htm
  • 为什么 CanRead 和 CanWrite 在 C# 中对于具有重写访问器的属性返回 false?

    当尝试从派生属性获取属性访问器或使用 CanRead CanWrite 时 由于某种原因 不考虑基本自动属性 CanRead and CanWrite仅基于派生类型返回值 也GetMethod and SetMethod不包含基类型的方法
  • 使用 php 设置 mp3 的专辑封面

    我正在寻找使用 PHP 设置 mp3 专辑艺术的最佳或任何方法 建议 专辑封面是根据 ID3v2 规范标识为 附加图片 的数据框 并且 getID3 现在只是用纯 PHP 在 ID3v2 中写入所有可能的数据帧的一种方法 看这个来源 htt
  • 将文件加载到 RichTextBox 时,某些超链接不会触发 LinkClicked 事件

    在 NET 4 7 中的一个简单的 Windows 窗体应用程序中 我只有一个RichTextBox在我的表格上 我正在从本地加载在 MS Word 2016 中创建的 rtf 文件 超链接已在 Word 中设置 问题是并非所有链接都会触发
  • 标签如何与非循环语句一起使用?

    根据ECMAScript 5 1 规范 第 12 12 节 任何语句都可以被标记 在简短的测试中 我的浏览器接受了任何语句之前的标签 该规范还规定标签仅用于break and continue语句 快速测试显示 如果这些语句引用的标签未引用
  • 使用 addEventSource 时出现 FullCalendar v.2.2.6 'hasTime' 未定义错误

    我目前正在尝试测试FullCalendar 版本2 2 6 addEventSource button click function calendar fullCalendar removeEventSource cal events 1
  • 没有 GPL 许可证的 Android PDF 查看器库 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我正在寻找一个没有 GPL 许可证的 Android PDF 查看器库 有人知道是否有可用的免费许可证库吗 因为我一直在闲逛 发现一些开源库 如 MuPDF Android PDF
  • 执行wait()后,如果一个线程没有得到其他线程的通知,它会等待多长时间?

    在下面的示例中 由于主线程没有收到子线程的通知 因此它应该永远等待 但是主线程正在执行 下面示例的输出是 c l total 19900 为什么主线程会被执行 public class ThreadX extends Thread stat
  • 如何在 Java 中向 XML 输出添加回车符

    在 Java 中 如何在生成的 XML 文件中输出回车符 以便所有内容都不在一行上 DocumentBuilderFactory docFactory DocumentBuilderFactory newInstance DocumentB
  • 是否有用于排序方法的 Visual Studio 2010 扩展?

    StyleCop要求对 C 文件的内容采用特定的排序顺序 例如 字段应在方法之前声明 公共声明应在私有声明之前 如果有一个 Visual Studio 扩展可以自动将这些内容移至该顺序 将会非常有用 Does a good为此存在扩展名 我
  • 排除 s3cmd 同步的文件夹

    我正在使用 s3cmd 我想知道如何排除存储桶中的所有文件夹并仅同步存储桶根 例如 bucket folder two folder two file jpg get jpg 通过同步 我只希望它同步 get jpg 并忽略文件夹及其内容
  • 呼叫操作员 & 的命令是什么?

    I used ls alias 并试图找到 然而 不在输出中 什么是 是不是以下的组合Invoke Command and Invoke Expression 是否有其他操作员在 PowerShell 中没有 cmdlet 呼叫接线员 允许
  • 如何处理 DataGridViewCell 中的 KeyEvent?

    有没有Keydown事件一DataGridViewCell 我想做的是 当用户在特定单元格中键入内容时 他可以按 F1 来获取该特定列的帮助 并且会弹出一些表格 这是什么事件 I found this在论坛中编写代码 并且有效 privat
  • 消息“警告:函数的隐式声明”

    我的编译器 GCC 向我发出警告 警告 函数的隐式声明 为什么它会来 您正在使用编译器尚未看到其声明的函数 原型 yet 例如 int main fun 2 21 The compiler has not seen the declarat
  • 托管 C++ 中的数组初始化

    我希望声明并初始化一个一维托管项目数组 如果是C 代码 我会这样写 VdbMethodInfo methods new VdbMethodInfo new VdbMethodInfo Method1 new VdbMethodInfo Me
  • 如何在命令行中编译多个java源文件

    我知道跑步javac file1 java产生file1 class if file1 java是唯一的源文件 那么我只能说java file1运行它 但是 如果我有 2 个源文件 file1 java and file2 java 那么我
  • Hibernate - 唯一列约束被忽略

    我有一个 MySQL 表来保存标签 即像 Stack Overflow 上使用的标签一样 它只有一个 id pk 和一个用于保存标签本身的标签列 我的标签实体的带注释的 get 方法如下所示 Id GeneratedValue strate
  • 将 YCbCr 颜色空间映射到 RGB

    我正在尝试使用 python 进行 JPEG 压缩 我加载 tiff 图像并将其存储为 numpy uint8 RGB 数组 我这样做是为了颜色映射 def rgb2ycbcr im cbcr np empty like im r im 0