Добавьте пиксельный независимый шум к изображению - PullRequest
0 голосов
/ 02 марта 2019

Мой вопрос прост: у меня есть изображение, и я хочу добавить пиксельный независимый шум к изображению.Шум может быть получен из любого распределения, такого как гауссовский.Какие доступные модули в numpy / scikit-learn делают то же самое?

У меня нет кода, но я изучаю такие модули, как numpy.random.normal и т. Д., И мне нужно больше разъяснений.Ни один из модулей прямо не говорит, что если я буду рисовать образцы из распределения несколько раз, то они будут независимыми.

Спасибо за предложения.

Ответы [ 2 ]

0 голосов
/ 02 марта 2019

Да, случайный означает Независимый.Вы можете использовать numpy / scipy для генерации шума и добавления его к изображению.Возможно, вам стоит изучить этот урок enter image description here Вот код:

import numpy as np
import matplotlib.pylab as plt

#--- data -----
a = 1
xi, yi = np.linspace(-a,a,nx), np.linspace(-a,a,ny)
x, y = np.meshgrid(xi,yi)    # 2-dimensional grid
U = np.exp(-x*x - y*y)       # picture/signal
V = np.random.randn(nx, ny)  # random noise

#--- grafics -----
fig = plt.figure(figsize=(22,11)) 
ax1 = fig.add_subplot(131)
ax1.imshow(U)
ax2 = fig.add_subplot(132)
ax2.imshow(V)
ax3 = fig.add_subplot(133)
ax3.imshow(U+0.2*V)
plt.show()
fig.savefig('signal_noise.png', transparency=True)
0 голосов
/ 02 марта 2019

У вас есть несколько вариантов.Если вы хотите взять случайные выборки с заменой, просто используйте один из встроенных случайных модулей numpy (то есть numpy.random.random).Вы также можете использовать numpy.random.pareto для более драматического / взрывного шума.Эти методы генерируют независимые выборки.

Если у вас есть распределение в виде набора или массива, из которого вы хотите получить выборки без повторения (например, у вас есть массив [0.1, 0.3, 0.9] и вы хотитечтобы генерировать шум только с этими значениями), вы используете встроенный в Python random.random.choice ([0,1, 0,3, 0,9]) для получения независимых выборок из вашего собственного дистрибутива.Вы также можете указать replace=False.

...