数字图像噪声_Python
生活随笔
收集整理的這篇文章主要介紹了
数字图像噪声_Python
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
數(shù)字圖像噪聲_Python
本文鏈接:https://blog.csdn.net/TOMBOY_Marry/article/details/83997515
一:數(shù)字圖像噪聲來(lái)源
圖像的獲取(數(shù)字化過(guò)程)和傳輸過(guò)程,當(dāng)使用相機(jī)獲取圖像時(shí),光照程度和傳感器溫度是生成圖像大量噪點(diǎn)的主要因素。
二:灰度圖加入高斯噪聲(正態(tài)噪聲)
def GaussianNoise(src,mean,sigma):NoiseImg=srcrows,cols=NoiseImg.shapefor i in range(rows):for j in range(cols):NoiseImg[i,j]=NoiseImg[i,j]+random.gauss(mean,sigma)if NoiseImg[i,j]<0:NoiseImg[i,j]=0elif NoiseImg[i,j]>255:NoiseImg[i,j]=255return NoiseImgimg=cv2.imread('IMG_4470.JPG',0) img=GaussianNoise(img,2,4) cv2.imwrite('IMG_4470_GaussianNoise.jpg',img) cv2.imshow('IMG_4470_GaussianNoise',img) cv2.waitKey(0) cv2.destroyAllWindows() cv2.waitKey(1)輸出結(jié)果為:
原圖為:
三:彩色圖加入高斯噪聲
def GaussianNoise_color(src,mean,sigma):NoiseImg=srcrows,cols,_=NoiseImg.shapefor i in range(rows):for j in range(cols):NoiseImg[i,j]=NoiseImg[i,j]+random.gauss(mean,sigma)return NoiseImgimg=cv2.imread('IMG_4470.JPG') img=GaussianNoise_color_percentage(img,2,4) cv2.imwrite('IMG_4470_GaussianNoise_color_1.jpg',img) cv2.imshow('IMG_4470_GaussianNoise_color_1',img) cv2.waitKey(0) cv2.destroyAllWindows() cv2.waitKey(1)輸出為:
四:部分像素點(diǎn)加入高斯噪聲
def GaussianNoise_color_percentage(src,mean,sigma,percentage):NoiseImg=srcrows,cols,_=NoiseImg.shapenum=int(rows*cols*percentage)for i in range(num):randX=np.random.randint(0,rows-1)randY=np.random.randint(0,cols-1)NoiseImg[randX,randY]=NoiseImg[randX,randY]+random.gauss(mean,sigma)return NoiseImgimg=cv2.imread('IMG_4470.JPG') img=GaussianNoise_color_percentage(img,2,4,0.5) cv2.imwrite('IMG_4470_GaussianNoise_color_percentage_1.jpg',img) cv2.imshow('IMG_4470_GaussianNoise_color_percentage_1',img) cv2.waitKey(0) cv2.destroyAllWindows() cv2.waitKey(1)輸出結(jié)果為:
五:圖像加入椒鹽噪聲_胡椒點(diǎn)
def Pepper(src,percentage):NoiseImg=srcrows,cols,_=NoiseImg.shapeNoiseNum=int(percentage*rows*cols)for i in range(NoiseNum):randX=np.random.randint(0,rows-1)randY=np.random.randint(0,cols-1)if random.randint(0,1)<=0.5:NoiseImg[randX,randY]=0else:NoiseImg[randX,randY]=NoiseImg[randX,randY]return NoiseImgimg=cv2.imread('IMG_4470.JPG') img=PepperandSalt_2(img,0.01) cv2.imwrite('IMG_4470_PepperandSalt_7_pepper.jpg',img) cv2.imshow('IMG_4470_PepperandSalt_7',img) cv2.waitKey(0) cv2.destroyAllWindows() cv2.waitKey(1)輸出結(jié)果為:
六:圖像加入椒鹽噪聲_鹽點(diǎn)
def salt(src,percentage):NoiseImg=srcrows,cols,_=NoiseImg.shapeNoiseNum=int(percentage*rows*cols)for i in range(NoiseNum):randX=np.random.randint(0,rows-1)randY=np.random.randint(0,cols-1)if random.randint(0,1)<=0.5:NoiseImg[randX,randY]=255else:NoiseImg[randX,randY]=NoiseImg[randX,randY]return NoiseImgimg=cv2.imread('IMG_4470.JPG') img=salt(img,0.01) cv2.imwrite('IMG_4470_PepperandSalt_8_salt.jpg',img) cv2.imshow('IMG_4470_PepperandSalt_8',img) cv2.waitKey(0) cv2.destroyAllWindows() cv2.waitKey(1)輸出結(jié)果為:
七:灰度圖加入椒鹽噪聲
def PepperandSalt(src,percentage):NoiseImg=srcrows,cols=NoiseImg.shapeNoiseNum=int(percentage*rows*cols)for i in range(NoiseNum):randX=np.random.randint(0,rows-1)randY=np.random.randint(0,cols-1)if random.randint(0,1)<=0.5:NoiseImg[randX,randY]=0else:NoiseImg[randX,randY]=255return NoiseImgimg=cv2.imread('IMG_4470.JPG',0) img=PepperandSalt(img,0.05) cv2.imwrite('IMG_4470_PepperandSalt_2.jpg',img) cv2.imshow('IMG_4470_PepperandSalt_2',img) cv2.waitKey(0) cv2.destroyAllWindows() cv2.waitKey(1)輸出結(jié)果為:
八:彩色圖加入椒鹽噪聲
def PepperandSalt_color(src,percentage):NoiseImg=srcrows,cols,_=NoiseImg.shapeNoiseNum=int(percentage*rows*cols)for i in range(NoiseNum):randX=np.random.randint(0,rows-1)randY=np.random.randint(0,cols-1)if random.randint(0,1)<=0.5:NoiseImg[randX,randY]=0else:NoiseImg[randX,randY]=255return NoiseImgimg=cv2.imread('IMG_4470.JPG') img=PepperandSalt_color(img,0.05) cv2.imwrite('IMG_4470_PepperandSalt_color.jpg',img) cv2.imshow('IMG_4470_PepperandSalt_color',img) cv2.waitKey(0) cv2.destroyAllWindows() cv2.waitKey(1)輸出結(jié)果為:
九:指數(shù)分布噪聲
def Exponent(src,constant,percentage):NoiseImg=srcrows,cols=NoiseImg.shapenum=int(rows*cols*percentage)for i in range(num):randX=np.random.randint(0,rows-1)randY=np.random.randint(0,cols-1)if NoiseImg[randX,randY]>128:NoiseImg[randX,randY]=constant*np.exp(-constant*NoiseImg[randX,randY]) else:NoiseImg[randX,randY]=NoiseImg[randX,randY]return NoiseImgimg=cv2.imread('IMG_4470.JPG',0) img=Exponent(img,0.5,0.01) cv2.imwrite('IMG_4470_Exponent.jpg',img) cv2.imshow('IMG_4470_Exponent',img) cv2.waitKey(0) cv2.destroyAllWindows() cv2.waitKey(1)輸出結(jié)果為:
十:均勻分布噪聲
def distribution(src,low,high,percentage):NoiseImg=srcrows,cols=NoiseImg.shapenum=int(rows*cols*percentage)for i in range(num):randX=np.random.randint(0,rows-1)randY=np.random.randint(0,cols-1)if low<NoiseImg[randX,randY]<high and a!=b:NoiseImg[randX,randY]=1/(a-b) else:NoiseImg[randX,randY]=NoiseImg[randX,randY]return NoiseImgimg=cv2.imread('IMG_4470.JPG',0) img=distribution(img,100,200,0.1) cv2.imwrite('IMG_4470_distribution.jpg',img) cv2.imshow('IMG_4470_distribution',img) cv2.waitKey(0) cv2.destroyAllWindows() cv2.waitKey(1)輸出結(jié)果為:
十一:伽馬(愛(ài)爾蘭)噪聲
伽馬曲線如下:
a=10 b=20 z=np.arange(1,20,0.1) y=(a**b)*(z**(b-1))/np.math.factorial(b-1)*np.exp(-a*z) plt.plot(z,y) def gamma_noise(src,constant_a,constant_b,percentage):NoiseImg=srcrows,cols=NoiseImg.shapenum=int(rows*cols*percentage)for i in range(num):randX=np.random.randint(0,rows-1)randY=np.random.randint(0,cols-1)if NoiseImg[randX,randY]>120 and b!=0:z=NoiseImg[randX,randY]NoiseImg[randX,randY]=(a**b)*(z**(b-1))/np.math.factorial(b-1)*np.exp(-a*z) else:NoiseImg[randX,randY]=NoiseImg[randX,randY]return NoiseImgimg=cv2.imread('IMG_4470.JPG',0) img=gamma_noise(img,5,10,0.01) cv2.imwrite('IMG_4470_gamma_noise.jpg',img) cv2.imshow('IMG_4470_gamma_noise',img) cv2.waitKey(0) cv2.destroyAllWindows() cv2.waitKey(1)輸出結(jié)果為:
總結(jié)
以上是生活随笔為你收集整理的数字图像噪声_Python的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python代码学习-数据处理图片加遮挡
- 下一篇: 数字图像处理——添加高斯噪声椒盐噪声