日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

图像滤波

發(fā)布時(shí)間:2025/3/20 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图像滤波 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

圖像濾波,可以對圖像進(jìn)行增強(qiáng)(提取圖像特征),或?qū)D像進(jìn)行平滑(降噪、模糊)。

文章目錄

    • 濾波器分類
    • boxblur 方框?yàn)V波
    • blur 均值濾波
    • GaussianBlur 高斯濾波
    • medianBlur 中值濾波
    • bilateralFilter 雙邊濾波
    • 使用openCV進(jìn)行圖像濾波

濾波器分類

  • 低通濾波器:允許低頻率像素通過(去噪、模糊)

  • 高通濾波器:允許高頻率像素通過(邊緣檢測、銳化)

線性濾波器:每個(gè)像素的輸出值是一些輸入像素的加權(quán)和,易于從頻率響應(yīng)角度來進(jìn)行分析,如:

  • 方框?yàn)V波:cv2.boxblur函數(shù)

  • 均值濾波:cv2.blur函數(shù)

  • 高斯濾波:cv2.GaussianBlur函數(shù)

非線性濾波,濾波速度相對較慢,有時(shí)可以達(dá)到更好的實(shí)現(xiàn)效果,如:

  • 中值濾波:cv2.medianBlur函數(shù)

  • 雙邊濾波:cv2.bilateralFilter函數(shù)

boxblur 方框?yàn)V波

用于計(jì)算每個(gè)像素鄰域內(nèi)的積分特性。方框?yàn)V波所用到的核:

h=α[11...111...1........11...1]h = \alpha \begin{bmatrix} 1 & 1 & ... & 1\\ 1 & 1 & ... & 1\\ ..& .. & .. & ..\\ 1 & 1 & ... & 1 \end{bmatrix}h=α?????11..1?11..1?...........?11..1??????

其中:

α={1kSize.width×kSize.heightnormalize=True1otherwise}\alpha = \begin{Bmatrix} \frac{1}{kSize.width \times kSize.height} & normalize = True\\ 1 & otherwise \end{Bmatrix}α={kSize.width×kSize.height1?1?normalize=Trueotherwise?}

當(dāng)normalize(歸一化)為true時(shí),方框?yàn)V波也就成了均值濾波。
函數(shù)原型如下:

def boxFilter(src, ddepth, ksize, dst=None, anchor=None, normalize=None, borderType=None)

參數(shù):

  • src:輸入圖像,即源圖像,函數(shù)對通道是獨(dú)立處理的,且可以處理任意通道數(shù)的圖片

  • ddepth:出圖像的深度,-1代表使用原圖深度

  • ksize:卷積核的大小,Size( w,h )

  • dst:輸出目標(biāo)圖像

  • anchor:錨點(diǎn)(即被平滑的那個(gè)點(diǎn)),默認(rèn)值Point(-1,-1),負(fù)值表示取核的中心為錨點(diǎn)

  • normalize:是否歸一化(normalized),默認(rèn)值為true

  • borderType:用于推斷圖像外部像素的某種邊界模式,默認(rèn)值BORDER_DEFAULT

返回:輸出目標(biāo)圖像

blur 均值濾波

使用鄰域像素均值進(jìn)行濾波,在圖像去噪的同時(shí)也破壞了圖像的細(xì)節(jié)部分,使圖像變得模糊。

函數(shù)原型如下:

def blur(src, ksize, dst=None, anchor=None, borderType=None)

參數(shù):

  • src:輸入圖像,即源圖像,函數(shù)對通道是獨(dú)立處理的,且可以處理任意通道數(shù)的圖片

  • ksize:卷積核的大小,Size( w,h )

  • dst:輸出目標(biāo)圖像

  • anchor:錨點(diǎn)(即被平滑的那個(gè)點(diǎn)),默認(rèn)值Point(-1,-1),負(fù)值表示取核的中心為錨點(diǎn)

  • borderType:用于推斷圖像外部像素的某種邊界模式,默認(rèn)值BORDER_DEFAULT

返回:輸出目標(biāo)圖像

GaussianBlur 高斯濾波

采用離散化的高斯函數(shù)產(chǎn)生歸一化的高斯核,基于高斯核函數(shù)對圖像灰度矩陣的每一點(diǎn)進(jìn)行加權(quán)求和,對于抑制服從正態(tài)分布的噪聲非常有效。

函數(shù)原型如下:

def GaussianBlur(src, ksize, sigmaX, dst=None, sigmaY=None, borderType=None)

參數(shù):

  • src:輸入圖像,即源圖像,函數(shù)對通道是獨(dú)立處理的,且可以處理任意通道數(shù)的圖片

  • ksize:卷積核的大小,Size( w,h ),w,h為正奇數(shù),可以不同

  • sigmaX:表示高斯核函數(shù)在X方向的的標(biāo)準(zhǔn)偏差,double類型

  • dst:輸出目標(biāo)圖像

  • sigmaY:表示高斯核函數(shù)在Y方向的的標(biāo)準(zhǔn)偏差,double類型

  • borderType:用于推斷圖像外部像素的某種邊界模式,默認(rèn)值BORDER_DEFAULT

返回:輸出目標(biāo)圖像

若sigmaY為零,則sigmaY=sigmaX,若sigmaX和sigmaY都是0,那么就由ksize.width和ksize.height計(jì)算出來

正態(tài)分布:

正態(tài)分布的密度函數(shù)叫做"高斯函數(shù)"(Gaussian function)。它的一維形式是:

f(x)=1σ2πe?(x?μ)22σ2f(x)=\frac{1}{\sigma \sqrt{2\pi}}e^{-\frac{(x-\mu )^2}{2\sigma^2}}f(x)=σ2π?1?e?2σ2(x?μ)2?

其中,μμμxxx的均值,σσσxxx的方差。計(jì)算平均值的時(shí)候,中心點(diǎn)為原點(diǎn)時(shí),μμμ等于0:

f(x)=1σ2πe?x22σ2f(x)=\frac{1}{\sigma \sqrt{2\pi}}e^{-\frac{x^2}{2\sigma^2}}f(x)=σ2π?1?e?2σ2x2?

根據(jù)一維高斯函數(shù),可以推導(dǎo)得到二維高斯函數(shù):

G(x,y)=12πσ2e?x2+y22σ2G(x,y)=\frac{1}{ 2\pi\sigma^2}e^{-\frac{x^2+y^2}{2\sigma^2}}G(x,y)=2πσ21?e?2σ2x2+y2?

有了這個(gè)函數(shù) ,就可以計(jì)算每個(gè)點(diǎn)的權(quán)重了。

medianBlur 中值濾波

用鄰域灰度的中值進(jìn)行濾波,在去除脈沖/椒鹽噪聲的同時(shí)還能保留圖像的細(xì)節(jié)部分,花費(fèi)時(shí)間是均值濾波的5倍以上,但其在噪聲的消除能力上更強(qiáng)。對一些細(xì)節(jié)多,特別是線、尖頂?shù)燃?xì)節(jié)多的圖像不宜采用中值濾波。

函數(shù)原型如下:

def medianBlur(src, ksize, dst=None)

參數(shù):

  • src:輸入 1、3或者4通道的圖像

  • ksize:孔徑的線性尺寸,值為大于1的正奇數(shù)

  • dst:輸出目標(biāo)圖像

返回:輸出目標(biāo)圖像

bilateralFilter 雙邊濾波

使用空間鄰近度和灰度相似度進(jìn)行濾波,比高斯濾波多了一個(gè)高斯方差sigma-d,是基于空間分布的高斯濾波函數(shù),達(dá)到保留邊緣且去除噪聲的目的。具有簡單、非迭代、局部的特點(diǎn)。但是由于保存了過多的高頻信息,對于彩色圖像里的高頻噪聲,雙邊濾波器不能夠干凈的濾掉,只能夠?qū)τ诘皖l信息進(jìn)行較好的濾波。

函數(shù)原型如下:

def bilateralFilter(src, d, sigmaColor, sigmaSpace, dst=None, borderType=None)

參數(shù):

  • src:輸入圖像,即源圖像,函數(shù)對通道是獨(dú)立處理的,且可以處理任意通道數(shù)的圖片

  • d:表示在過濾過程中每個(gè)像素鄰域的直徑

  • sigmaColor:顏色空間濾波器的sigma值。值越大,表明該像素鄰域內(nèi)有更寬廣的顏色會(huì)被混合到一起,產(chǎn)生較大的半相等顏色區(qū)域。

  • sigmaSpace:坐標(biāo)空間中濾波器的sigma方差值,數(shù)值越大,意味著越遠(yuǎn)的像素會(huì)相互影響,從而使更大的區(qū)域足夠相似的顏色獲取相同的顏色。當(dāng)d>0,d指定了鄰域大小且與sigmaSpace無關(guān)。否則,d正比于sigmaSpace。

  • dst:輸出目標(biāo)圖像

  • borderType:用于推斷圖像外部像素的某種邊界模式,默認(rèn)值BORDER_DEFAULT

返回:輸出目標(biāo)圖像

使用openCV進(jìn)行圖像濾波

import cv2def smoothing(k):if k % 2 == 0:returnbox = cv2.boxFilter(gray, -1, (k, k))blur = cv2.blur(gray, (k, k))gaussian = cv2.GaussianBlur(gray, (k, k), 0)median = cv2.medianBlur(gray, k, 0)bilateral = cv2.bilateralFilter(gray, k, k*2, k/2)cv2.imshow('box', box)cv2.moveWindow('box', 650, 40)cv2.imshow('blur', blur)cv2.moveWindow('blur', 1200, 40)cv2.imshow('gaussian', gaussian)cv2.moveWindow('gaussian', 20, 400)cv2.imshow('median', median)cv2.moveWindow('median', 650, 400)cv2.imshow('bilateral', bilateral)cv2.moveWindow('bilateral', 1200, 400)cv2.namedWindow('filter demo') cv2.moveWindow('filter demo',20,20) img = cv2.imread("/home/blue/Ivy/data/haar/VehicleDataset/train/91_frame.png") gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) cv2.imshow('filter demo', img)ksize = 3 cv2.createTrackbar('ksize', 'filter demo', ksize, 25, smoothing)smoothing(ksize) if cv2.waitKey(0) == 27:cv2.destroyAllWindows()

濾波器 kSize=5kSize=5kSize=5 時(shí):

濾波器 kSize=9kSize=9kSize=9 時(shí):

濾波器 kSize=25kSize=25kSize=25 時(shí):

濾波后,進(jìn)行邊緣檢測,濾波器 kSize=5kSize=5kSize=5 時(shí):

濾波器 kSize=9kSize=9kSize=9 時(shí):

總結(jié)

以上是生活随笔為你收集整理的图像滤波的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。