问题标签 [lossless-compression]

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.

0 投票
1 回答
806 浏览

image - 无损JPEG文件写入

我有一个关于 JPEG 文件写入的问题。假设我有一个 PNG 文件 example.png,我想将文件格式更改为 JPEG,而不会丢失任何信息。目前,我有两个解决方案:

  • 解决方案 1:使用 MATLAB 执行文件格式转换

    我 = imread('example.png');

    imwrite(I,'example.jpg','Mode','无损');

    II = imread('example.jpg');

    不同 = I-II;

    最大(不同(:))

    此解决方案可以生成无损 JPEG 文件。但是,这种解决方案的问题是可能会丢失原始图像中的某些信息,例如 DPI 分辨率。此外,IrfanView 和 Windows Paint 等流行的图像查看器无法查看生成的输出图像。

  • 解决方案 2:使用 IrfanView 软件。使用 IrfanView 程序的“另存为”功能,我们可以非常轻松地更改文件格式。但是,虽然我在保存 JPEG 文件时设置了“最佳质量 100”选项,但输出图像也显示出一些信息丢失。对于所有像素,这两个图像之间的差异并非为零。

因此,我想知道我应该怎么做才能解决这个问题。任何想法将不胜感激。

0 投票
0 回答
293 浏览

jpeg - 利用 JPG 图像之间的冗余

我希望利用一组相似 colored JPG图像之间的冗余。Set redundancy compression已成功用于类似8-bit grayscale图像。他们基本上找到一组图像的MAXMIN,并将原始图像编码为differences相对于 MAX 或 MIN 图像,取决于较小的差异。除了 gzip 或 bzip 等普通压缩工具外,使用这种方法对灰度图像进行了大约 20-50%的额外压缩。我执行以下操作:

  • 将 JPG 图像解压缩到 RGB 字符缓冲区
  • 计算 MIN 和 MAX 字符缓冲区
  • 将差异字符缓冲区编码为 JPG 图像

问题是要从差异图像中检索原始图像,理想情况下我需要对差异进行无损编码。但是,libjpeg 中没有lossless从 RGB->JPG 的转换,即使质量=1.0,因为差异系数很小(1~10),我最终丢失了几乎所有信息(几乎所有解码数据都是 1~3) .

为了解决这个问题,我尝试使用huffman encoding差异字符缓冲区。

  • 使用 Huffman 编码对差异字符缓冲区进行编码

原始 JPG 图像的大小约为 256 KB,相应的 RGB 缓冲区约为 7.8 MB,霍夫曼编码的差异图像大小约为 2.2 MB。因此,霍夫曼编码确实节省了大量空间 wrt RGB 缓冲区,但原始 JPG 等价物要小得多

  • 有什么建议可以有效地存储这些差异缓冲区的大小与 256 KB 原始文件相当吗?JPG
  • 有没有办法将这些差异缓冲区保存low valued data coefficients为 JPG 图像而不会丢失大量信息?
0 投票
2 回答
1359 浏览

mjpeg - 如何检测无损 JPEG 2000 压缩?

我有一个motion-JPEG 2000 文件,我需要根据文件本身确定创建者是否使用无损压缩来创建它。我没有可比较的原始视频数据,也没有用于生成文件的应用程序的源代码。

根据我的发现,看起来我能做的最好的事情是检查小波滤波器(双正交 3/5)和量化步长(1),如果这些条件为真,则假设无损。

非常感谢有关如何检查无损压缩的任何建议。我的工作环境是 MATLAB 或 Java,但其他平台的任何提示都会有所帮助。

0 投票
4 回答
1439 浏览

image - 相似图像压缩

我有一堆类似的图像。这些图像包含不同的噪声,但边缘和直方图非常相似。我需要无损压缩这些图像。是否有任何算法可以使用图像相似性进行更有效的压缩?我尝试通过预测来使用改进的压缩(从 LOCO 更改了 MED 预测器),但我的收益只有大约 0.4%

0 投票
2 回答
397 浏览

c - C的多算法压缩库

我希望我的程序能够使用 zlib、lzma、lzo 和 bzip2 压缩算法。

是否有任何 C 压缩库可以简化使用多种算法(例如支持多种加密模式和算法的 libmcrypt)?

期待这样的事情:

注意:这不是关于 zip/rar/7z/tar/cpio 和其他存档格式,而是关于原始缓冲区的压缩。想想压缩网络协议或随机访问压缩块设备(如cloop)。

0 投票
1 回答
1693 浏览

java - 如何在我的项目中使用 jai image io 工具?

我正在尝试阅读一些 jpeg 无损图像并在我的项目中显示。顺便说一句,这些图像是 DICOM 文件。识别图像类型后,我编写了以下代码:

但是当我运行它时,我得到了这个错误:

没有适用于传输语法 1.2.840.10008.1.2.4.70 的 jpeg-lossless 阅读器 原因:java.util.NoSuchElementException

我在互联网上搜索过,我发现我必须安装Image I/O Tools。然后我将它安装在操作系统中,我的项目运行良好。

但我的问题是: 我想在我的库中添加“jai-image-io”工具,例如也添加到那里的另一个 jar 库。因为我的应用程序应该安装在许多我无法安装额外工具的客户端系统上。我不知道我该怎么做?

先感谢您。

0 投票
3 回答
3257 浏览

embedded - FPGA比特流的数据压缩

我正在寻找一种好的压缩算法,用于从闪存芯片解压缩数据以加载到 FPGA(Mojo开发板上的Xilinx Spartan6-LX9 )。它必须快速解压缩并且不需要大量工作内存,因为 CPU(ATmega16U4)的时钟频率为 8 MHz,并且只有 2 KiB 的 RAM 和 16 KiB 的程序闪存,其中一些已经在利用。压缩速度并不是特别重要,因为压缩只会在计算机上运行一次,并且压缩算法不需要对任意输入起作用。

这是一个示例比特流。该格式记录在Spartan-6 FPGA 配置手册中(从第 92 页开始)。

通常,数据中存在的模式分为几类,鉴于我正在使用的约束,我不确定其中哪一个最容易被利用:

  • 数据被整体组织成一组已知格式的数据包。比特流的某些部分有些“定型”(例如,它总是以写入某些寄存器开始和结束),而其他命令将以可预测的顺序出现。

  • 有些字节比其他字节更常见。00 和 FF 是迄今为止最常见的,但其他位设置很少的字节(例如,80、44、02)也很常见。

  • 00 和 FF 字节的运行非常频繁。其他模式有时会出现在局部范围内(例如,一个 16 字节的序列会重复几次),但不会出现在全局范围内。

给定约束条件,什么是适合此任务的压缩算法(不是库,除非您确定它适合!)?

0 投票
2 回答
1402 浏览

python - 在 Python 中处理 ljpeg

我有一个很大但很愚蠢的问题。我找不到用 python 或任何其他方式打开 ljpeg(无损 jpeg)文件的任何方法。没有图书馆什么的吗?任何其他编程语言都可以,任何其他方式都可以。我只需要以某种方式打开该文件。

0 投票
1 回答
228 浏览

audio - 开窗和无损压缩

我正在研究 FLAC 的工作原理,尽管我的问题对任何无损编解码器都有效。

我想知道如果原始信号乘以一个非矩形的窗口,编解码器怎么可能是无损的。

我认为这个操作会修改我们不想改变的流。

我知道一个矩形窗口的光谱响应很糟糕(sinc,有很多裂片),但是,有什么问题?我们不想干扰音频流,并且通过乘以不同于 1 的值,我们会的。

谢谢你。

0 投票
1 回答
2379 浏览

java - 使用JPEG无损压缩图像并将图像转换为Base64Encoded String

我们需要压缩一个大小约为 50 KB - 75 KB 的图像,限制在 25 KB 以内。我们遵循http://examples.javacodegeeks.com/desktop-java/imageio/compress-a-jpeg-file/中给出的示例。通过将质量指定为 0.1f,我们能够将图像的大小减小到 25 KB 以下。但是图像失去了它的质量。

我们需要您的建议:

  1. 我们如何将图像压缩到 25 KB 以内而不损失质量?
  2. 压缩后,我们将图像字节数组转换为 Base64Encoded String。在此之后,字符串内容超过了 25KB 的大小限制。我怎样才能控制这个尺寸呢?

我们需要您的帮助来解决这个问题。请帮忙。