图像随机加噪声

        对于图像,一般做图像增强都是得要求算法/模型去噪效果好。那么对应图像,原始图像一般多多少少有噪声,通过我们自己的创新算法就可以去噪。也可以有很多客观指标来评价去噪后图像的效果的好坏。 

下图为我自己的算法处理的图像,包括处理前和处理后:

          

        可以看出我的算法,主要针对图像的光照不均进行非均匀的亮度自适应校正。当然也包含低照度图像的增强,既可以给亮度暗的区域调整亮,也可以给亮的区域自适应调整暗。就是在一幅图中不至于在给低照度增亮的同时,亮区域更亮(第三个图就是别人的算法,暗的区域亮的同时亮的区域就更亮了,显然,不是我们想要的增强目的)。

 随机加噪的作用:

        但是怎么能说明你的算法是有很强的鲁棒性,这个论文中表达的一个思想就是——给图像人为随机加噪,加不同的类型,不同的密度。可以使用不同算法去噪对比,再结合处理后图像的客观指标来比较,看自己的算法能不能经得住考验。还可以验证自己的算法是不是只能去原图的固定类噪声,我们加不同类型,如果去噪效果仍然很好,那么说明我们的算法确实有很强的鲁棒性,所以说,你算法有很强的鲁棒性,不是你说就可以的,要用实验来验证,那这种随机加噪不失为一种很好的证据。(对写论文很好的思路)


import cv2
import skimage


#img = cv2.imread('E:/python/CSDN/image/1.bmp',cv2.IMREAD_GRAYSCALE)
img = cv2.imread("img/1-7.jpg")
cv2.imshow("original",img)
# fig=plt.figure(figsize=(10, 50))
#显示原图
# plt.subplot(12,3,1),plt.imshow(img,'gray'),plt.title('original')

def addGaussNoise(origin,var):#添加高斯噪声函数
    #var = random.uniform(0.0001, 0.04)
    noisy = skimage.util.random_noise(origin, mode='gaussian', var=var)
    return noisy

def addSaltNoise(origin,var):#添加椒盐噪声函数
    #var = random.uniform(0.01, 0.2)
    noisy = skimage.util.random_noise(origin, mode='s&p', amount=var)
    return noisy

def addSpeckleNoise(origin,var):#添加乘法噪声函数
    #var = random.uniform(0.0001, 0.04)
    noisy = skimage.util.random_noise(origin, mode='speckle', var=var)
    return noisy

img1 = addGaussNoise(img,0.02)
img2 = addGaussNoise(img,0.04)
img3 = addGaussNoise(img,0.06)
img4 = addGaussNoise(img,0.08)
img5 = addGaussNoise(img,0.10)

# img1 = addSaltNoise(img,0.02)
# img2 = addSaltNoise(img,0.04)
# img3 = addSaltNoise(img,0.06)
# img4 = addSaltNoise(img,0.08)
# img5 = addSaltNoise(img,0.10)

#img = addSpeckleNoise(img)
# img1 = addSpeckleNoise(img,0.02)
# img2 = addSpeckleNoise(img,0.04)
# img3 = addSpeckleNoise(img,0.06)
# img4 = addSpeckleNoise(img,0.08)
# img5 = addSpeckleNoise(img,0.10)

#显示添加噪声的原图
# # plt.subplot(12,3,4),plt.imshow(img,'gray'),plt.title('img_add_gaussin')
cv2.imshow('add1', img1)#显示读取的图
cv2.imshow('add2', img2)#显示读取的图
cv2.imshow('add3', img3)#显示读取的图
cv2.imshow('add4', img4)#显示读取的图
cv2.imshow('add5', img5)#显示读取的图

# #保存图片
# cv2.imwrite("img2/2222.jpg",img1)


cv2.waitKey()

原图:

加噪效果:根据常见度广泛度和分类的类型,实验选取了三种典型噪声可以充分证明算法的鲁棒性了,分别加了密度0.02,0.04,0.06,0.08,0.1

加高斯:

加椒盐:

加乘法噪声:

 1、根据图像和噪声之间的相互关系将噪声划分为以下三种形式:

  (1)加性噪声,图像中的加性噪声一般是在图像的传输过程中由“信道噪声”和CCD摄像机对图像数字化的过程中产生的。

  (2)乘性噪声,图像中的乘性噪声一般是由胶片中的颗粒、飞点扫描图像中的噪声、电视扫描光栅等原因造成的。

  (3)量化噪声,图像中的量化噪声是图像在量化过程中图像从模拟到数字所产生的差异,是图像量化过程中的误差。

2、图像中的噪声根据其概率分布的情况可以分为高斯噪声(Gaussian noise)、脉冲噪声(椒盐噪声)(Impulsive noise)、瑞利噪声(Rayleigh noise)、伽马噪声(Gamma noise)、指数噪声(Exponential noise)和均匀噪声(Uniform noise)等各种形式。

       其中高斯噪声是所有噪声当作使用最为广泛的,高斯噪声是一种加性噪声,即噪声直接加到原图像上,因此可以用线性滤波器滤除。传感器在低照明度或者高温的条件下产生的噪声就属于高斯噪声,电子电路中产生的噪声也属于高斯噪声,还有很多噪声都可以根据高斯分布(正态分布)的形式进行描述。高斯噪声模型适用于电子电路、低照度、高温引起的传感器噪声。

       椒盐噪声又称为脉冲噪声,它是一种随机出现的白点(盐噪声)或者黑点(椒噪声),可能是亮的区域有黑色像素或是在暗的区域有白色像素(或是两者皆有),类似把椒盐撒在图像上,因此得名,如电视里的雪花噪声等。椒盐噪声既不属于加性噪声也不属于乘性噪声,椒盐噪声可以认为是一种逻辑噪声,用线性滤波器滤除的结果不好,一般采用中值滤波器滤波可以得到较好的结果。椒盐噪声模型使用于成像中开关操作的误操作引起的噪声等。是图像中经常见到的一种噪声。椒盐噪声的成因可能是影像讯号受到突如其来的强烈干扰而产生、类比数位转换器或位元传输错误等。例如失效的感应器导致像素值为最小值,饱和的感应器导致像素值为最大值。

猜你喜欢

转载自blog.csdn.net/m0_63172128/article/details/127518737