import numpy as np
import matplotlib.pyplot as plt
import imageio
from numpy.random import rand as Uniforme
Y_Uniforme = [Uniforme() for i in range(N)]
def Bernoulli(p):
U = Uniforme()
if U < p:
return 1
else:
return 0
def occurence(val, y):
occ = np.zeros(val.size)
for j in range(y.size):
for k in range(val.size):
if y[j] == val[k]:
occ[k] += 1
break
return occ
def Binomiale(K, p):
counter = 0
for i in range(K + 1):
if Bernoulli(p) == 1:
counter += 1
return counter
def Geometrique(p):
counter = 0
while not Bernoulli(p):
counter += 1
return counter
def Exponentielle(Lambda):
x = -1 / Lambda * np.log(Uniforme())
return x
def Gamma(a, n):
x = 0
for i in range(n):
x += Exponentielle(1) ** (a - 1)
return x / n
def Beta(a, b, n):
B = (Gamma(a, n) * Gamma(b, n) / Gamma(a + b, n))
return B
def Rayleigh(s):
R = np.sqrt(2 * Exponentielle(1 / s))
return R
import imageio
Y = imageio.imread('cameraman.jpg')
Y = np.array(Y)
fig, axs = plt.subplots(2)
plt.suptitle("Bruit ricien")
axs[0].imshow(Y, cmap='gray')
def psnoise(Y, p):
for i in range(len(Y)):
for j in range(len(Y[0])):
sigma2 = .5
b = rayley(sigma2)
Y[i][j] = b
return Y
print(Y)
Y = psnoise(Y,.5)
axs[1].imshow(Y, cmap='gray')
def Normale(M):
m = 1 / 2
v = 1 / 12
N = 0
for i in range(M):
N += Uniforme()
N = (np.sqrt(M) * (1 / M * N - m) / np.sqrt(v))
return N
def Gauss(a, b, n):
counter = 0
for i in range(n):
if b >= Normale(n) >= a :
counter += 1
I = np.sqrt(2*np.pi)*counter/n
return I
# 2.5066282746310002, n = 10
# 2.4063631436457604, n = 100
# 2.373776976075557, n = 1000