我一直在看Image Compression (Lossy and Non-lossy)上的一个网页。
现在这是我的问题,我成功地使用opencv制作了一个关于人脸检测的项目-然而-我的项目向导并不满意-我的项目只是从捕获设备网络摄像头捕获帧,并在函数中传递帧以检测这些帧中的人脸,并在Windows中输出检测帧。
我的项目向导希望我实现一些图像压缩或变形等算法,但看到如此大量使用该库并不高兴。
那么,我想知道的是--是否可以使用C或C++图像压缩算法进行编码?如果是,代码大小不是很大吗?(我的项目应该是一个小项目)
请帮帮我,假设我想用C++使用RLE压缩,我该怎么做呢?
发布于 2011-08-01 01:52:38
你想发明自己的图像压缩,还是实现一个标准的压缩?(我假设这是针对某种类/任务的,在现实世界中您不会这样做!)
你可以使用像Run-Length这样的东西来压缩一些简单的图像,特别是如果你可以减少颜色的数量。卡通或图形,但对于真正的照片风格的图像,它不会工作-这就是为什么像jpeg或小波这样的复杂有损技术被发明出来。
发布于 2011-08-01 01:54:06
这是非常有可能的,而且RLE压缩非常容易。如果您想看一种相对简单的、不会使用大量代码的RLE方法,那么可以看一下实现一个版本的packbits。
这里还有另一个链接:http://michael.dipperstein.com/rle/index.html (包括一个包含传统RLE和packbits源代码的实现)
顺便说一句,请记住,对于有噪声的数据,使用RLE方案实际上可能会得到比未压缩的更多的数据。对于大多数“真实世界”的图像,虽然应用了某种形式的低通滤波和相对较好的信噪比(即,超过40db),您应该预期压缩比约为1.5:1到1.7:1。
无损压缩的另一种选择是哈夫曼编码...该算法对噪声图像的容忍度更高,因为当使用RLE压缩算法编码时,它通常可以防止那些类型的图像可能发生的数据扩展。
最后,您没有提到您是在处理彩色图像还是灰度图像……如果是彩色图像,请记住,如果您压缩平面颜色通道图像中的每个颜色通道,而不是试图压缩连续的RGB数据,您将发现冗余要大得多。
发布于 2011-08-01 01:57:21
您希望使用空间填充曲线或空间索引实现基于颜色减少的压缩。A si将二维复杂度降低到一维复杂度,它看起来像一个四叉树,有点像一个分形。你想看看尼克的希尔伯特曲线四叉树空间索引博客!
这是另一个有趣的RLE编码思想:Lossless hierarchical run length encoding。也许这就是你想要的?
https://stackoverflow.com/questions/6891183
复制相似问题