Как эффективно имитировать артефакты сжатия изображений в Python? - PullRequest
2 голосов
/ 18 марта 2020

Я тренирую нейронные net с использованием смоделированных изображений, и одна из вещей, которая происходит в реальной жизни - это сжатие JPEG низкого качества. Это размывает острые края определенным образом. У кого-нибудь есть эффективный способ симулировать эти эффекты? Под этим я подразумеваю создание искаженной версии чистого ввода. Изображения в градациях серого, хранящиеся в виде numpy массивов.

1 Ответ

1 голос
/ 18 марта 2020

Благодаря ответам в комментариях, вот решение, которое сохраняет изображение в формате 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 и обратно, но это основная идея c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...