目录
[一 涉及的函数](#一 涉及的函数)
[二 实践](#二 实践)
一 涉及的函数
- skimage.util.random_noise( )
python
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( )
python
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 实践①
- 代码
python
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 实践②
- 代码
python
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方法