300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > python实现向图像随机添加高斯白噪声 并修改尺寸

python实现向图像随机添加高斯白噪声 并修改尺寸

时间:2020-01-08 03:56:23

相关推荐

python实现向图像随机添加高斯白噪声 并修改尺寸

基于python向图像随机添加高斯噪声,并修改尺寸

噪声分布设置为(均值为0,方差分布在0~50之间)

# -*- coding: utf-8 -*-"""Created on Nov Mon 29 14:09:45 @author: 瀛台夜雪"""import osimport numpy as npimport cv2import globdef main():src_dir='./example/'save_dir = './example/train'src_dir_test='./example/test'save_dir_test = './example/test'#遍历文件夹下所有的图片filepaths = glob.glob(save_dir + '/*.jpg')filepaths_test = glob.glob(src_dir_test + '/*.jpg')def sortKeyFunc(s):return int(os.path.basename(s)[:-4])#os.path.basename()返回path最后的文件名,[:-4],取后缀前的名字filepaths_test.sort(key=sortKeyFunc)filepaths.sort(key=sortKeyFunc)print("[*] Reading train files...")#如果地址不存在,创建新地址文件夹if not os.path.exists(save_dir):os.mkdir(save_dir)os.mkdir(save_dir_test)os.mkdir('./example/train/noisy')os.mkdir('./example/train/original')os.mkdir('./example/test/noisy')os.mkdir('./example/test/original')print("[*] Applying noise...")# np.linspace(start,stop,num)创建等差数列sig = np.linspace(0,50,len(filepaths))np.random.shuffle(sig)# print(sig)sig_test = np.linspace(0,50,len(filepaths_test))np.random.shuffle(sig_test)for i in range(len(filepaths)):image = cv2.imread(filepaths[i])#将图片变换成180*180大小的图片image = cv2.resize(image,(180,180), interpolation = cv2.INTER_CUBIC)row,col,ch = image.shapemean = 0sigma = sig[i]# print("this is train sigma")# print(sigma)#np.random.normal(loc=mean,scale=sigma,size=(row,col,ch))生成高斯分布的概率密度随机数,均值,方差,输入样式#建立方差随机的高斯噪声,方差分布在0到50之间gauss = np.random.normal(mean,sigma,(row,col,ch))gauss = gauss.reshape(row,col,ch)noisy = image + gauss#np.clip(a,a_min,a_max)将输入的原始a限制在a_min与a_max之间,小于a_min赋值为a_min,大于a_max赋值为a_maxnoisy = np.clip(noisy, 0, 255)#noise.astype('uint8'),转变数据类型为uint8型,uint8为8位无符号整数类型,表示范围为[0:255]noisy = noisy.astype('uint8')cv2.imwrite(os.path.join(save_dir, "noisy/%04d.png" %i), noisy)cv2.imwrite(os.path.join(save_dir, "original/%04d.png" %i), image)for i in range(len(filepaths_test)):image = cv2.imread(filepaths_test[i])image = cv2.resize(image,(180,180), interpolation = cv2.INTER_CUBIC)row,col,ch = image.shapemean = 0sigma = sig[i]# print("this is test sigma")# print(sigma)gauss = np.random.normal(mean,sigma,(row,col,ch))gauss = gauss.reshape(row,col,ch)noisy = image + gaussnoisy = np.clip(noisy, 0, 255)noisy = noisy.astype('uint8')cv2.imwrite(os.path.join(save_dir_test, "noisy/%d.png" %i), noisy)cv2.imwrite(os.path.join(save_dir_test, "original/%d.png" %i), image)print("[*] Noisy and original images saved")if __name__ == "__main__":main()

原始图像:

噪声图像:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。