Python如何生成隨機高斯模糊圖片詳解
高斯模糊的介紹與原理
通常,圖像處理軟件會提供"模糊"(blur)濾鏡,使圖片產(chǎn)生模糊的效果。
"模糊"的算法有很多種,其中有一種叫做"高斯模糊"(Gaussian Blur)。它將正態(tài)分布(又名"高斯分布")用于圖像處理。
所謂"模糊",可以理解成每一個像素都取周邊像素的平均值。

上圖中,2是中間點,周邊點都是1。

"中間點"取"周圍點"的平均值,就會變成1。在數(shù)值上,這是一種"平滑化"。在圖形上,就相當(dāng)于產(chǎn)生"模糊"效果,"中間點"失去細節(jié)。

顯然,計算平均值時,取值范圍越大,"模糊效果"越強烈。

上面分別是原圖、模糊半徑3像素、模糊半徑10像素的效果。模糊半徑越大,圖像就越模糊。從數(shù)值角度看,就是數(shù)值越平滑。
接下來的問題就是,既然每個點都要取周邊像素的平均值,那么應(yīng)該如何分配權(quán)重呢?
如果使用簡單平均,顯然不是很合理,因為圖像都是連續(xù)的,越靠近的點關(guān)系越密切,越遠離的點關(guān)系越疏遠。因此,加權(quán)平均更合理,距離越近的點權(quán)重越大,距離越遠的點權(quán)重越小。
python生成高斯模糊
Python可以使用opencv庫很方便地生成模糊圖像,如果沒有安裝opencv的,可以用pip安裝:
pip install python-opencv
想了解高斯模糊是什么的話,可以看wiki百科-高斯模糊。對于一般人,只要知道這個操作可以生成模糊圖片就好了,一行代碼即可搞定:
import cv2 img = cv2.GaussianBlur(ori_img, (9, 9), 0)
這個函數(shù)的第一個參數(shù)是原圖像,第二個參數(shù)是高斯矩陣,要注意長和寬都必須為單數(shù),第三個參數(shù)是標(biāo)準(zhǔn)差,如果寫0,則函數(shù)會自行計算。
那怎么控制模糊程度呢?很簡單,高斯矩陣的尺寸越大,標(biāo)準(zhǔn)差越大,處理過的圖像模糊程度越大。
介紹完了簡單的高斯模糊操作,我們加一個隨機處理,來隨機生成模糊程度不同的幾張圖像,其實也很簡單,加一個隨機函數(shù)來生成高斯矩陣的尺寸就可以了:
import cv2
import random
imgName = "img.png"
min_size = 11
ori_img = cv2.imread(imgName)
for i in range(3):
addition = random.choice((0, 2, 4, 6, 8, 10, 12))
size = min_size + addition
kernel_size = (size, size)
img = cv2.GaussianBlur(ori_img, kernel_size, 0)
new_imgName = "New_" + str(i) + "_" + str(kernel_size[0]) + "_" + imgName
cv2.imwrite(new_imgName, img)
這里利用了random庫,來在一組數(shù)字中隨機選擇一個數(shù),加到最小尺寸上,作為每次生成的模糊圖片的高斯矩陣尺寸,這里我的尺寸最小值設(shè)為了11,大家可以根據(jù)需要自己嘗試看效果來設(shè)定。
總結(jié)
到此這篇關(guān)于Python如何生成隨機高斯模糊圖片的文章就介紹到這了,更多相關(guān)python生成高斯模糊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python+OpenCV目標(biāo)跟蹤實現(xiàn)基本的運動檢測
這篇文章主要為大家詳細介紹了Python+OpenCV目標(biāo)跟蹤實現(xiàn)基本的運動檢測,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-07-07
Python數(shù)據(jù)分析之PMI數(shù)據(jù)圖形展示
這篇文章主要介紹了Python數(shù)據(jù)分析之PMI數(shù)據(jù)圖形展示,文章介紹了簡單的python爬蟲,并使用numpy進行了簡單的數(shù)據(jù)處理,最終使用?matplotlib?進行圖形繪制,實現(xiàn)了直觀的方式展示制造業(yè)和非制造業(yè)指數(shù)圖形,需要的朋友可以參考一下2022-05-05
嘗試使用Python多線程抓取代理服務(wù)器IP地址的示例
這篇文章主要介紹了嘗試使用Python多線程抓取代理服務(wù)器IP地址的示例,盡管有GIL的存在使得Python并不能真正實現(xiàn)多線程并行,需要的朋友可以參考下2015-11-11
scikit-learn處理缺失數(shù)據(jù)的方法與實踐
scikit-learn作為Python中廣泛使用的機器學(xué)習(xí)庫,提供了多種工具和技術(shù)來幫助我們處理缺失數(shù)據(jù),本文將詳細介紹sklearn處理缺失數(shù)據(jù)的方法,并提供實際的代碼示例,需要的朋友可以參考下2024-06-06
利用python3篩選excel中特定的行(行值滿足某個條件/行值屬于某個集合)
這篇文章主要給大家介紹了關(guān)于利用python3篩選excel中特定的行(行值滿足某個條件/行值屬于某個集合)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
django請求返回不同的類型圖片json,xml,html的實例
今天小編就為大家分享一篇django請求返回不同的類型圖片json,xml,html的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05
自適應(yīng)線性神經(jīng)網(wǎng)絡(luò)Adaline的python實現(xiàn)詳解
這篇文章主要介紹了自適應(yīng)線性神經(jīng)網(wǎng)絡(luò)Adaline的python實現(xiàn)詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-09-09

