摘要:下面是二維空間的高斯分布函數(shù)公式這個公式被稱作高斯核。高斯模糊使用高斯平均算子來實現(xiàn)的圖像模糊叫高斯模糊,也叫高斯平滑被認為是一種最優(yōu)的圖像平滑處理。
SciPy庫
SciPy庫,與之前我們使用的NumPy和Matplotlib,都是scipy.org提供的用于科學(xué)計算方面的核心庫。相對NumPy,SciPy庫提供了面向更高層應(yīng)用的算法和函數(shù)(其實也是基于NumPy實現(xiàn)的),并以子模塊的形式組織,每個子模塊對應(yīng)不同的應(yīng)用領(lǐng)域,下面列出我們關(guān)心的一部分進行說明:
constants:物理和數(shù)學(xué)常量
fftpack:快速傅里葉(立)變換
integrate: 積分和方程
interpolate: 插值
linalg: 線性代數(shù)
ndimage: N維圖像處理
optimize: 優(yōu)化及根求解
安裝
sudo apt-get install python-scipy圖像模糊數(shù)學(xué)原理
以灰度圖像為例,把圖像的每個像素的灰度值,變換為它周圍鄰近的N個像素值的平均值,得出的圖像就有了模糊效果,但這種效果不理想,體現(xiàn)不出邊緣(不夠自然吧),所以提出了一種比較理想的方法,就是使用加權(quán)平均值,因為對某個像素而言,離它越近的像素,與它的關(guān)聯(lián)性越高,所以權(quán)值應(yīng)該越大,相反,離它越遠的像素,與它的關(guān)聯(lián)性越低,權(quán)值應(yīng)該越小。
那分配權(quán)值應(yīng)該使用什么樣的算法呢?最常用的就是高斯分布函數(shù)。
高斯分布函數(shù)其實應(yīng)該是高斯分布的概率密度函數(shù),簡稱高斯分布函數(shù)或正態(tài)分布函數(shù),它的二維空間的形態(tài)像一個鐘,如圖:
這里我們只關(guān)心二維的高斯分布函數(shù),因為等下我們要把它應(yīng)用在二維圖像的像素的權(quán)值分配上。下面是二維空間的高斯分布函數(shù)公式:
這個公式被稱作高斯核。如果我們給定sigma(如0.84089642)的值,以及高斯分布的(范圍)大小,就可以得出一個矩陣如:
注意中心元素 (4,4)處有最大值,隨著距離中心越遠,數(shù)值一圈圈地對稱減小。這樣,矩陣的每個元素相對中心點的權(quán)值就已經(jīng)知道了,如果我們把這個矩陣的中心對應(yīng)到圖像的每個點,就可以知道中心點對應(yīng)的像素應(yīng)該如何通過周圍的點來計算。
如果矩陣的中心對應(yīng)到原圖像邊沿的像素點,那么可能有一部分矩陣的元素落到圖像之外,為保證能正常運算,一種簡單的處理就是把圖像一邊的數(shù)據(jù)復(fù)制到缺少的一邊去。
對原圖像的每個像素點,運用上面的權(quán)值矩陣,算出加權(quán)平均值,作為新圖像的像素值,這個運算可以用原圖像與矩陣的卷積來表示,而參與卷積的這個矩陣,叫模板,這種卷積運算,叫模板卷積。模板也稱為算子。上面示例的這個矩陣,其實就是高斯平均算子。
高斯模糊使用高斯平均算子來實現(xiàn)的圖像模糊叫高斯模糊(Gaussian blurring,也叫高斯平滑)
被認為是一種最優(yōu)的圖像平滑處理。除了模糊,還可以用來磨皮(美顏)、制作景深、實現(xiàn)夢幻效果等。下面我們使用Python來對一幅圖像進行模糊處理。
我們不必自己實現(xiàn)高斯模糊的計算過程,因為前面介紹的scipy的ndimage子模塊中就包含了高斯濾波器,它是一個函數(shù):
scipy.ndimage.filters.gaussian_filter(input, sigma, order=0, ... 多維高斯濾波器 input: ndarray sigma: 高斯核標準偏差,越大越模糊 order: 默認0,使用高斯核進行計算,還可以指定不同值使用高斯一階、二階導(dǎo)數(shù),以后再說
以下代碼示例以sigma為2,5,10分別對一張圖像進行模糊,我們使用的是GRB圖像,有3個通道,必須對每個通道都應(yīng)用濾波器:
from PIL import Image import numpy as np from scipy.ndimage import filters import matplotlib.pyplot as plt im = np.array(Image.open("Penguins.jpg")) index = 141 #畫1行四列的圖,與 1,4,1 同 plt.subplot(index) plt.imshow(im) for sigma in (2, 5, 10): im_blur = np.zeros(im.shape, dtype=np.uint8) for i in range(3): #對圖像的每一個通道都應(yīng)用高斯濾波 im_blur[:,:,i] = filters.gaussian_filter(im[:,:,i], sigma) index += 1 plt.subplot(index) plt.imshow(im_blur) plt.show()
不同的sigma模糊程度對比:
下一個筆記將記錄有關(guān)圖像邊緣檢測的實現(xiàn),還會繼續(xù)運用模板卷積運算,將涉及到圖像導(dǎo)數(shù),以及用于邊緣檢測的常用算子的介紹。
參考資料
維基百科:高斯模糊
高斯模糊淺析
高斯模糊的算法
[計算機視覺特征提取與圖像處理(第三版)]
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/44184.html
摘要:學(xué)習(xí)筆記七數(shù)學(xué)形態(tài)學(xué)關(guān)注的是圖像中的形狀,它提供了一些方法用于檢測形狀和改變形狀。學(xué)習(xí)筆記十一尺度不變特征變換,簡稱是圖像局部特征提取的現(xiàn)代方法基于區(qū)域圖像塊的分析。本文的目的是簡明扼要地說明的編碼機制,并給出一些建議。 showImg(https://segmentfault.com/img/bVRJbz?w=900&h=385); 前言 開始之前,我們先來看這樣一個提問: pyth...
摘要:接下來的學(xué)習(xí)筆記本人都將使用來代替。庫中提供的很多圖像操作都是分別作用于某個通道的數(shù)據(jù)。是最流行的開源色彩管理庫之一。目前只支持在增加和。模塊支持從圖像對象創(chuàng)建或的對象,方便被使用和顯示。模塊對圖像或指定區(qū)域的每個通道進行統(tǒng)計,包括等。 介紹 《Programming Computer Vision with Python》是一本介紹計算機視覺底層基本理論和算法的入門書,通過這本收可以...
摘要:簡稱庫是從擴展下來的,提供了更豐富的圖像處理函數(shù),去噪函數(shù)除了還有算法,比如邊緣檢測還有以前簡單提過的算子濾波器。下面我用看具體的例子,將和高斯平滑進行對比效果對比如下明顯感覺使用的效果要比高斯平滑好很多。 圖像去噪(Image Denoising)的過程就是將噪點從圖像中去除的同時盡可能的保留原圖像的細節(jié)和結(jié)構(gòu)。這里講的去噪跟前面筆記提過的去噪不一樣,這里是指高級去噪技術(shù),前面提過的...
摘要:圖像矩圖像矩或稱幾何矩是由在年提出的。矩給出了對圖像形狀的一種度量。使用建議的第二種采樣方法即以圖像中心進行高斯分布采樣,長度使用,然后在基礎(chǔ)上增加了旋轉(zhuǎn)的描述以及快速的計算方法,這種方法被稱為。 ORB(Oriented FAST and Rotated BRIEF)可用來替代SIFT(或SURF),它對圖像更具有抗噪特性,是一種特征檢測高效算法,其速度滿足實時要求,可用于增強圖像匹...
閱讀 2262·2021-11-22 14:56
閱讀 10079·2021-09-08 10:45
閱讀 1982·2019-08-30 13:54
閱讀 2870·2019-08-29 16:54
閱讀 2012·2019-08-29 14:20
閱讀 1779·2019-08-29 12:25
閱讀 1859·2019-08-29 12:17
閱讀 1054·2019-08-23 18:29