python代码学习-数据处理图片加遮挡、噪声、模糊

(一)python代码学习-数据处理图片加遮挡

代码:

from matplotlib import pyplot as plt
from PIL import Image, ImageDraw
import pylab
import numpy as np
impath = "000001.jpg"
img1 = Image.open(impath)
img1 = np.asarray(img1)/255.00
img2 = Image.open(impath)
draw = ImageDraw.Draw(img2)
draw.rectangle((60,90,100,120), fill = (0,0,0))
img2 = np.asarray(img2)/255.00
plt.figure(1)
plt.subplot(121)
plt.imshow(img1)
plt.title("Origin picture")
plt.subplot(122)
plt.imshow(img2)
plt.title("Add obstacle")
plt.savefig("obstacle_image.jpg")
pylab.show()

(二)python代码学习-数据处理:图片加噪声

数据加噪:

- 高斯噪声(Gaussian noise)是指它的概率密度函数服从高斯分布的一类噪声。如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声。

- 椒盐噪声(salt-and-pepper noise)是指两种噪声,一种是盐噪声(salt noise),另一种是胡椒噪声(pepper noise)。盐=白色(0),椒=黑色(255)。前者是高灰度噪声,后者属于低灰度噪声。一般两种噪声同时出现,呈现在图像上就是黑白杂点。

为图片增加高斯噪声代码

from matplotlib import pyplot as plt
from skimage import io
import skimage
import pylab
impath = "000001.jpg"
image = io.imread(impath)
img1 = image / 255.00
img2 = skimage.util.random_noise(image,mode='gaussian',seed=None,clip=True)
plt.figure(1)
plt.subplot(121)
plt.imshow(img1)
plt.title("Origin picture")
plt.subplot(122)
plt.imshow(img2)
plt.title("Add Gaussian noise")
pylab.show()
plt.savefig("noise_image.jpg")
  • 增加高斯噪声
shimage.util.random_noise(image,mode ='gaussian',seed=None,clip=True)

注意事项:

  • Peckle, Poisson, Localvar, and Gaussian noise 加上噪声后,值可能为负值,也可能超过255;默认情况下,clip参数值为True,将会clip掉这些超过区间的点,如果clip设置为False,就要注意有可能包含一些超过区间的点。
  • Skimage读取图像是RGB,而Opencv是BGR
  • Skimage读取图像后是(height, width, channel)<br>

(三)python代码学习-数据处理:数据加模糊

高斯模糊:

  • 本质上是低通滤波器,输出图像的每个像素点是原图像上对应像素点与周围像素点的加权和。
  • 即用高斯分布权值矩阵与原始图像矩阵做卷积运算。

opencv 函数:

blur = cv2.GaussianBlur(img,(5,5),0)

函数参数说明:

  • (5, 5)表示高斯矩阵的长与宽都是5,
  • 标准差取0时OpenCV会根据高斯矩阵的尺寸自己计算。
  • 高斯矩阵的尺寸越大,标准差越大,处理过的图像模糊程度越大。

图片高斯模糊代码

from matplotlib import pyplot as plt
import cv2
import pylab
impath = "000001.jpg"
kernel_size = (5,5)
sigma = 1.5
img11 = cv2.imread(impath)
# BGR -> RGB
b,g,r=cv2.split(img11)
img11=cv2.merge([r,g,b])
# BGR -> RGB
# img2=img[: , : , : : -1]
img1 = img11/255.00
img2 = cv2.GaussianBlur(img1,kernel_size,sigma)
# cv2.imwrite(blur_image, img2)
plt.figure(1)
plt.subplot(121)
plt.imshow(img1)
plt.title("Origin picture")
plt.subplot(122)
plt.imshow(img2)
plt.title("Add Gaussian Blur")
plt.savefig("blur_image.jpg")
pylab.show()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章