【问题标题】:Using Huffman coding to compress images taken by the iPhone camera使用霍夫曼编码压缩 iPhone 相机拍摄的图像
【发布时间】:2018-01-03 10:11:10
【问题描述】:

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

谢谢

【问题讨论】:

  • iPhone 的功能越来越强大,因此取决于您正在寻找多大的图像以及您设置的速度基线应该是可能的。看看这个实现,您可以尝试自己分析速度:raywenderlich/swift-algorithm-club

标签: ios swift huffman-code image-compression


【解决方案1】:

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

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

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

  1. Huffman 不太可能优于 JPG、PNG 等中使用的标准图像压缩。

  2. Apple 已经看到了对更好压缩的需求,并在 iOS 11 中实施了 HEIF。WWDC Video about HEIF

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

    李>
  4. 他们实现的所有压缩都使用硬件加速。你也可以这样做,但代码比 Huffman 难很多。

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

【讨论】:

  • 谢谢@Lou。你的回答很有帮助
【解决方案2】:

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
相关资源
最近更新 更多