使用霍夫曼编码压缩 iPhone 相机拍摄的图像

Using Huffman coding to compress images taken by the iPhone camera

我正在考虑使用霍夫曼编码制作一个应用程序,该应用程序可以直接从 iPhone 相机拍照并进行压缩。硬件是否有可能处理复杂的计算和构建树?也就是说,可行吗?

谢谢

如果您指的是图像文件(如 jpg、png 等),那么您应该知道它们已经使用特定于图像的算法进行了压缩。生成的文件不会进行太多霍夫曼压缩,如果有的话。

如果你的意思是你要获取 UIImage 原始像素数据并压缩它,你可以这样做。我相信 iPhone 可以处理它。

如果这是一个有趣的项目,那就去吧。如果你想让它成为一个有用的和使用过的应用程序,你将面临一些挑战

  1. Huffman 不太可能优于 JPG、PNG 等标准图像压缩

  2. Apple 已经发现需要更好的压缩并在 iOS11 中实现了 HEIF。WWDC Video about HEIF

  3. 他们在 OS 和照片应用程序中做了大量工作以确保在本地使用 HEIF,但如果您分享照片,它就会变成任何人都可以使用的东西(例如JPG)

  4. 他们实施的所有压缩都使用硬件加速。你也可以这样做,但是代码比哈夫曼要难得多。

因此,对于学习和娱乐来说,这是一个很好的项目 -- 作为 Mac 应用程序可能更容易做,但对于真正的东西来说,克服以上问题。

有2个部分,编码和解码。编码过程涉及构建树或基于 table 的树表示。解码过程包括从 huff 编码字节中读取和撤消增量。与 PNG 相比,在编码中可能很难获得很大的速度优势,但对于解码,可以通过使用 Metal 将解码逻辑移动到 GPU 来实现非常有效的加速。您可以查看 github Metal Huffman.

上的灰度图像示例的完整源代码