问题标签 [lossless]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
pdf - 使用 imagemagick 无损旋转 PDF 文件
我想旋转08-file.pdf
使用 CLI 工具命名的 351K PDF。我试过imagemagick:
但原始质量:
遭受严重退化:
我试过添加-density 300x300
参数,但结果是一个 250 万的文件,比原来的文件大了近一个数量级,这是一个巨大的浪费。
知道如何使用 imagemagick 无损旋转 PDF 文件吗?
jpeg - Jpeg“非差分霍夫曼编码”过程
我对 JPEG 中的特定进程有疑问:标有SOF0
-SOF3
的进程由标准定义为
非差分霍夫曼编码帧
这是什么意思?例如,SOF7
用霍夫曼编码定义为差分无损,并且 - 据我所知 - 它只是霍夫曼编码之前的差分编码,如 ITU-T.81 建议中所定义。这是否意味着这SOF3
只是来自 ITU-T.81 的霍夫曼编码?(没有以前的差分编码?)这对我来说没有任何意义。
我的问题与 DICOM 标准有关-如我所见,文件传输语法
JPEG 无损、非分层、一阶预测
使用SOF3
JPEG过程 - 我在这里看到很大的不一致:传输语法明确指出应使用一阶预测,而SOF3
过程的定义表明这是非差分过程(那么没有价值预测?)。这里发生了什么?
compression - 无损压缩的优缺点?
有人可以告诉我无损压缩的优缺点吗?
algorithm - 什么算法可以为LUT中的每个任意32位数字节省一位存储空间
一个查找表总共有 4G 条目,它的每个条目都是一个 32 位的任意数字,但它们从不重复。是否有任何算法能够利用每个条目的索引及其(索引)值(32 位数字)使该值的固定位置位始终为零(因此我可以利用该位作为标志来记录某些内容)。我可以通过反向计算来检索 32 位数字。或者退一步说,我是否可以使每两个连续条目的固定位置位始终为零?
我的问题是,是否有任何通用代码可以使每个任意 32 位数字节省 1 位。所以我可以利用这个位作为锁定标志。或者,有没有一种方法可以通过一些计算来利用索引及其查找表条目的值来节省值的 1 位存储。
panoramas - 将不同大小的 JPEG 与 jpegtran 结合
我已经使用此 stackoverflow 答案中描述的方法成功地使用 jpegtran 组合相同大小(512x512)的 JPEG:https ://stackoverflow.com/a/29615714/2364680
这些是来自互联网的平铺 JPEG,在组合时可以生成 360 度全景图。正如我所说,512x512 图像与 jpegtran 完美结合;但是,我意识到构成全景图的某些图块是 256x256,并且在与其他图块组合时需要将大小加倍以形成全景图(以 2D 形式的等矩形投影)。
简单地说,我需要知道 jpegtran 是否可以无损地组合两个不同大小的 JPEG——例如,我是否可以无损地将 256x256 切片的分辨率加倍,然后将其与另一个 512x512 切片组合。
我知道这可以通过重新编码来完成,但我问的是它是否可以完全无损地完成。谢谢。
opencl - JPEG 帧开始 (SOF) 标头中组件标识符的用途是什么?
我目前正在为无损 JPEG(DNG、CR2 等)开发 OpenCL 解码器。该标准对组件的布局方式(交错与平面)几乎没有限制,这与相当不灵活的 OpenCL 内核相冲突。
特别是组件标识符的概念似乎不必要地复杂,所以我想知道我是否正确:
SOF3 标头(第 3 帧开始,非差分,霍夫曼编码,无损(顺序))包含有关每个组件的一些信息。那些是:
i
(隐式):组件的索引C_i
: 组件标识符H_i
/V_i
:水平/垂直采样因子Tq_i
:量化表目标选择器
每个帧可以由包含至少一个颜色分量的编码图像数据的若干扫描组成。每个 SOS 标头(扫描开始)声明哪些组件将成为特定扫描的一部分。对于每个组件,先前声明的标识符 ( C_i
) 之一用作反向引用 ( Cs_j
,扫描组件选择器)。标准中的限制很少(B.2.3 Scan header 语法):
规则1:
每个
Cs_j
都应匹配C_i
帧头中指定的值之一,并且扫描头中的顺序应遵循帧头中的顺序。如果Ns
> 1,则 MCU 中交错组件的顺序为Cs_1
第一、Cs_2
第二等。
规则 2:
的值
Cs_j
应不同于Cs_1
to的值Cs_j-1
。
我的问题是:
- 规则 1 不允许对组件重新排序(例如,帧中的 R|G|B,但扫描中的 B|G|R)。是否允许创建多个扫描,每个扫描包含一个组件(平面配置),同时使用扫描-B、扫描-G、扫描-R的顺序,而不是扫描-R、扫描-G、扫描-B?
- 是否可以在扫描中跳过组件?例如,R|G|B 在 Frame 中声明,然后是 scan-R|B,然后是 scan_G?
- 为什么扫描中的组件由其标识符 () 引用,而不是帧头中
C_i
的索引 ( )?i
除了唯一性之外,标识符是否有任何限制,或者声明 R:C_0=255、G:C_1=3、B:C_2=250 是否真的有效?
compression - 减少二进制表中的行数
我有一个表,每个地址都有一个 38 位二进制字符串。我想弄清楚减少桌子深度的最佳方法是什么?例如,假设我有 1024 个地址并且我想将其减少到大约 100 个地址,这样如果我在这个减少的表上应用 1024-38 位二进制字符串之一,我可以将其归类为“来自原始表”或“不是”。
现在,第一个简单的步骤是将任何匹配的记录合并为一条记录。还有哪些优化二进制记录深度的方法?(减损也可以接受)
database - 如果不知道 FD,如何确定无损分解?
下表 R(A, B, C, D, E) 没有已知的 FD。它分解为 R1(A, B, C, D) 和 R2(A, C, E)。我如何确定这是否是无损分解?
image-processing - 如何从无损 x264 视频中提取 16 位 PNG 帧
我使用以下命令将一系列 16 位灰度 PNG 编码为无损视频:
我现在正试图通过以相同质量提取 PNG 来验证转换为视频是否真正无损。我正在使用的命令:
但是,这是输出 8 位 PNG。我已经尝试了各种我读过的选项-vcodec png
,-qscale 0
但到目前为止似乎没有任何东西可以让它输出 16 位 PNG。
如何以与进入时相同的质量从视频中提取所有帧?还是我一开始在创建无损视频时犯了一个错误?
编辑:尝试使用时收到此错误消息-pix_fmt gray16be
。
[swscaler @ 0x7fef1a8f0800] 已弃用像素格式,请确保您正确设置了范围
完整输出:
如果有的话,我很乐意使用非 ffmpeg 解决方案。
ffmpeg - FFMPEG 的 FLAC 压缩级别和默认设置
我已经搜索了这方面的文档,但没有找到任何信息。
我在 Windows 10 Insider Build(也是最新的)64 位中使用最新的 FFMPEG nightly build。
我需要知道如何定义 FLAC 文件的压缩级别。
此外,默认情况下,FFMPEG 会更改 FLAC 文件中的任何内容。这是一个例子:假设我有一个未更改的源 FLAC 文件,我在 FFMPEG 中再次转换为 FLAC,当它处理它时,默认情况下会发生什么变化?有什么方法可以确保 FFMPEG 不会改变原始质量?我知道 FLAC 是无损的,但我认为它可能会改变位深度或位速率。