智能圖像處理:Python和OpenCV實(shí)現(xiàn)-課件 第五章 圖像空域?yàn)V波_第1頁
智能圖像處理:Python和OpenCV實(shí)現(xiàn)-課件 第五章 圖像空域?yàn)V波_第2頁
智能圖像處理:Python和OpenCV實(shí)現(xiàn)-課件 第五章 圖像空域?yàn)V波_第3頁
智能圖像處理:Python和OpenCV實(shí)現(xiàn)-課件 第五章 圖像空域?yàn)V波_第4頁
智能圖像處理:Python和OpenCV實(shí)現(xiàn)-課件 第五章 圖像空域?yàn)V波_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第五章圖像空域?yàn)V波目錄CONTENTS圖像平滑(低通濾波器)5.2圖像銳化(高通濾波器)5.3空域?yàn)V波5.15.1空域?yàn)V波空域?yàn)V波是一種鄰域處理方法,通過直接在圖像空間中對鄰域內(nèi)像素進(jìn)行處理,即應(yīng)用某一卷積模板(也稱為卷積核)對每一個(gè)像素及其周圍鄰域的所有像素進(jìn)行某種數(shù)學(xué)運(yùn)算,得到該像素的灰度值。新的灰度值不僅與該像素的灰度值有關(guān),而且還與其鄰域內(nèi)像素點(diǎn)的灰度值有關(guān)??沼?yàn)V波的作用域是像素及其鄰域,通常使用空域模板對鄰域內(nèi)的像素進(jìn)行處理從而產(chǎn)生該像素的輸出值??沼?yàn)V波主要可以分為線性濾波和非線性濾波。其中,如果在圖像像素上執(zhí)行的是線性操作,則該濾波器稱為線性空域?yàn)V波,否則,濾波器就稱為非線性空域?yàn)V波??沼?yàn)V波1.線性濾波線性空域?yàn)V波是指像素的輸出值是計(jì)算該像素鄰域內(nèi)像素值的線性組合,系數(shù)矩陣稱之為模板。線性濾波可以用卷積來實(shí)現(xiàn),其濾波模板稱為卷積模板。根據(jù)卷積的定義可以知道,卷積首先需要將模板進(jìn)行反轉(zhuǎn),也就是將模板繞模板中心旋轉(zhuǎn)180°,但在數(shù)字圖像處理中,卷積模板通常是關(guān)于原點(diǎn)對稱的,因此通常不需要考慮反轉(zhuǎn)過程。模板卷積的主要步驟如下:模板在圖像中進(jìn)行遍歷,將模板中心和各個(gè)像素位置重合;模板中的各個(gè)系數(shù)與模板對應(yīng)圖像像素值進(jìn)行相乘;所有的乘積相加并求和,結(jié)果賦值給模板中心對應(yīng)的像素??沼?yàn)V波1.線性濾波

空域?yàn)V波2.非線性濾波

在非線性空域?yàn)V波中也是采用基于鄰域的處理,而且模板滑過一幅圖像的機(jī)理和線性空域?yàn)V波是一致的。非線性濾波處理也取決于模板對應(yīng)鄰域內(nèi)的像素,然而,因?yàn)椴荒苤苯永蒙厦鎔(x,y)的表達(dá)式計(jì)算乘積求和??沼?yàn)V波

使用卷積模板時(shí)候,常常會碰到邊界問題:當(dāng)處理圖像邊界像素時(shí),卷積模版與圖像使用區(qū)域不能匹配,卷積核的中心與邊界像素點(diǎn)對應(yīng),卷積運(yùn)算將出現(xiàn)問題。常用的圖像邊界像素處理方法為:(1)忽略邊界像素,即處理后的圖像將丟掉這些像素。(2)保留原邊界像素,即復(fù)制邊界像素到處理后的圖像。

利用模板進(jìn)行空域?yàn)V波,可使原圖像轉(zhuǎn)換為增強(qiáng)圖像,模板系數(shù)不同,得到不同的增強(qiáng)效果,從處理效果上可以把空域?yàn)V波分為平滑空域?yàn)V波和銳化空域?yàn)V波。5.2

圖像平滑5.2圖像平滑平滑濾波器實(shí)際上就是一個(gè)低通濾波器,用于模糊處理和降低噪聲。通過將圖像與低通濾波器內(nèi)核進(jìn)行卷積來實(shí)現(xiàn)圖像平滑。模糊處理經(jīng)常用于預(yù)處理任務(wù)中,如在目標(biāo)提取之前去除圖像中的瑣碎細(xì)節(jié),以及連接直線或曲線的縫隙,實(shí)際上從圖像中消除了高頻部分(如噪聲、邊緣)。通過線性濾波和非線性濾波平滑處理,可以降低噪聲的影響。OpenCV主要的圖像平滑技術(shù)有均值濾波、方框?yàn)V波、高斯濾波、中值濾波和雙邊濾波等。圖像平滑5.2.1均值濾波器

均值濾波是指用當(dāng)前像素點(diǎn)周圍N×N個(gè)像素值的均值來代替當(dāng)前像素值。使用該方法遍歷處理圖像內(nèi)的每一個(gè)像素點(diǎn),即可完成整幅圖像的均值濾波。

在進(jìn)行均值濾波時(shí),首先要考慮需要對周圍多少個(gè)像素點(diǎn)取平均值。通常情況下,我們會以當(dāng)前像素點(diǎn)為中心,對行數(shù)和列數(shù)相等的一塊區(qū)域內(nèi)的所有像素點(diǎn)的像素值求平均。這種處理結(jié)果降低了圖像灰度的“尖銳”變化,也就是降低了噪聲。圖像平滑5.2.1均值濾波器在OpenCV中提供了cv2.blur()函數(shù)來實(shí)現(xiàn)圖像的均值濾波,其語法格式為:dst=cv2.blur(src,ksize,anchor=None,borderType=None)其中輸入輸出參數(shù)為:dst:表示返回的均值濾波處理后的圖像;src:表示原始的圖像;ksize:表示濾波卷積核的大?。籥nchor:表示圖像處理的錨點(diǎn),默認(rèn)為(-1,-1),表示位于卷積核中心點(diǎn);borderType:處理邊界方式;圖像平滑例5.1使用大小不同的卷積核對帶有椒鹽噪聲的lena圖像進(jìn)行均值濾波,觀察濾波效果。帶有椒鹽噪聲的圖像importcv2img=cv2.imread("d:/pics/lenasp.jpg")#讀入帶有椒鹽噪聲的圖像

#定義不同大小的卷積核img1=cv2.blur(img,(3,3))#卷積核為3x3,實(shí)現(xiàn)均值濾波img2=cv2.blur(img,(7,7))#卷積核為7x7,實(shí)現(xiàn)均值濾波img3=cv2.blur(img,(15,15))#卷積核為15x15,實(shí)現(xiàn)均值濾波cv2.imshow("Originimage",img)#顯示原始圖像#顯示濾波后的圖像cv2.imshow("N=3image",img1)cv2.imshow("N=7image",img2)cv2.imshow("N=15image",img3)cv2.waitKey()cv2.destroyAllWindows()圖像平滑(a)帶有椒鹽噪聲的圖像(b)卷積核為3x3均值濾波(c)卷積核為7ⅹ7均值濾波(d)卷積核為15ⅹ15均值濾波可以看出,核越大降噪效果越好,但是相反的是圖像會越模糊。borderType:處理邊界方式對圖像進(jìn)行處理時(shí),提取在邊界的某些目標(biāo)時(shí)會出現(xiàn)訪問越界的問題,一般這種情況有兩種解決方案:1.只對邊界內(nèi)的像素進(jìn)行訪問;2.對圖像的邊界進(jìn)行擴(kuò)展。opencv中提供的圖像邊界擴(kuò)展函數(shù)如下:1.BORDER_CONSTANT2.BORDER_REPLICATE3.BORDER_REFLECT4.BORDER_WRAP5.BORDER_REFLECT_1016.BORDER_ISOLATED

cv2.copyMakeBorder()函數(shù)詳解dst=cv2.copyMakeBorder(src,top,bottom,left,right,borderType,value)src:輸入的圖片;top,bottom,left,right:相應(yīng)方向上的邊框?qū)挾龋籦orderType:定義要添加邊框的類型;value:如果borderType為cv2.BORDER_CONSTANT時(shí)需要填充的常數(shù)值。1.BORDER_CONSTANT這個(gè)是使用指定像素值來填充邊緣,需要額外指定的像素。如指定像素值為6,那我們使用這種方式得到的邊緣就是:當(dāng)然我們在實(shí)際使用中一般都是彩色圖像,所以我們指定像素一般使用Scalar類型定義。importcv2

img=cv2.imread('d:/pics/flower1.jpg')rusult1=cv2.copyMakeBorder(img,20,20,20,20,

cv2.BORDER_CONSTANT,value=[0,255,0])

cv2.imshow('Origin_img',img)cv2.imshow('BORDER_CONSTANT',rusult1)cv2.waitKey(0)cv2.destroyAllWindows()2.BORDER_REPLICATE這個(gè)是使用用已知的邊緣像素值來填充邊緣。比如頂端填充的像素,使用的就是最上面一行的像素值進(jìn)行填充。如果是四個(gè)角,那就用原圖像中四個(gè)角的四個(gè)像素分別賦值:rusult2=cv2.copyMakeBorder(img,20,20,20,20,cv2.BORDER_REPLICATE)3.BORDER_REFLECT這個(gè)是使用用已知的邊緣像素值來反轉(zhuǎn)填充邊緣。和上面的不同,我們四邊是通過邊緣對稱反轉(zhuǎn)填充,四個(gè)角是通過原圖像四個(gè)頂點(diǎn)中心對稱反轉(zhuǎn)填充:result3=cv2.copyMakeBorder(img,50,50,50,50,cv2.BORDER_REFLECT)4.BORDER_WRAP用另外一邊的像素來補(bǔ)償填充,就是頂部和底部的像素互相填充,左邊和右邊的像素互相填充,對角的像素互相填充:result4=cv2.copyMakeBorder(img,50,50,50,50,cv2.BORDER_WRAP)5.BORDER_REFLECT_101使用用已知的邊緣像素值來反轉(zhuǎn)填充邊緣。上面也有一個(gè)反轉(zhuǎn)填充,這兩個(gè)有什么區(qū)別呢?這個(gè)的名字也只是在上面的基礎(chǔ)上添加了_101,也就是說這兩個(gè)是類似的。5.BORDER_REFLECT_1013.BORDER_REFLECT第3是使用邊做反轉(zhuǎn),這里第5使用邊界像素做反轉(zhuǎn),邊界的像素是不會填充到外部邊緣的。那這種方式有什么好處呢?一方面,我們原圖像邊界的像素只使用了一次,不會出現(xiàn)兩次;另一方面,我們圖像的邊緣拓展更加自然。這種方式和另外兩種方式是一致的,它們分別是:BORDER_REFLECT101和BORDER_DEFAULT。6.BORDER_ISOLATED

這個(gè)是使用黑色進(jìn)行填充,本質(zhì)上就是填充0。rusult6=cv2.copyMakeBorder(img,20,20,20,20,cv2.BORDER_ISOLATED)圖像平滑5.2.2方框?yàn)V波方框?yàn)V波與均值濾波的不同,方框?yàn)V波不會計(jì)算像素均值。在均值濾波中,濾波結(jié)果的像素值是任意一個(gè)點(diǎn)的鄰域平均值,等于各鄰域像素值之和除以鄰域面積。而在方框?yàn)V波中,可以自由選擇是否對均值濾波的結(jié)果進(jìn)行歸一化,即可以自由選擇濾波結(jié)果是鄰域像素值之和的平均值,還是鄰域像素值之和。圖像平滑5.2.2方框?yàn)V波在OpenCV中,實(shí)現(xiàn)方框?yàn)V波的函數(shù)是cv2.boxFilter(),其語法格式為:dst=cv2.boxFilter(src,ddepth,ksize,anchor,normalize,borderType)其中輸入輸出參數(shù)為:dst:表示進(jìn)行方框?yàn)V波后得到的處理結(jié)果;src:表示原始圖像。ddepth:表示處理結(jié)果圖像的圖像深度;ksize:表示濾波核的大??;anchor:表示錨點(diǎn),其默認(rèn)值是(-1,-1);normalize:表示在濾波時(shí)是否進(jìn)行歸一化處理。圖像平滑例2.針對噪聲圖像,對其進(jìn)行方框?yàn)V波,顯示濾波結(jié)果。帶有椒鹽噪聲的圖像importcv2img=cv2.imread("d:/pics/lenasp.jpg")#讀入帶有椒鹽噪聲的圖像

#定義不同大小的卷積核dst1=cv2.boxFilter(img,-1,(3,3),normalize=1)#進(jìn)行歸一化處理dst2=cv2.boxFilter(img,-1,(2,2),normalize=0)#無歸一化處理

#顯示濾波后的圖像cv2.imshow("Originimage",img)#顯示原始圖像cv2.imshow("n=1image",dst1)#歸一化處理濾波后的圖像cv2.imshow("n=0image",dst2)#無歸一化處理濾波后的圖像cv2.waitKey()cv2.destroyAllWindows()圖像平滑(a)帶有噪聲圖像(b)normalize=1時(shí)方框?yàn)V波(c)normalize=0時(shí)方框?yàn)V波方框?yàn)V波函數(shù)對參數(shù)normalize進(jìn)行設(shè)置,當(dāng)normalize=1,即使用了默認(rèn)值,表示要進(jìn)行歸一化處理,此時(shí)它和函數(shù)cv2.blur()的濾波結(jié)果是完全相同的;當(dāng)參數(shù)normalize=0,沒有對圖像進(jìn)行歸一化處理,在進(jìn)行濾波時(shí),計(jì)算3×3鄰域的像素值之和,這時(shí)像素值大于255的圖像顯示純白色,小于255的部分有顏色,這部分有顏色是因?yàn)檫@些點(diǎn)周邊鄰域的像素值均較小,鄰域像素值在相加后仍然小于255。圖像平滑5.2.3高斯濾波器高斯濾波是一種線性平滑濾波,適用于消除高斯噪聲,廣泛應(yīng)用于圖像處理的減噪過程。高斯濾波是對整幅圖像進(jìn)行加權(quán)平均的過程,每一個(gè)像素點(diǎn)的值,都由其本身和鄰域內(nèi)的其他像素值經(jīng)過加權(quán)平均后得到。在高斯濾波中,按照與中心點(diǎn)的距離不同,賦予像素點(diǎn)不同的權(quán)重,靠近中心點(diǎn)的權(quán)重值較大,遠(yuǎn)離中心點(diǎn)的權(quán)重值較小,在此基礎(chǔ)上計(jì)算鄰域內(nèi)各個(gè)像素值不同的權(quán)重和。如下面所示:121242121圖像平滑5.2.3高斯濾波器在OpenCV中,實(shí)現(xiàn)高斯濾波的函數(shù)是cv2.GassianBlur(),其語法格式為:dst=cv2.GaussianBlur(src,ksize,sigmaX,sigmaY,borderType=None)其中輸入輸出參數(shù)如下:dst:表示返回的高斯濾波結(jié)果;src:表示原始圖像;ksize:表示濾波卷積核的大小,卷積核必須為奇數(shù);sigmaX:表示卷積核在水平方向上的權(quán)重值;sigmaY:表示卷積核在水平方向上的權(quán)重值;borderType:處理邊界方式。圖像平滑例5.3對圖像使用高斯濾波,觀察濾波效果。帶有椒鹽噪聲的圖像importcv2img=cv2.imread("d:/pics/lenasp.jpg")#讀入帶有椒鹽噪聲的圖像#高斯濾波image3=cv2.GaussianBlur(img,(3,3),0,0)#卷積核為3x3image7=cv2.GaussianBlur(img,(7,7),0,0)#卷積核為7x7image15=cv2.GaussianBlur(img,(15,15),0,0)#卷積核為15x15

#顯示濾波后的圖像cv2.imshow("Originimage",img)#顯示原圖cv2.imshow("N=3Gaussimage",image3)#顯示3x3濾波后的圖像cv2.imshow("N=7Gaussimage",image7)#顯示7x7濾波后的圖像cv2.imshow("N=15Gaussimage",image15)#顯示15x15濾波后的圖像cv2.waitKey()cv2.destroyAllWindows()圖像平滑(a)帶有椒鹽噪聲的圖像(b)卷積核為3x3高斯濾波(c)卷積核為7ⅹ7高斯濾波(d)卷積核為15ⅹ15高斯濾波可以看出,高斯濾波器產(chǎn)生的模糊效果比均值濾波器更自然。圖像平滑5.2.4中值濾波器中值濾波是一種典型的非線性濾波技術(shù),它是排序?yàn)V波器的一種。這種濾波器的響應(yīng)以濾波器包圍的圖像區(qū)域中所包含的像素排序?yàn)榛A(chǔ),然后使用統(tǒng)計(jì)排序結(jié)果決定的值代替中心像素的值。

982341656123456689圖像平滑5.2.4中值濾波器在OpenCV中,實(shí)現(xiàn)中值濾波的函數(shù)是cv2.medianBlur(),其語法格式為:dst=cv2.medianBlur(src,ksize)其中輸入輸出參數(shù)為:dst表示返回的中值濾波處理結(jié)果;src表示輸入圖像;ksize表示濾波卷積核的大小,卷積核必須為奇數(shù)。圖像平滑例5.4對圖像使用中值濾波,觀察濾波效果。帶有椒鹽噪聲的圖像importcv2img=cv2.imread("d:/pics/lenasp.jpg")#讀入帶有椒鹽噪聲的圖像

#中值濾波image3=cv2.medianBlur(img,3)#使用卷積核為3*3的中值濾波image7=cv2.medianBlur(img,7)#使用卷積核為7*7的中值濾波image15=cv2.medianBlur(img,15)#使用卷積核為15*15的中值濾波

#顯示濾波后的圖像cv2.imshow("Originimage",img)#顯示原始圖像cv2.imshow("N=3medianimage",image3)#顯示3*3濾波后的圖像cv2.imshow("N=7medianimage",image3)#顯示7*7濾波后的圖像cv2.imshow("N=15medianimage",image3)#顯示15*15濾波后的圖像cv2.waitKey()cv2.destroyAllWindows()圖像平滑(a)帶有椒鹽噪聲的圖像(b)卷積核為3x3中值濾波(c)卷積核為7ⅹ7中值濾波(d)卷積核為15ⅹ15中值濾波可以看出,中值濾波器對減少“椒鹽噪聲”非常有效。中值濾波不會改變信號中的階躍變化,因此能夠平滑信號中的噪聲,同時(shí)又不會模糊信號的邊緣信息,這個(gè)性質(zhì)使得它能夠很好的使用與圖像空域?yàn)V波的相關(guān)應(yīng)用。圖像平滑5.2.5雙邊濾波雙邊濾波在計(jì)算某個(gè)像素點(diǎn)時(shí)不僅考慮距離信息,還會考慮色差信息,這種計(jì)算方式可以在有效去除噪聲的同時(shí)保護(hù)邊緣信息。在通過雙邊濾波處理邊緣的像素點(diǎn)時(shí),與當(dāng)前像素點(diǎn)色差較小的像素點(diǎn)會被賦予較大的權(quán)重。相反,色差較大的像素點(diǎn)會被賦予較小的權(quán)重,雙邊濾波正是通過這種方式保護(hù)了邊緣信息。在通過雙邊濾波計(jì)算邊緣像素時(shí),對于白色像素點(diǎn)賦予的權(quán)重較大,而對于黑色像素點(diǎn)賦予的權(quán)重很小,甚至是0。這樣計(jì)算后的結(jié)果是白色仍然是白色,黑色仍然是黑色,邊緣信息得到了保護(hù)。圖像平滑5.2.5雙邊濾波在OpenCV中,實(shí)現(xiàn)雙邊濾波的函數(shù)是cv2.bilateralFilter(),其語法格式為:dst=cv2.bilateralFilter(src,d,sigmaColor,sigmaSpace,borderType)其中輸入輸出參數(shù)為:dst:表示返回的雙邊濾波處理結(jié)果;src:表示原始圖像;d:表示在濾波時(shí)選取的空間距離參數(shù),即以當(dāng)前像素點(diǎn)為中心點(diǎn)的半徑;sigmaColor:表示雙邊濾波時(shí)選取的色差范圍;sigmaSpace:表示坐標(biāo)空間的sigma值,值越大,表示越多的點(diǎn)參與濾波;borderType:表示以何種方式處理圖像邊界。圖像平滑例5.5對圖像使用雙邊濾波,觀察濾波效果。帶有椒鹽噪聲的圖像importcv2img=cv2.imread("d:/pics/lenasp.jpg")#讀入帶有椒鹽噪聲的圖像

#雙邊濾波image1=cv2.bilateralFilter(img,30,50,100)#濾波半徑30image2=cv2.bilateralFilter(img,70,50,100)#濾波半徑70image3=cv2.bilateralFilter(img,150,50,100)#濾波半徑150

#顯示濾波后的圖像cv2.imshow("Originimage",img)#帶有椒鹽噪聲的圖像cv2.imshow("BF1image",image1)#濾波半徑30的圖像cv2.imshow("BF2image",image2)#濾波半徑70的圖像cv2.imshow("BF3image",image3)#濾波半徑150的圖像cv2.waitKey()cv2.destroyAllWindows()圖像平滑(a)帶有椒鹽噪聲的圖像(b)濾波半徑為30雙邊濾波(c)濾波半徑70雙邊濾波(d)濾波半徑150雙邊濾波可以看出,在濾除原圖像中平整部分噪聲的同時(shí),也較好的保留了原圖像中的邊緣信息。5.3

圖像銳化5.3圖像銳化圖像銳化處理的目的是使模糊的圖像變得更加清晰起來,圖像的模糊實(shí)質(zhì)就是圖像受到平均或積分運(yùn)算造成的,因此可以對圖像進(jìn)行還原運(yùn)算如微分運(yùn)算來使圖像清晰化。從頻譜角度來分析,圖像模糊的實(shí)質(zhì)是其高頻分量被衰減,因而可以通過高通濾波操作來清晰圖像。圖像銳化濾波能減弱或消除圖像中的低頻分量,但不影響高頻分量。因?yàn)榈皖l分量對應(yīng)圖像中灰度值緩慢變化區(qū)域,因而與圖像的整體特性如整體對比度和平均灰度值有關(guān)。銳化濾波能使圖像反差增加、邊緣明顯,可用于增強(qiáng)圖像中被模糊的細(xì)節(jié)或景物邊緣。圖像銳化5.3.1拉普拉斯濾波拉普拉斯濾波是利用拉普拉斯算子(Laplacian)在圖像鄰域內(nèi)進(jìn)行像素灰度差分計(jì)算,通過二階微分推導(dǎo)出的一種圖像鄰域增強(qiáng)算法。其基本思想是當(dāng)鄰域的中心像素灰度低于它所在鄰域內(nèi)的其他像素的平均灰度時(shí),此中心像素的灰度應(yīng)該進(jìn)一步降低;當(dāng)高于時(shí)進(jìn)一步提高中心像素的灰度,從而實(shí)現(xiàn)圖像銳化處理。0101-41010

常用的一個(gè)模板圖像銳化5.3.1拉普拉斯濾波在OpenCV中,實(shí)現(xiàn)Laplacian濾波的函數(shù)cv2.Laplacian(),其語法格式為:dst=cv2.Laplacian(src,ddepth[,ksize[,scale[,delta[,borderType]]]])其中輸入?yún)?shù)為:src:需要處理的圖像;ddepth:圖像的深度,-1表示采用的是與原圖像相同的深度。Ksize:算子的大??;Scale:縮放導(dǎo)數(shù)的比例常數(shù),默認(rèn)情況下沒有伸縮系數(shù);delta:是一個(gè)可選的增量,將會加到最終的dst中;borderType是判斷圖像邊界的模式。圖像銳化例5.6使用拉普拉斯算子銳化圖像,觀察效果。importcv2img=cv2.imread('d:/pics/onion.png')#讀入一幅彩色圖像#進(jìn)行拉普拉斯算子運(yùn)算lap=cv2.Laplacian(img,cv2.CV_16S,ksize=3)#求絕對值并轉(zhuǎn)為8比特圖像laplacian=cv2.convertScaleAbs(lap)

#顯示濾波后的圖像cv2.imshow("Original",img)#原圖像cv2.imshow("Laplacian",laplacian)#經(jīng)拉普拉斯算子后的圖像cv2.waitKey()cv2.destroyAllWindows()圖像銳化可以看出,在濾除原圖像中平整部分噪聲的同時(shí),也較好的保留了原圖像中的邊緣信息。圖像銳化5.3.2自定義卷積核濾波OpenCV提供了多種濾波方式,來實(shí)現(xiàn)圖像的平滑、銳化效果,大多數(shù)濾波方式所使用的卷積核都具有一定的靈活性,能夠方便地設(shè)置卷積核的大小和數(shù)值。但是,我們有時(shí)希望使用特定的卷積核實(shí)現(xiàn)卷積操作,這時(shí)前面介紹過的濾波函數(shù)都無法將卷積核確定為特定形式,這時(shí)要使用OpenCV的自定義卷積函數(shù)。圖像銳化5.3.2自定義卷積核濾波在OpenCV中,實(shí)現(xiàn)Laplacian濾波的函數(shù)cv2.filter2D(),其語法格式為:dst=cv2.filter2D(src,ddepth,kernel[,anchor[,delta[,borderType]]])其中輸入輸出參數(shù)為:dst:表示輸出圖像;src:輸入原圖像;ddepth:輸出圖像的深度;kernel:表示卷積核,一個(gè)單通道數(shù)組矩陣。anchor:表示內(nèi)核的基準(zhǔn)點(diǎn),其默認(rèn)值為(-1,-1),位于中心位置;delta:修正值,可選項(xiàng),默認(rèn)值為0;borderType:表示邊界處理方式,通常使用默認(rèn)值即可。圖像銳化例5.7使用自定義卷積核濾波器對圖像進(jìn)行濾波處理importcv2importnumpyasnp

#讀入圖像img=cv2.imread('d:/pics/lena.jpg')img_gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#轉(zhuǎn)化為灰度圖像

#使用自定義的卷積函數(shù)kernel3=np.array([[-1,-1,0],[-1,0,1],[0,1,1]])kernel5=np.array([[-1,-1,-1,-1,0],[-1,-1,-1,0,1],[-1,-1,0,1,1],[-1,0,1,1,1],[0,1,1,1,1]])

image3=cv2.filter2D(img_gray,-1,kernel3)image5=cv2.filter2D(img_gray,-1,kernel5)

#顯示濾波后的圖像cv2.imshow("Originimage",img_gray)#原始圖像cv2.imshow("k3image",image3)#卷積核k3圖像cv2.imshow("k5image",image5)#卷積核k5圖像cv2.waitKey()cv2.destroyAllWindows()圖像銳化(a)原圖像

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論