欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python+OpenCV 實現(xiàn)簡單的高斯濾波(推薦)

 更新時間:2021年09月18日 15:31:16   作者:林林zonzon  
這篇文章主要介紹了Python+OpenCV 實現(xiàn)簡單的高斯濾波,在文中需要注意的是,這里我沒有特判當sigma = 0的時候的情況,具體實現(xiàn)過程跟隨小編一起看看吧

基本原理講解:高斯模糊的算法

高斯核函數的編寫:構建權重矩陣,采用高斯二維分布函數的形式進行處理。需要注意的是,這里我沒有特判當sigma = 0的時候的情況。

即是實現(xiàn):

1)權重矩陣的構建

        根據公式:

 計算矩陣內部結構,其中因為要進行歸一化處理,e前方的系數會被約去,因此代碼中不體現(xiàn)。

2)矩陣元素歸一化處理

        計算矩陣內部元素總和sum,最后做矩陣除法得到歸一化處理后的權重矩陣。

# 高斯核生成函數 kernel_size:濾波核大小  sigma:高斯核函數的局部影響范圍
def gauss(kernel_size, sigma):
    #定型0填充
    kernel = np.zeros((kernel_size, kernel_size))
    #確定正態(tài)分布中間值
    center = kernel_size // 2
    # s:方差 sum:記錄總和
    s = sigma ** 2
    sum = 0
    for i in range(kernel_size):
        for j in range(kernel_size):
            #由于最后要進行歸一化處理,此處根號下2Π計算可以省略
            x, y = i - center, j - center
            kernel[i, j] = np.exp(-(x ** 2 + y ** 2) / (2 * s))
            sum += kernel[i, j]
    #歸一化處理后輸出
    kernel = kernel / sum
    return kernel

濾波函數的編寫:將圖片中的每個像素點(邊緣除外)及其周圍像素乘以權重矩陣,實現(xiàn)高斯濾波

 需要注意的是此函數僅能處理彩色圖片,因為只有彩色圖片擁有img.shape[2]元素,灰度圖片沒有img.shape[2]元素不能用這個方法處理。

# 高斯濾波實現(xiàn),img:輸入圖像 kermel:輸入高斯核函數
def myfilter(img,kernel):
    # 讀取img行數核列數
    h = img.shape[0]
    w = img.shape[1]
    # 直接拷貝父對象
    img1 = copy.copy(img)
    # 去掉邊緣
    for i in range(1,h-1):
        for j in range(1,w-1):
            # 三通道處理
            for c in range(0,2):
                sum = 0
                # 加權
                for k in range(-1,2):
                    for l in range(-1,2):
                        sum += img[i+k,j+l,c]*kernel[k+1,l+1]
                img1[i,j,c] = sum
    return img1

同時在處理高斯濾波的時候,函數采取的是針對3*3的kernel_size進行編寫的,要更改kernel_size的大小,需要更改此處的range范圍。 

 下面是灰度圖像的處理方式:

def myfilter2(img,kernel):
    # 讀取img行數核列數
    h = img.shape[0]
    w = img.shape[1]
    # 直接拷貝父對象
    img1 = copy.copy(img)
    # 去掉邊緣
    for i in range(1,h-1):
        for j in range(1,w-1):
            sum = 0
            for k in range(-1,2):
                for l in range(-1,2):
                    sum += img[i+k,j+l]*kernel[k+1,l+1]
            img1[i,j] = sum
    return img1

 最后整個運行代碼:

import copy
import cv2
import numpy as np
#圖像讀取
img_y = cv2.imread('p2.jpg')
# 選擇高斯生成函數3*3,其中sigama = 3
kernel = gauss(3,3)
# 打印這個生成函數
print(kernel)
# 高斯濾波處理
img1 = myfilter(img_y, kernel)
cv2.imshow('P1_yuantu',img_y)
cv2.imshow('P1_gaussian', img1)
cv2.waitKey(0)

 輸入輸出圖像結果展示:

原圖與高斯濾波后

需要注意的是采取的方法很原始,如果輸入的圖像過大,運行時間會很久。

這方面東西挺有意思的,只是初略的學習,寫些基礎的東西,應該還有錯漏的地方,希望有大佬們多多指點。

到此這篇關于Python+OpenCV 實現(xiàn)簡單的高斯濾波的文章就介紹到這了,更多相關Python OpenCV 高斯濾波內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python如何讀取base64圖片數據

    Python如何讀取base64圖片數據

    在Python中,使用base64模塊可以解碼Base64編碼的圖片數據,首先需要去除Base64字符串的前綴,然后使用base64.b64decode()函數進行解碼,最后將解碼后的數據保存為圖片文件,適用于各種MIME類型的Base64編碼
    2024-09-09
  • numpy中np.dstack()、np.hstack()、np.vstack()用法

    numpy中np.dstack()、np.hstack()、np.vstack()用法

    numpy里dstack, hstack, vstack, 都有拼接的作用,本文詳細的介紹了np.dstack()、np.hstack()、np.vstack()用法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 利用python實現(xiàn)PSO算法優(yōu)化二元函數

    利用python實現(xiàn)PSO算法優(yōu)化二元函數

    這篇文章主要介紹了python實現(xiàn)PSO算法優(yōu)化二元函數的代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-11-11
  • Win7 64位下python3.6.5安裝配置圖文教程

    Win7 64位下python3.6.5安裝配置圖文教程

    這篇文章主要為大家詳細介紹了Win7 64位下python3.6.5安裝配置的圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • 使用Python實現(xiàn)with結構的@contextmanager方法詳解

    使用Python實現(xiàn)with結構的@contextmanager方法詳解

    這篇文章主要介紹了使用Python實現(xiàn)with結構的@contextmanager方法詳解,這個結構的好處,一個是簡潔,一個是當我們對文件操作的邏輯很長的時候,不會因為忘了關閉文件而造成不必要的錯誤,需要的朋友可以參考下
    2023-07-07
  • python?字符串索引取值的實現(xiàn)示例

    python?字符串索引取值的實現(xiàn)示例

    本文主要介紹了python?字符串索引取值的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • Python編程快速上手——選擇性拷貝操作案例分析

    Python編程快速上手——選擇性拷貝操作案例分析

    這篇文章主要介紹了Python選擇性拷貝操作,結合具體實例形式分析了Python文件遍歷、查找、復制拷貝等相關操作技巧,需要的朋友可以參考下
    2020-02-02
  • 在python中解決死鎖的問題

    在python中解決死鎖的問題

    這篇文章主要介紹了在python中解決死鎖的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Python logging模塊用法示例

    Python logging模塊用法示例

    這篇文章主要介紹了Python logging模塊用法,結合實例形式分析了Python logging模塊相關配置、函數、組件等操作方法與注意事項,需要的朋友可以參考下
    2018-08-08
  • 關于 Python opencv 使用中的 ValueError: too many values to unpack

    關于 Python opencv 使用中的 ValueError: too many values to unpack

    這篇文章主要介紹了關于 Python opencv 使用中的 ValueError: too many values to unpack,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-06-06

最新評論