成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

opencv python 圖像平滑/2D卷積/圖像平滑/平均值法/高斯模糊/中值模糊/雙邊濾波

Little_XM / 1650人閱讀

摘要:卷積與一維信號一樣,圖像也可以使用各種低通濾波器,高通濾波器等進行濾波有助于消除噪聲,模糊圖像等濾波器有助于找到邊緣圖片將內(nèi)核與圖像進行卷積應(yīng)用對圖像進行平均過濾。它只取內(nèi)核區(qū)域下所有像素的平均值并替換中心元素。

Smoothing Images

1 2D卷積

與一維信號一樣,圖像也可以使用各種低通濾波器(LPF),高通濾波器(HPF)等進行濾波.LPF有助于消除噪聲,模糊圖像等.HPF濾波器有助于找到邊緣圖片.

cv.filter2D(src, ddepth, kernel[, dst[, anchor[, delta[, borderType]]]]):將內(nèi)核與圖像進行卷積

應(yīng)用

對圖像進行平均過濾。 一個5x5的平均濾波器內(nèi)核可以定義如下:

$$ K=frac{1}{25} left[ egin{matrix} 1 & 1 & 1 & 1 & 1 1 & 1 & 1 & 1 & 1 1 & 1 & 1 & 1 & 1 1 & 1 & 1 & 1 & 1 1 & 1 & 1 & 1 & 1 end{matrix} ight] $$

將此內(nèi)核保持在像素上方,添加該內(nèi)核下方的所有25個像素,取其平均值并用新的平均值替換中心像素.
代碼

import cv2
import numpy as np
import matplotlib.pylab  as plt

img = cv2.imread("img.jpg")
kernel = np.ones((5,5),np.float32)/25
dst = cv2.filter2D(img,-1,kernel)

plt.subplot(121),plt.imshow(img),plt.title("Original")
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(dst),plt.title("Averaging")
plt.xticks([]), plt.yticks([])
plt.show()

2圖像模糊(圖像平滑)

通過將圖像與低通濾波器內(nèi)核卷積來實現(xiàn)圖像模糊.它有助于消除噪音.它實際上從圖像中去除了高頻內(nèi)容(例如:噪聲,邊緣).因此在此操作中邊緣會模糊一點.(有模糊的技術(shù),也不會模糊邊緣).OpenCV主要提供四種模糊技術(shù).

1平均法

過將圖像與標(biāo)準(zhǔn)化的盒式過濾器進行卷積來完成的。它只取內(nèi)核區(qū)域下所有像素的平均值并替換中心元素。這是由函數(shù)cv2.blur()cv2.boxFilter()完成的,3x3標(biāo)準(zhǔn)化的盒式過濾器如下所示:

$$ K=frac{1}{9} left[ egin{matrix} 1 & 1 & 1 1 & 1 & 1 1 & 1 & 1 end{matrix} ight] $$

NOTE:
如果不想使用規(guī)范化的框過濾器,請使用cv2.boxFilter().將參數(shù)normalize = False傳遞給函數(shù).

應(yīng)用

使用5x5大小的內(nèi)核進行圖像平滑:
代碼

import cv2
import numpy as np
import matplotlib.pylab  as plt

img = cv2.imread("img.jpg")
blur = cv2.blur(img,(5,5))

plt.subplot(121),plt.imshow(img),plt.title("Original")
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(blur),plt.title("Blurred")
plt.xticks([]), plt.yticks([])
plt.show()

2高斯模糊

cv2.GaussianBlur(src, ksize, sigmaX[, dst[, sigmaY[, borderType]]])

應(yīng)該指定內(nèi)核的寬度和高度,它應(yīng)該是正數(shù)和奇數(shù).

還應(yīng)該分別指定X和Y方向的標(biāo)準(zhǔn)偏差sigmaX和sigmaY.如果僅指定了sigmaX,則sigmaY與sigmaX相同.如果兩者都為零,則根據(jù)內(nèi)核大小計算它們.

高斯模糊在從圖像中去除高斯噪聲方面非常有效

可以使用函數(shù)cv2.getGaussianKernel()創(chuàng)建高斯內(nèi)核

代碼

import cv2
import numpy as np
import matplotlib.pylab  as plt

img = cv2.imread("img.jpg")
blur = cv2.GaussianBlur(img,(5,5),0)

plt.subplot(121),plt.imshow(img),plt.title("Original")
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(blur),plt.title("Blurred")
plt.xticks([]), plt.yticks([])
plt.show()

3 中值模糊

cv2.medianBlur(src, ksize[, dst]):內(nèi)核區(qū)域下所有像素的中值,并用該中值替換中心元素.對圖像中的椒鹽噪聲非常有效.其內(nèi)核大小應(yīng)為正整數(shù)

代碼

import cv2
import numpy as np
import matplotlib.pylab  as plt

img = cv2.imread("img7.png")
blur = cv2.medianBlur(img,5)

plt.subplot(121),plt.imshow(img),plt.title("Original")
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(blur),plt.title("Blurred")
plt.xticks([]), plt.yticks([])
plt.show()

4 雙邊濾波

cv2.bilateralFilter()在降低噪音方面非常有效,同時保持邊緣清晰,但與其他過濾器相比,操作速度較慢.

NOTE:

高斯濾波器采用像素周圍的鄰域并找到其高斯加權(quán)平均值. 該高斯濾波器僅是空間的函數(shù),即在濾波時考慮附近的像素, 沒有考慮像素是否具有幾乎相同的強度,不考慮像素是否是邊緣像素,所以它也模糊了邊緣.

雙邊濾波器在空間中也采用高斯濾波器,但是還有一個高斯濾波器是像素差的函數(shù).空間的高斯函數(shù)確保僅考慮附近的像素用于模糊,而強度差的高斯函數(shù)確保僅考慮具有與中心像素相似的強度的像素用于模糊,因此它保留了邊緣,因為邊緣處的像素將具有較大的強度變化.

代碼

import cv2
import numpy as np
import matplotlib.pylab  as plt

img = cv2.imread("img.jpg")
blur = cv2.bilateralFilter(img,9,75,75)

plt.subplot(121),plt.imshow(img),plt.title("Original")
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(blur),plt.title("Blurred")
plt.xticks([]), plt.yticks([])
plt.show()

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/41989.html

相關(guān)文章

  • Programming Computer Vision with Python (學(xué)習(xí)筆記五)

    摘要:下面是二維空間的高斯分布函數(shù)公式這個公式被稱作高斯核。高斯模糊使用高斯平均算子來實現(xiàn)的圖像模糊叫高斯模糊,也叫高斯平滑被認為是一種最優(yōu)的圖像平滑處理。 SciPy庫 SciPy庫,與之前我們使用的NumPy和Matplotlib,都是scipy.org提供的用于科學(xué)計算方面的核心庫。相對NumPy,SciPy庫提供了面向更高層應(yīng)用的算法和函數(shù)(其實也是基于NumPy實現(xiàn)的),并以子模塊...

    Rocko 評論0 收藏0
  • Programming Computer Vision with Python (學(xué)習(xí)筆記六)

    摘要:由所有邊緣增強像素組成的新圖像,稱為邊緣增強圖像。交叉算子上述使用差分方法得出亮度變化梯度其實就是一階微分的近似值。 邊緣檢測(edge detection)是最重要的圖像處理技術(shù)之一,圖像邊緣檢測大幅度地減少了數(shù)據(jù)量,并且剔除了可以認為不相關(guān)的信息,保留了圖像重要的結(jié)構(gòu)屬性,為后續(xù)圖像理解方法提供了基礎(chǔ)。 邊緣檢測方法 從視覺上看,圖像中的邊緣處亮度較周圍強,比如對一垂直方向的邊緣,...

    MageekChiu 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<