gpt4 book ai didi

jpeg - 如何将 JPEG 444 YCbCr 转换为 422 YCbCr

转载 作者:行者123 更新时间:2023-12-04 02:13:35 26 4
gpt4 key购买 nike

我正在寻找将具有 444 YCbCr 的 JPEG 转换为 422 YCbCr 的可能性。根据 RFC 2435 for RTP Streaming,JPEG 文件必须具有 JPEG 422 YCbCr 格式,因为 444 是 agianst 标准。

最佳答案

您必须降低采样率才能做到这一点,您基本上可以跳过每个色度平面中的一个组件来实现这一点。 (丢失数据)

这里有一些示例代码可以让您了解如何执行缩减 https://github.com/rkrajnc/jpegdec/blob/master/sw/matlab/jpeg/jpeg_downsample.m

此外,只有当霍夫曼 DCT 系数的创建比例与 RFC 中预期的比例相同或足够接近时,这才会起作用(但会丢失数据)。

您可能只保留其他 JPEG 的所有内容,但真正归结为确保霍夫曼表与 RFC 中的表兼容,如果不兼容,您将拥有要么:

1) 实现某种类型的 TypeSpecific 使用以指示包含 HuffmanTables,不要在创建 JFIF header 时写入它们,而是直接在任何 ProfileHeaders 之后按原样包含它们。

2) 实现某种类型的 TypeSpecific 指示使用已知的备用霍夫曼表,在接收端编写自定义霍夫曼表而不是编写普通霍夫曼表。

选项 1 将允许 VLC 工作,因为它会忽略 TypeSpecific 字段使用有效负载中的数据,从而导致您包括备用 Huffman 表。也可以采用此技术来允许除基线或渐进式之外的其他编码 jpeg 或任何需要包含但不受 RFC 标准支持的标记。 (例如,也可以采用此方法来包含 2 个以上的量化表,当 Quality >= 100 时,前 2 个将存储在 Profile Header 中,如果直接在有效载荷中适用,则最后一个将存储在任何 DRI Profile Header 之后.

(虽然我认为您目前可以通过对表的长度执行除法并在解码时观察精度位表来检查超过 2 个表,但长度是一个 16 位字段,因此 Quant 表的长度最多为 65535 bytes 是有效的。)

我最近在我的库中添加了对此的支持,尤其是 Rfc2435 的勘误表。

http://www.rfc-editor.org/errata_search.php?rfc=2435&rec_status=15&presentation=records

解决方案是使用配置文件头中的 TypeSpecific 字段,该字段当前未用于通过该字节描述每个 Hi、Vi 位字段。

扫描中的组件永远不会超过 5 个,0 - 4。

第一个组件已在类型字段中与 DRI 和质量一起描述。

可能的值排列是 4,2,1,0。

0不用说了,黑白单张表就可以实现,1:1已经支持了。

我的更改源也可以在我的图书馆中找到 https://net7mma.codeplex.com .

关于jpeg - 如何将 JPEG 444 YCbCr 转换为 422 YCbCr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25662584/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com