【问题标题】:How to detect the zoom factor of an image如何检测图像的缩放因子
【发布时间】:2013-01-15 04:57:19
【问题描述】:

我在这里阅读了有关此主题的相关问题:How to detect subjective image quality

我想检测用户上传的图像是否可以以高百分比(例如 500%)放大,并且图像质量仍然是或良好。我理解“良好的图像质量”是主观的,但出于我的目的,我会说它的意思是“图像是否像素化?”。我试图找到如何做到这一点的方法?

  • 我应该计算上传图片的大小吗?尺寸越大,放大的越多可以吗?
  • 我应该计算图像的总像素数吗?
  • 我应该阅读上传图片的元标签吗?
  • 多种事物的组合?

是否有确定图像的bad pixelation 的解决方案/库?

【问题讨论】:

  • 模糊!= 像素化。你担心blurry images,还是像素化的?
  • ANY 放大图像会使其更模糊,原始图像质量没有任何区别。您应该根据缩放是否会使图像变大或变小来决定。
  • 我不是专家,但一种有趣的编码方式可能是在图像上实现斑点着色算法 - 这可以让您在图像中找到明确的线条。然后你可以放大线条并在该部分重复斑点着色,直到你注意到线条周围有更多斑点。不过可能有更好的方法来做到这一点
  • @MattBall,调整图像大小的方法有很多。它们中的大多数会使它变得更模糊,但只有一种会使它像素化。
  • @MattBall 我关心的是像素化图像而不是模糊图像。我已经更新了问题

标签: java image image-processing imagemagick


【解决方案1】:

使用水平和垂直像素数。

只要图像的像素多于您显示的像素,您就可以进行缩放。一旦显示像素多于图像像素,就必须对像素进行插值。插值越高,图片越模糊。

假设您有一张 4000 x 3000 像素的图片,并且您正在显示 640 x 480 像素。

您最多可以水平缩放 625% (4000 / 640) 和垂直缩放 625% (3000 / 480)。较小的缩放数字将是 625%。四舍五入到偶数缩放,这张图片可以放大到 600% 而不会出现像素化。

现在,如果您愿意插入像素,您甚至可以放大 600% 以上。你能放大多高?这取决于您认为可接受的插值。

我的猜测会高出 25%。对于此示例图片,您可以在图片变得太模糊之前达到 800%。

如果您想安全起见,请将其保持在计算出的缩放大小以下。如果不是,请随心所欲地提高,让用户确定多高是不是太高了。

【讨论】:

  • 这很有帮助。不过,我没有显示图像。用户将上传图像,应用程序将决定图像是通过/失败。管理员将设置某种阈值来确定图像是否通过/失败。该阈值可能以像素为单位。即在您的示例中为 640 x 480
  • 好建议,但这不会捕捉到用户已经炸毁的图像吧?假设用户有一个 64x64 的源图像,然后在上传到应用程序之前将其放大到 64kx64k。它看起来很糟糕,但如果你只看图像尺寸,你就是 SOL。
  • @Anon:是的。如果您愿意,可以与我们分享您将如何分析图片的像素并检测极端放大,而不是只有几种颜色的图片。
  • 我不是专家 - 但也许这个关于 SO 的答案可能会有所帮助 -stackoverflow.com/questions/12942365/…
猜你喜欢
  • 2012-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-15
  • 2016-07-16
  • 2019-03-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多