当前位置:网站首页>往图片添加椒盐噪声或高斯噪声
往图片添加椒盐噪声或高斯噪声
2022-07-06 23:59:00 【瀛台夜雪】
往图片添加椒盐噪声或高斯噪声
椒盐噪声添加
椒盐噪声(salt & pepper noise)是数字图像的一个常见噪声,所谓椒盐,椒就是黑,盐就是白,椒盐噪声就是在图像上随机出现黑色白色的像素。椒盐噪声是一种因为信号脉冲强度引起的噪声,产生该噪声的算法也比较简单。
往灰度图添加椒盐噪声
#往灰度图像添加椒盐噪声
# src 输入图像的路径
# dst 输出图像的路径
# prob 噪声的占比
def addSaltPepperNoise_gray(src,dst,probility=0.05,method="salt_pepper"):
#将图片转换成灰度图
imarray=np.array(Image.open(src).convert('L'))
height,width=imarray.shape
for i in range(height):
for j in range(width):
#随机添加椒盐噪声
if np.random.random(1)<probility:
if np.random.random(1)<0.05:
imarray[i,j]=0
else:
imarray[i,j]=255
#将生成的椒盐噪声图像添加到
new_im=Image.fromarray(imarray)
new_im.save(dst)
return new_im
往彩色图添加椒盐噪声
def RGBAddNoise(src, dst, prob): # 同时加杂乱(RGB单噪声)RGB图噪声 prob:噪声占比
imarray = np.array(Image.open(src))
height, width, channels = imarray.shape
# prob = 0.05 #噪声占比 已经比较明显了 >0.1 严重影响画质
NoiseImg = imarray.copy()
NoiseNum = int(prob * height * width)
for i in range(NoiseNum):
rows = np.random.randint(0, height - 1)
cols = np.random.randint(0, width - 1)
channel = np.random.randint(0, 3)
if np.random.randint(0, 2) == 0:
NoiseImg[rows, cols, channel] = 0
else:
NoiseImg[rows, cols, channel] = 255
# return NoiseImg
new_im = Image.fromarray(NoiseImg)
new_im.save(dst)
return new_im
高斯噪声添加
高斯噪声是指噪声分布的概率密度函数服从高斯分布(正态分布)的一类噪声,其产生的主要原因是由于相机在拍摄时视场较暗且亮度不均匀造成的,同时相机长时间工作使得温度过高也会引起高斯噪声,另外电路元器件自身噪声和互相影响也是造成高斯噪声的重要原因之一。
往灰度图添加高斯噪声
def addGaussNoiseGray(src,dst,mean,sigma):
image=cv2.imread(src,cv2.IMREAD_GRAYSCALE)
height,width=image.shape
gauss=np.random.normal(mean,sigma,image.shape)
gauss=gauss.reshape(height,width)
noiseImage=image+gauss
noiseImage=np.clip(noiseImage,0,255)
noiseImage=noiseImage.astype('uint8')
cv2.imwrite(dst,noiseImage)
return noiseImage
往彩色图添加高斯噪声
#彩色图像中添加高斯噪声
def addGaussNoiseRgb(src,dst,mean,sigma):
image=cv2.imread(src)
height,width,channels=image.shape
#建立高斯噪声
gauss=np.random.normal(mean,sigma,(height,width,channels))
gauss=gauss.reshape(height,width,channels)
noiseImage=image+gauss
noiseImage=np.clip(noiseImage,0,255)
noiseImage=noiseImage.astype('uint8')
cv2.imwrite(dst,noiseImage)
return noiseImage
结果展示
边栏推荐
- Nodejs get client IP
- Paper reading [MM21 pre training for video understanding challenge:video captioning with pre training techniqu]
- Leakage relay jelr-250fg
- 导航栏根据路由变换颜色
- 消息队列:消息积压如何处理?
- 4. 对象映射 - Mapping.Mapster
- DOM node object + time node comprehensive case
- 5. Data access - entityframework integration
- [JS component] custom select
- Make web content editable
猜你喜欢
Realize GDB remote debugging function between different network segments
判断文件是否为DICOM文件
Design, configuration and points for attention of network unicast (one server, multiple clients) simulation using OPNET
JVM the truth you need to know
得物客服一站式工作台卡顿优化之路
Lombok插件
Getting started with DES encryption
Mapbox Chinese map address
Leakage relay llj-100fs
Introduction to distributed transactions
随机推荐
Common skills and understanding of SQL optimization
sql查询:将下一行减去上一行,并做相应的计算
常用消息队列有哪些?
Reading the paper [sensor enlarged egocentric video captioning with dynamic modal attention]
The navigation bar changes colors according to the route
Flinksql 读写pgsql
【Shell】清理nohup.out文件
得物客服一站式工作台卡顿优化之路
ssm框架的简单案例
Realize GDB remote debugging function between different network segments
4. 对象映射 - Mapping.Mapster
bat 批示处理详解
5. Data access - entityframework integration
High voltage leakage relay bld-20
zabbix_get测试数据库失败
Lombok plug-in
拼多多商品详情接口、拼多多商品基本信息、拼多多商品属性接口
async / await
消息队列:如何确保消息不会丢失
Lombok插件