据我所知,JPEG是一种有损压缩标准,"质量"因素控制着压缩程度,从而控制数据丢失量.
但是当质量数设置为100时,生成的jpeg是否无损?
我最近压缩了一些文件,我注意到base64编码的数据似乎压缩得非常糟糕.这是一个例子:
xz -9:13,2 MiB / 429,7 MiB = 0,031 4,9 MiB/s 1:28base64它并压缩通过xz -9:26,7 MiB / 580,4 MiB = 0,046 2,6 MiB/s 3:47base64原始压缩的xz文件:17,8 MiB几乎没有时间=预期1.33x的大小增加所以可以观察到的是:
怎么会这样?Base64是一种无损,可逆的算法,为什么它会如此影响压缩呢?(我也试过gzip,结果相似).
我知道base64然后压缩文件是没有意义的,但大多数时候一个人无法控制输入文件,我会想到,因为实际的信息密度(或任何它被称为base64编码文件的几乎与非编码版本相同,因此可以类似地压缩.
是否有可能在h264中进行完全无损编码?通过无损,我的意思是,如果我喂它一系列帧并对它们进行编码,然后如果我从编码视频中提取所有帧,我将获得与输入完全相同的帧,逐个像素,逐帧.这有可能吗?举个例子:
我生成了一堆帧,然后我将图像序列编码为未压缩的AVI(类似于virtualdub),然后我应用无损h264(帮助文件声称设置--qp 0进行无损压缩,但我不确定是否这意味着在过程的任何一点都没有损失,或者只是量化是无损的).然后,我可以使用类似mplayer的内容从生成的h264视频中提取帧.
我首先尝试使用Handbrake,但事实证明它不支持无损编码.我试过x264但它崩溃了.这可能是因为我的源AVI文件是RGB颜色空间而不是YV12.我不知道如何提供一系列YV12位图以及x264的格式,所以我甚至无法尝试.
总之,如果有办法,我想知道什么
系列无损位图(在任何颜色空间中) - >一些转换 - > h264编码 - > h264解码 - >一些转换 - >原始系列的无损位图
如果有办法实现这一目标?
编辑:有一个关于无损H264的非常有效的观点没有太多意义.我很清楚,在H264中我无法分辨(和我的眼睛)和未压缩剪辑之间的区别以及另一个高速压缩,但我认为这并非没有用处.例如,对于存储视频进行编辑而不占用大量空间并且不会丢失质量并且每次保存文件时花费太多编码时间可能是有用的.
更新2:现在x264没有崩溃.我可以使用avisynth或无损yv12 lagarith作为来源(以避免颜色空间压缩警告).然而,即使使用--qp 0和rgb或yv12源,我仍然会得到一些差异,最小但存在.这是令人不安的,因为我在无损预测编码(--qp 0)上发现的所有信息都声称整个编码应该是无损的,但我无法验证这一点.
最近我遇到了一个很好的问题,它很容易理解,很难找到任何解决方法.问题是:
编写一个程序,从输入中读取文本并在输出上打印一些其他程序.如果我们编译并运行打印的程序,它必须输出原始文本.
输入文本应该相当大(超过10000个字符).
唯一(也是非常强大)的要求是存档的大小(即打印的程序)必须严格小于原始文本的大小.这使得不可能出现明显的解决方
std::string s;
/* read the text into s */
std::cout << "#include<iostream> int main () { std::cout<<\"" << s << "\"; }";
Run Code Online (Sandbox Code Playgroud)
我相信这里会使用一些归档技术.
c++ compression algorithm lossless-compression data-compression
我正在寻找一个JavaScript函数,给定一个字符串返回一个压缩(更短)的字符串.
我正在开发一个Chrome网络应用程序,可以将长字符串(HTML)保存到本地数据库.出于测试目的,我试图压缩存储数据库的文件,并且缩小了五倍,所以我认为如果我压缩存储的东西,它将有助于保持数据库更小.
我在JavaScript中找到了LZSS的实现:http://code.google.com/p/u-lzss/("U-LZSS").
当我使用简短的示例字符串(解码===编码)"手动"测试它时它似乎有效,而且它在Chrome中也相当快.但是当给出大弦(100 ko)时,它似乎会混乱或混合弦的后半部分.
是否有可能U-LZSS期望短字符串并且不能处理更大的字符串?是否可以调整一些参数以移动上限?
为了纪念Hutter奖,文本压缩的顶级算法(以及每个算法的快速描述)是什么?
注意:这个问题的目的是获得压缩算法的描述,而不是压缩程序的描述.
我正在进行优化,Google建议对图像进行无损压缩,寻找在Django中实现此功能的方法.
这是他们指定的图像,我认为要有效地完成它需要在系统范围内实施,可能使用中间件类,想知道是否有人之前已经这样做过.以下是来自pagespeed的Google Analytics的链接https://developers.google.com/speed/pagespeed/insights/?url=www.kenyabuzz.com
优化图像正确格式化和压缩图像可以节省许多字节的数据.优化以下图像,将尺寸减小627.3KiB(减少74%).
Losslessly compressing http://www.kenyabuzz.com/media/uploads/clients/kenya_buzz_2.jpg could save 594.3KiB (92% reduction).
Losslessly compressing http://www.kenyabuzz.com/media/uploads/clients/new_tribe_2.jpg could save 25KiB (44% reduction).
Losslessly compressing http://www.kenyabuzz.com/…a/uploads/clients/EthiopianAirlines2.jpg could save 3KiB (22% reduction).
Losslessly compressing http://www.kenyabuzz.com/static/kb/images/Nightlife.Homepage.jpg could save 1.3KiB (2% reduction).
Losslessly compressing http://www.kenyabuzz.com/static/kb/img/social/blog.png could save 1.1KiB (43% reduction).
Losslessly compressing http://www.kenyabuzz.com/static/kb/img/social/twitter.png could save 969B (52% reduction).
Losslessly compressing http://www.kenyabuzz.com/…der-Board---Email-Signature--Neutral.jpg could save 920B (2% reduction).
Losslessly compressing http://www.kenyabuzz.com/static/kb/img/social/youtube.png could save 757B (31% reduction).
Run Code Online (Sandbox Code Playgroud) 我在保存到磁盘时尝试了各种方法进行数据压缩numpy arrays.
这些一维阵列包含一定采样率的采样数据(可以使用麦克风录制声音,或使用任何传感器进行任何其他测量):数据基本上是连续的(在数学意义上;当然,采样后它现在是离散数据) .
我试过HDF5(h5py):
f.create_dataset("myarray1", myarray, compression="gzip", compression_opts=9)
Run Code Online (Sandbox Code Playgroud)
但这很慢,压缩比不是我们所能期望的最好.
我也尝试过
numpy.savez_compressed()
Run Code Online (Sandbox Code Playgroud)
但是再一次,它可能不是这种数据的最佳压缩算法(如前所述).
对于numpy array这样的数据,你会选择什么来获得更好的压缩比?
(我考虑过无损FLAC(最初是为音频而设计),但是有一种简单的方法可以在numpy数据上应用这样的算法吗?)