高斯模糊(英語(yǔ):Gaussian Blur),通常用它來(lái)減少圖像噪聲以及降低細(xì)節(jié)層次。這種模糊技術(shù)生成的圖像,其視覺(jué)效果就像是經(jīng)過(guò)一個(gè)半透明屏幕在觀察圖像,這與鏡頭焦外成像效果散景以及普通照明陰影中的效果都明顯不同。高斯模糊也用于計(jì)算機(jī)視覺(jué)算法中的預(yù)先處理階段,以增強(qiáng)圖像在不同比例大小下的圖像效果(參見(jiàn)尺度空間表示以及尺度空間實(shí)現(xiàn))。 從數(shù)學(xué)的角度來(lái)看,圖像的高斯模糊過(guò)程就是圖像與正態(tài)分布做卷積。由于正態(tài)分布又叫作高斯分布,所以這項(xiàng)技術(shù)就叫作高斯模糊。圖像與圓形方框模糊做卷積將會(huì)生成更加精確的焦外成像效果。由于高斯函數(shù)的傅立葉變換是另外一個(gè)高斯函數(shù),所以高斯模糊對(duì)于圖像來(lái)說(shuō)就是一個(gè)低通濾波器。
# 高斯模糊
# 高斯模糊
# 操作
# cv2.GaussianBlur(image, (135, 135), 0) #(5, 5)表示高斯矩陣(高斯內(nèi)核)的長(zhǎng)與寬都是5(必須為奇數(shù)),標(biāo)準(zhǔn)差取0
import cv2
import numpy as np
def clamp(pv): #保證 RGB三色值的數(shù)值不超過(guò)255
if pv>255:
return 255
if pv0:
return 0
else:
return pv
def gaussian_noise(image): #給圖片加一些噪聲,高斯噪聲
h, w, c = image.shape #獲取三個(gè)值,高度、寬度、深度
for row in range(h): #在寬度、 高度中遍歷進(jìn)行像素點(diǎn)RGB的賦值
for col in range(w):
s=np.random.normal(0, 20, 3) #獲取隨機(jī)數(shù) 3個(gè)數(shù)的數(shù)組
b = image[row, col, 0] # blue 原來(lái)的藍(lán)色值
g = image[row, col, 1] # green
r = image[row, col, 2] # red
image[row, col, 0] = clamp(b + s[0]) #加上處理賦值
image[row, col, 1] = clamp(g + s[1])
image[row, col, 2] = clamp(r + s[2])
cv2.imshow("Gauss_noise", image)
print("--------Hello Python--------")
src=cv2.imread("lena.jpg")
cv2.imshow("Source Image",src)
t1=cv2.getTickCount()#獲取時(shí)間值
gaussian_noise(src)
t2=cv2.getTickCount()#獲取時(shí)間值
time=(t2-t1)/cv2.getTickFrequency()#計(jì)算出時(shí)間(s)
print("所用時(shí)間:%s"%(time*1000))
dst = cv2.GaussianBlur(src, (2555,2555), 15)#進(jìn)行高斯模糊處理
cv2.imshow("Gauss_blur",dst)
cv2.waitKey(0)
cv2.destroyAllWindows()