1、先用原图像生成3张有噪声的图像:
import numpy as np
from PIL import Image
import cv2
import matplotlib.pyplot as plt
image=Image.open('1.jpg')
retimg=np.array(image)
row,col,_=retimg.shape
for i in range (3):
retimg=np.array(image)
for j in range(5000):
x=np.random.randint(0,row-1)
y=np.random.randint(0,col-1)
retimg[x,y][0]=255
retimg[x,y][1]=255
retimg[x,y][2]=255
result=Image.fromarray(retimg.astype('uint8')).convert('RGB')
result.show()
result.save('C:/Users/XX/Desktop/img/'+str(i)+'.jpg')
原图像:
3张噪声图像:
2、用图像平均算法进行去噪
#图像平均
import numpy as np
from PIL import Image
import cv2
import matplotlib.pyplot as plt
def Image_average(img1,img2,img3):
img_H,img_W,_=img1.shape
retimg=np.zeros((img_H,img_W,3))
for i in range(img_H):
for j in range(img_W):
for k in range(3):
#用int将图像像素值转化,防止256时自动进0
retimg[i,j][k]=np.round((int(img1[i,j][k])+int(img2[i,j][k])+int(img3[i,j][k]))/3)
return retimg
#读取3张图片
img1=Image.open('0.jpg')
img2=Image.open('1.jpg')
img3=Image.open('2.jpg')
img_array1=np.array(img1)
img_array2=np.array(img2)
img_array3=np.array(img3)
img_result=Image_average(img_array1,img_array2,img_array3)
img_result=Image.fromarray(img_result.astype('uint8')).convert('RGB')
img_result.show()
效果图: