【问题标题】:How can I efficiently simulate image compression artifacts in Python?如何在 Python 中有效地模拟图像压缩伪影?
【发布时间】:2020-06-29 18:28:19
【问题描述】:

我正在使用模拟图像训练神经网络,而现实生活中发生的一件事就是低质量的 JPEG 压缩。它以一种特殊的方式模糊了锋利的边缘。有没有人有一种有效的方法来模拟这些效果?我的意思是创建一个干净输入的损坏版本。图像是灰度的,存储为 numpy 数组。

【问题讨论】:

  • 把它们写成低质量的 JPEG,然后再读回来,也许吧?
  • 我正在考虑,也许写到 ramdisk。否则模拟非常快,所以我不想通过读/写磁盘来限制它。
  • 查看这里以了解如何使用io.BytesIO stackoverflow.com/a/52281257/2836621 将 JPEG 写入内存
  • 看起来我有一个使用 imageio.imwrite() 和 imread() 以及 io.BytesIO 的解决方案。谢谢。
  • 太棒了!随意写下您自己问题的答案,供所有人查看和参考,然后将其视为正确并收好分数……完全可以。

标签: python image-processing neural-network


【解决方案1】:

感谢 cmets 中的答案,这是一个将图像保存为 JPEG 并将其读回的解决方案,所有这些都使用标准 python 库在内存中。

import io
import imageio

# Image is 2D numpy array, q is quality 0-100
def jpegBlur(im,q):
  buf = io.BytesIO()
  imageio.imwrite(buf,im,format='jpg',quality=q)
  s = buf.getbuffer()
  return imageio.imread(s,format='jpg')

在我的函数中,我还对图像进行了预缩放和后期缩放,以从 float64 转换为 uint8 并再次转换回来,但这是基本思想。

【讨论】:

    猜你喜欢
    • 2022-06-17
    • 2021-06-11
    • 1970-01-01
    • 2020-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    • 1970-01-01
    相关资源
    最近更新 更多