【问题标题】:Algorithm to determine best image saving format确定最佳图像保存格式的算法
【发布时间】:2012-09-22 14:47:28
【问题描述】:

我有一张图片,可以是照片或屏幕截图。我想确保图像以适当的格式保存。我现在说的是 jpeg 和 png。

我如何确定将图像保存为 .jpeg 是否更好,因为它是/包含照片?此外,如果图像包含使用 alpha 通道,则显然使用了 png。

最简单的方法是将不同图像格式的图像两次保存到内存流中,然后比较相应的数据大小。显然,这是非常耗费资源的,而且 - 在我看来 - 不是要走的路。

有人有建议吗?

【问题讨论】:

  • 这张图片来自哪里?它以什么格式存储,即您尝试编写的方法的输入类型是什么?
  • 照片或屏幕截图都不会包含 Alpha。
  • @Mark 我说的截图可以包含alpha。
  • 如果它是包含照片的图像查看器的屏幕截图怎么办?
  • @MarkRansom 还可以存储带有 DCT 的 Alpha 通道 [透明胶片蒙版...]

标签: c# performance image algorithm math


【解决方案1】:

您可以寻找相同颜色的连续运行,因为这些在照片中非常罕见。当然,在现代 UI 中,渐变效果使这些在屏幕截图中变得不那么常见。具有纯色区域(尤其是灰色或白色)仍然是相当典型的,因此如果您想要快速的东西,这是一种合理的启发式方法。您可能希望排除最大强度的白色或最小强度的黑色,因为曝光过度或曝光不足的照片可能包含这些颜色的大块。

【讨论】:

  • 有没有一种常用的算法来分析图像?
  • @nikeee13,我不熟悉这方面的标准算法,但沿行采样并计算连续相同的像素可能就足够了。如果您超过阈值计数,请将其标记为非照片。你可以通过你的测量得到更好的结果,也许可以计算一些统计数据,但即使只是在一行中找到五个像素也是一个很好的指标,它不是一张照片(即使忽略被拍摄表面上的照明梯度,CCD 噪声通常至少会导致抖动大约 1 个亮度单位。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-22
  • 1970-01-01
相关资源
最近更新 更多