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

时间:2017-07-27 15:18:46

标签: ios swift huffman-code image-compression

我正在考虑使用霍夫曼编码制作一款能够直接从iPhone相机拍摄照片并进行压缩的应用程序。硬件是否可以处理复杂的计算并构建树?换句话说,它可行吗?

谢谢

2 个答案:

答案 0 :(得分:4)

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

如果您的意思是要获取UIImage原始像素数据并对其进行压缩,则可以这样做。我确信iPhone可以处理它。

如果这是一个有趣的项目,那就去吧。如果您希望这是一个有用且使用过的应用程序,那么您将遇到一些挑战

  1. Huffman不太可能比JPG,PNG等中使用的标准图像压缩更好。

  2. Apple已经看到需要更好的压缩并在iOS 11中实现HEIF。WWDC Video about HEIF

  3. 他们在操作系统和照片应用程序中做了很多工作,以确保在本地使用HEIF,但如果你分享照片,它会把它变成任何人都可以使用的东西(例如JPG)

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

  5. 所以,为了学习和娱乐,这是一个很好的项目 - 它可能比作为Mac应用程序更容易,但对于一些真实的东西,要克服上述问题将非常困难。

答案 1 :(得分:0)

有2个部分,编码和解码。编码过程涉及构造树或基于表的树的表示。解码过程包括从huff编码字节读取和撤消delta。与PNG相比,在编码中可能难以获得更多的速度优势,但是对于解码,可以通过使用Metal将解码逻辑移动到GPU来看到非常有效的加速。您可以查看github Metal Huffman上灰度图像的示例的完整源代码。