App下載

怎么使用OpenCV+Python實現(xiàn)圖片高斯模糊

猿友 2021-08-03 11:22:01 瀏覽數(shù) (3857)
反饋

高斯模糊是一種計算機視覺算法的預先處理過程,很多學習機器學習的小伙伴都會接觸到它,今天小編就給大家?guī)砹藀ython實現(xiàn)高斯模糊的實例分享,接下來就讓我們來看看python怎么實現(xiàn)高斯模糊吧。

本文實例為大家分享了OpenCV3.3+Python3.6實現(xiàn)圖片高斯模糊的具體代碼,供大家參考,具體內(nèi)容如下

高斯模糊

高斯模糊(英語:Gaussian Blur),通常用它來減少圖像噪聲以及降低細節(jié)層次。這種模糊技術(shù)生成的圖像,其視覺效果就像是經(jīng)過一個半透明屏幕在觀察圖像,這與鏡頭焦外成像效果散景以及普通照明陰影中的效果都明顯不同。高斯模糊也用于計算機視覺算法中的預先處理階段,以增強圖像在不同比例大小下的圖像效果(參見尺度空間表示以及尺度空間實現(xiàn))。 從數(shù)學的角度來看,圖像的高斯模糊過程就是圖像與正態(tài)分布做卷積。由于正態(tài)分布又叫作高斯分布,所以這項技術(shù)就叫作高斯模糊。圖像與圓形方框模糊做卷積將會生成更加精確的焦外成像效果。由于高斯函數(shù)的傅立葉變換是另外一個高斯函數(shù),所以高斯模糊對于圖像來說就是一個低通濾波器。

高斯模糊原理: “模糊”,就是將圖像中每個像素值進行重置的過程,這個過程采用將每一個像素都設置成周邊像素的平均值。 

# 高斯模糊
#     高斯模糊
#     操作
#     cv2.GaussianBlur(image, (135, 135), 0)  #(5, 5)表示高斯矩陣(高斯內(nèi)核)的長與寬都是5(必須為奇數(shù)),標準差取0
 
import cv2
import numpy as np
 
def clamp(pv):  #保證 RGB三色值的數(shù)值不超過255
    if pv>255:
        return 255
    if pv<0:
        return 0
    else:
        return pv
 
def gaussian_noise(image):  #給圖片加一些噪聲,高斯噪聲
    h, w, c = image.shape  #獲取三個值,高度、寬度、深度
    for row in range(h):  #在寬度、 高度中遍歷進行像素點RGB的賦值
        for col in range(w):
            s=np.random.normal(0, 20, 3)  #獲取隨機數(shù)  3個數(shù)的數(shù)組
            b = image[row, col, 0]  # blue   原來的藍色值
            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()#獲取時間值
gaussian_noise(src)
t2=cv2.getTickCount()#獲取時間值
time=(t2-t1)/cv2.getTickFrequency()#計算出時間(s)
print("所用時間:%s"%(time*1000))
 
dst = cv2.GaussianBlur(src, (2555,2555), 15)#進行高斯模糊處理
cv2.imshow("Gauss_blur",dst)
 
cv2.waitKey(0)
cv2.destroyAllWindows()

(1)原圖:

原圖

(2)高斯噪聲圖片

高斯噪聲

(3)高斯模糊效果

高斯模糊

以上就是python實現(xiàn)高斯模糊的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持W3Cschool。


0 人點贊