【问题标题】:Swapping Jpeg RGB Channels (RGB->BGR)交换 Jpeg RGB 通道 (RGB->BGR)
【发布时间】:2015-05-04 23:27:58
【问题描述】:

我有一个 Jpeg RGB 单扫描剪辑(带有 Adob​​e App14 标记,并且 R、G、B 分量都在同一个扫描中交错)。我想知道是否有办法编辑 Jpeg 剪辑标头(或附加其他标头,如 EXIF),以便解码器可以将 R 通道解释为 B,反之亦然,而无需更改比特流的其余部分?

我曾尝试在扫描标题中交换“扫描组件选择器”的顺序,然后解码器(在本例中为 Windows 照片查看器)成功地将红色显示为蓝色,然后将蓝色显示为红色。但是,ITU-T.81 Jpeg规范明确规定“Csj:扫描组件选择器:每个Csj应匹配帧头中指定的Ci值之一,并且扫描头中的排序应遵循帧头中的排序。”所以我猜想改变 Scan 组件选择器的顺序不是一个有效的选项,除非有任何更新的规范说这不再是限制。

有没有人知道通过附加某种应用数据或修改 Jpeg 帧或扫描头而不接触扫描数据来交换 RGB 通道的其他方法?

感谢您的意见。

【问题讨论】:

  • 你确定是RGB格式的吗?虽然这并非不可能,但我还没有听说过 RGB 格式的 ADOBE JPEG。我听说过 YCbCr 和 YCbCrK。
  • @user3344003 - 看起来不合逻辑(而且效率不高),但是是的,Adobe 产品使用 RGB 色彩空间编写 JPEG 压缩图像。
  • 听起来你需要读取图像数据,交换MCU顺序并将其写回。这并不困难,也不会造成任何质量损失。如果您希望解码后的图像具有不同的颜色顺序,那么您需要修复解码器,而不是压缩图像。

标签: image colors jpeg


【解决方案1】:

如果您有原始格式的图像,您可以使用 exiftool 修改 exif CFA。阵列可能因传感器和格式而异。 对于交换dng文件,您可以使用以下

exiftool.exe -subifd:cfapattern2="2 1 1 0" file.dng

在哪里

0 = Red,
1 = Green,
2 = Blue,

如果你绝望了,你总是可以考虑将你的 Jpg 转换为 Raw 然后再返回

【讨论】:

    猜你喜欢
    • 2015-08-15
    • 2018-02-08
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2016-10-23
    • 1970-01-01
    • 2017-05-28
    相关资源
    最近更新 更多