目录
一 涉及的函数
二 实践
一 涉及的函数
- skimage.util.random_noise( )
skimage.util.random_noise(image, mode='gaussian', seed=None, clip=True, **kwargs)
函数的功能:为浮点型图片添加各种随机噪声。
输入:
①image:输入图像,将会被转换成浮点型。
②mode: 可选,为要加的噪声类型。主要有 gaussian:高斯噪声。localvar:高斯分布的加性噪声,在“图像”的每个点处具有指定的局部方差。poisson:泊松噪声。salt:盐噪声,随机将像素值变成1。pepper:椒噪声,随机将像素值变成0或-1,取决于矩阵的值是否带符号。s&p:椒盐噪声。speckle:乘噪声使用out = image + n*image,其中N是具有指定均值和方差的均匀噪声。
③seed: 可选,int型。如果选择的话,在生成噪声前会先设置随机种子以避免伪随机。
④clip: 可选,bool型。如果是True,在添加均值,泊松以及高斯噪声后,会将图片的数据裁剪到合适范围内。如果值为False,则输出矩阵的值可能会超出[-1,1]。
...
返回值:
ndarry型,且值在[0,1]或者[-1,1]之间,取决于是否有符号数。
- skimage.util.montage( )
skimage.util.montage(arr_in, fill='mean', rescale_intensity=False, grid_shape=None, padding_width=0, multichannel=False, *, channel_axis=None)
函数功能:创建多个单通道或多通道图像的蒙太奇。
输入:
①arr_in:一个数组,表示 K 个形状相同的图像的集合。
②fill:可选。
③rescale_intensity:布尔型,可选。是否将每张图像的强度重新缩放为 [0, 1]。
④grid_shape:元组,可选。
⑤padding_width:int, 可选。
⑥multichannel:布尔值,可选。此参数已弃用,改为指定 channel_axis。
⑦channel_axis:int,可选。
返回:
输入图像粘合在一起的输出数组(包括填充p)。
二 实践
1 实践①
- 代码
from skimage.io import imread
from skimage.util import random_noise
import matplotlib.pyplot as plt
def dealImageResult(img_path):
im = imread(img_path)
gaussian_noisy_img = random_noise(im, mode='gaussian', var=0.5**2)
poisson_noisy_img = random_noise(im, mode='poisson')
pepper_noisy_img = random_noise(im, mode='pepper')
salt_noisy_img = random_noise(im, mode='salt')
sp_noisy_img = random_noise(im, mode='s&p')
fig = plt.figure(figsize=(10, 10))
titles = ["img", " gaussian", "poisson", "pepper", "salt", "s&p"]
images = [im, gaussian_noisy_img, poisson_noisy_img, pepper_noisy_img, salt_noisy_img, sp_noisy_img]
for i in range(6):
plt.subplot(2, 3, i + 1), plt.imshow(images[i], 'gray')
plt.title(titles[i])
plt.xticks([]), plt.yticks([])
plt.show()
fig.savefig('test_results.jpg', bbox_inches='tight')
if __name__ == '__main__':
dealImageResult("3.jpg")
pass
- 结果图
2 实践②
- 代码
import numpy as np
from skimage.io import imread
from skimage.util import random_noise, montage
import matplotlib.pyplot as plt
def dealImageResult(img_path):
im = imread(img_path)
sigmas = np.linspace(0, 1, 9)
noisy_images = np.zeros((9, im.shape[0], im.shape[1], im.shape[2]))
for i in range(len(sigmas)):
noisy_images[i, :, :, :] = random_noise(im, var=sigmas[i]**2)
noisy_montage = montage(noisy_images, rescale_intensity=True, channel_axis=-1)
fig = plt.figure(figsize=(10, 10))
plt.imshow(noisy_montage)
plt.title('Noisy montage', size=10)
plt.axis('off')
plt.show()
fig.savefig('test_results.jpg', bbox_inches='tight')
if __name__ == '__main__':
dealImageResult("5.jpg")
pass
- 结果图
前文回顾
入门篇目录
数字图像处理(入门篇)一 图像的数字化与表示
数字图像处理(入门篇)二 颜色空间
数字图像处理(入门篇)三 灰度化
数字图像处理(入门篇)四 像素关系
数字图像处理(入门篇)五 图像数据预处理之颜色空间转换
数字图像处理(入门篇)六 图像数据预处理之坐标变化
数字图像处理(入门篇)七 图像数据预处理之灰度变化
数字图像处理(入门篇)八 图像数据预处理之直方图
数字图像处理(入门篇)九 图像数据预处理之滤波
数字图像处理(入门篇)十 边缘检测
数字图像处理(入门篇)十一 形态学处理
数字图像处理(入门篇)十二 自适应阈值分割
数字图像处理(入门篇)十三 仿射变换
数字图像处理(入门篇)十四 透视变换
实践篇目录
数字图像处理(实践篇)一 将图像中的指定目标用bBox框起来吧!
数字图像处理(实践篇)二 画出图像中目标的轮廓
数字图像处理(实践篇)三 将两张图像按照指定比例融合
数字图像处理(实践篇)四 图像拼接-基于SIFT特征点和RANSAC方法
数字图像处理(实践篇)五 使用Grabcut算法进行物体分割
数字图像处理(实践篇)六 利用hough变换进行直线检测
数字图像处理(实践篇)七 利用霍夫变换进行圆环检测
数字图像处理(实践篇)八 Harris角点检测
数字图像处理(实践篇)九 基于边缘的模板匹配
数字图像处理(实践篇)十 图像质量检测
数字图像处理(实践篇)十一 图像中的条形码解析
数字图像处理(实践篇)十二 基于小波变换的图像降噪