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()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章