【问题标题】:Compress grayscale image using its histogram使用直方图压缩灰度图像
【发布时间】:2021-08-06 12:45:18
【问题描述】:

我有数学和机器学习方面的背景,但我对图像压缩还很陌生。另一种方式是我想以最佳方式仅使用查找表来压缩图像。这意味着,给定具有 N 个唯一值的原始图像,将其更改为具有 M 个唯一值的新图像,即 M

-给定所有像素强度的直方图h(x)

-给定唯一新值的数量M

定义一组新的 M 值 {X_new} 以最小化总误差。 我试图定义损失函数并求导,但出现了一些我不知道如何推导它们的 argmax 操作。但是,我的直觉告诉我它应该存在一个封闭的公式......

示例: 假设我们有一个只有 10 个像素的图像,其值为 {1,1,1,1,2,2,2,2,3,3}。我们最初有 N=3 并且我们被要求选择最小化误差的 M=2 个唯一值。很明显,我们必须选择最常见的 2 个,所以 {X_new}={1,2} 并且新图像将被“压缩”为 {1,1,1,1,2,2,2, 2,2,2}。如果要求我们选择 M=1,我们将选择 {X_new}=2 以最小化错误。

谢谢!

【问题讨论】:

标签: math compression discrete-mathematics image-compression


【解决方案1】:

这称为颜色量化或调色。它本质上是一个聚类问题,通常在 3D RGB 空间中。每个簇在下采样图像中变成单一颜色。 GIF 和 PNG 图像格式都支持调色板。

那里有很多clustering algorithms,背后有很多研究。为此,我会先尝试 k-means 和 DBSCAN。

请注意,调色只是一种有效的图像压缩方法的一部分。您还需要利用像素的空间相关性(通常使用 2-D 空间频率分析,如离散余弦变换或小波变换),以及利用人眼的较低分辨率与灰度敏锐度相反的颜色辨别力。

除非您想通过几年的研究来提高技术水平,否则我建议您使用现有的图像压缩算法和格式。

【讨论】:

  • 非常感谢。你的回答真的很有帮助。同意我应该使用当前的方法这一事实,我只是想知道是否有任何“封闭形式”的解决方案,因为我的直觉告诉我它应该是。鉴于我需要使用 k-means 或 DBSCAN 之类的聚类,似乎没有最佳解决方案形式,因为通常这些算法只是保证局部最小值而不是全局。我说的对吗?
猜你喜欢
  • 1970-01-01
  • 2019-03-08
  • 1970-01-01
  • 1970-01-01
  • 2021-06-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-15
  • 2013-03-24
相关资源
最近更新 更多