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

資訊專欄INFORMATION COLUMN

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

FleyX / 3382人閱讀

摘要:簡稱庫是從擴(kuò)展下來的,提供了更豐富的圖像處理函數(shù),去噪函數(shù)除了還有算法,比如邊緣檢測還有以前簡單提過的算子濾波器。下面我用看具體的例子,將和高斯平滑進(jìn)行對比效果對比如下明顯感覺使用的效果要比高斯平滑好很多。

圖像去噪(Image Denoising)的過程就是將噪點(diǎn)從圖像中去除的同時(shí)盡可能的保留原圖像的細(xì)節(jié)和結(jié)構(gòu)。這里講的去噪跟前面筆記提過的去噪不一樣,這里是指高級去噪技術(shù),前面提過的高斯平滑也能去噪,但高斯平滑去噪的同時(shí)也把邊緣模糊化了,另外使用形態(tài)學(xué)的方法去噪是指去除一些粗的椒鹽噪聲。對于一幅密布噪點(diǎn)的圖像,如果使其變得清晰又保留邊緣細(xì)節(jié),這是高級去噪技術(shù)所要解決的問題。

全變差

全變差去噪(Total variation denoising)是一種常用的去噪模型。全變差(或叫總變差)大概是指圖像梯度的范數(shù)(norm)的積分。
一幅圖像的細(xì)節(jié)(噪聲或是干擾的不必要的)過多,全變差的值越高,所以讓全變差最小化,去掉噪聲和沒用細(xì)節(jié)的同時(shí),保留邊緣等主要細(xì)節(jié),正是這種模型的處理思想。用這種去噪技術(shù)產(chǎn)生的圖像有點(diǎn)接近卡通的感覺。
下面要介紹的Chambolle去噪算法就是基于全變差去噪模型實(shí)現(xiàn)的。

chambolle去噪

scipy.ndimage模塊只是提供了基本的圖像處理方法,并沒有提供Chambolle去噪函數(shù),所以就要借助另一個(gè)庫——scikit-image。

scikit-image
scikit-image(簡稱skimage)庫是從scipy.ndimage擴(kuò)展下來的,提供了更豐富的圖像處理函數(shù),去噪函數(shù)除了Chambolle還有Bilateral算法,比如邊緣檢測還有以前簡單提過的Canny算子濾波器。
它也是由 SciPy 社區(qū)所開發(fā)的,可以跟NumPy等完美配合。

安裝:

sudo apt-get install python-skimage

函數(shù)說明:

skimage.restoration.denoise_tv_chambolle(im, weight=50, eps=0.0002, n_iter_max=200, multichannel=False)
im: ndarray類型,2維或3維
weight:越大去噪越多,但圖像也會越失真
multichannel:對彩色圖像而言,true表示對每一通道去噪

返回去噪后的圖像,ndarray類型。

下面我用看具體的例子,將chambolle和高斯平滑進(jìn)行對比:

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
from scipy.ndimage import filters
from skimage.filter import denoise_tv_chambolle  #for versoin: 0.9.3
#from skimage.restoration import denoise_tv_chambolle  #for new version

im = np.array(Image.open("noising.jpg").convert("L"))

index = 221
plt.subplot(index)
plt.gray()
plt.imshow(im)
plt.axis("off")
plt.title("original")

chdnim = denoise_tv_chambolle(im, weight=0.2)
plt.subplot(index+1)
plt.imshow(chdnim)
plt.axis("off")
plt.title("chambolle weight=0.2")

gs2dnim = filters.gaussian_filter(im, sigma=2)
plt.subplot(index+2)
plt.imshow(gs2dnim)
plt.axis("off")
plt.title("gaussion sigma=2")

gs3dnim = filters.gaussian_filter(im, sigma=3)

plt.subplot(index+3)
plt.imshow(gs3dnim)
plt.axis("off")
plt.title("gaussion sigmal=3")

plt.show()

效果對比如下:

明顯感覺使用chambolle的效果要比高斯平滑好很多。

Bilateral濾波器
Bilateral濾波器跟之前介紹過的高斯模糊運(yùn)算過程相似,而且它也使用了高斯核,但它的特點(diǎn)是在對圖像進(jìn)行平滑的同時(shí)能保留邊緣。因?yàn)樗谄交瑸V波時(shí)同時(shí)考慮了像素間的幾何距離和色彩距離。具體點(diǎn)說,如果要處理的像素與鄰近像素的歐式距離比較大(即像素值相差比較大)時(shí),那么這些鄰近像素的權(quán)重就比較小,從而使得對濾波后的新像素值影響較小。另外,每個(gè)濾波后像素點(diǎn)的值,受與他色彩相近并且距離較近的像素點(diǎn)的影響較大,這兩種權(quán)值分配方法起到了保護(hù)邊緣的作用。

Bilateral去噪函數(shù):

skimage.restoration.denoise_bilateral(image, win_size=5, sigma_range=None, sigma_spatial=1, bins=10000, mode="constant", cval=0)

示例:

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
from scipy.ndimage import filters
from skimage.filter import denoise_bilateral  #for versoin: 0.9.3
#from skimage.restoration import denoise_bilateral  #for new version

im = np.array(Image.open("noising.jpg").convert("L"))

index = 221
plt.subplot(index)
plt.gray()
plt.imshow(im)
plt.axis("off")
plt.title("original")

plt.subplot(index+1)
plt.imshow(denoise_bilateral(im))
plt.axis("off")
plt.title("default")

plt.subplot(index+2)
plt.imshow(denoise_bilateral(im, sigma_range=0.2, sigma_spatial=10))
plt.axis("off")
plt.title("0.2/10")

plt.subplot(index+3)
plt.imshow(denoise_bilateral(im, sigma_range=0.8, sigma_spatial=10))
plt.axis("off")
plt.title("0.8/10")

plt.show()

效果如圖:

感覺比高斯平滑要好一些,但比Chambolle還是要遜色不少。

小結(jié)

因全變差的數(shù)學(xué)原理比較高深,所以暫時(shí)沒去研究,只大概了解下并使用skimage庫的接口進(jìn)行了一番對比,結(jié)論就是使用chambolle去噪效果非常好。

至此,書中第一章的內(nèi)容結(jié)束了。后面將開始下一章節(jié)的內(nèi)容學(xué)習(xí)——圖像描述。

你還可以查看我的其它筆記。

參考資料

scikit-image.org
scikit denoising example
Bilateral Filtering

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

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

相關(guān)文章

  • SegmentFault 技術(shù)周刊 Vol.30 - 學(xué)習(xí) Python 來做一些神奇好玩的事情吧

    摘要:學(xué)習(xí)筆記七數(shù)學(xué)形態(tài)學(xué)關(guān)注的是圖像中的形狀,它提供了一些方法用于檢測形狀和改變形狀。學(xué)習(xí)筆記十一尺度不變特征變換,簡稱是圖像局部特征提取的現(xiàn)代方法基于區(qū)域圖像塊的分析。本文的目的是簡明扼要地說明的編碼機(jī)制,并給出一些建議。 showImg(https://segmentfault.com/img/bVRJbz?w=900&h=385); 前言 開始之前,我們先來看這樣一個(gè)提問: pyth...

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

    摘要:接下來的學(xué)習(xí)筆記本人都將使用來代替。庫中提供的很多圖像操作都是分別作用于某個(gè)通道的數(shù)據(jù)。是最流行的開源色彩管理庫之一。目前只支持在增加和。模塊支持從圖像對象創(chuàng)建或的對象,方便被使用和顯示。模塊對圖像或指定區(qū)域的每個(gè)通道進(jìn)行統(tǒng)計(jì),包括等。 介紹 《Programming Computer Vision with Python》是一本介紹計(jì)算機(jī)視覺底層基本理論和算法的入門書,通過這本收可以...

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

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

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

    摘要:圖像矩圖像矩或稱幾何矩是由在年提出的。矩給出了對圖像形狀的一種度量。使用建議的第二種采樣方法即以圖像中心進(jìn)行高斯分布采樣,長度使用,然后在基礎(chǔ)上增加了旋轉(zhuǎn)的描述以及快速的計(jì)算方法,這種方法被稱為。 ORB(Oriented FAST and Rotated BRIEF)可用來替代SIFT(或SURF),它對圖像更具有抗噪特性,是一種特征檢測高效算法,其速度滿足實(shí)時(shí)要求,可用于增強(qiáng)圖像匹...

    xbynet 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<