<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
濾波器是對影象做平滑處理 的一種常用工具。
平滑處理即在儘可能地保留原影象資訊的情況下,對畫素值進行微調,使鄰近的畫素值之間,值的大小趨於“平滑”,以去除影象內的噪聲、降低細節層次資訊等的一系列的操作過程。本篇blog將為大家展示OpenCV中的均值濾波器 、中值濾波器 、高斯濾波器 和 雙邊濾波器。
濾波器的演演算法邏輯為,指定一個濾波核的大小(該大小表示參與計算的畫素資料的範圍),以影象中的每一個畫素都作為波的核心,通過該範圍內的資料,以一定的計算方式進行計算,將計算結果該值賦值給該畫素。
以大小為n×n的濾波核為例,對於每一個畫素資料,我們可以在陣列中得到以一個畫素為中心的n×n的矩陣,此即參與計算的資料的範圍(邊界)。這樣的矩陣結構即被稱為濾波核。
使用影象《龍門石窟》(longmen.jpg) shape:(350, 600, 3)
均值濾波器,也稱低通濾波器
顧名思義,均值濾波器即對濾波核內的資料求均值,然後將這個值賦值給矩陣核心位置。
均值濾波器可以使用cv2.blur() 方法實現
cv2.blur()的語法:
dst = blur(src, ksize, dst=None, anchor=None, borderType=None)
其中
下邊以3×3,5×5,10×10三種濾波核為例,分別展示影象經過均值濾波器處理後的效果。
2.2.1 3×3 濾波核為例
import cv2 img = cv2.imread("longmen.jpg") dst1 = cv2.blur(img, (3, 3)) cv2.imshow("3*3", dst1) cv2.waitKey() cv2.destroyAllWindows()
濾波效果如下:
2.2.2 5×5 濾波核為例
import cv2 img = cv2.imread("longmen.jpg") dst2 = cv2.blur(img, (5, 5)) cv2.imshow("5*5", dst2) cv2.waitKey() cv2.destroyAllWindows()
濾波效果如下:
2.2.3 10×10濾波核為例
import cv2 img = cv2.imread("longmen.jpg") dst3 = cv2.blur(img, (10, 10)) cv2.imshow("10*10", dst3) cv2.waitKey() cv2.destroyAllWindows()
可以看出,濾波核大小越大,影象越趨於模糊。
中值濾波器,即對濾波核內所有資料排序,將中間值賦值給濾波核核心位置的數位。
medianBlur(src, ksize, dst=None)
其中 ksize必須是奇數,是偶數的話會發生報錯。
不同於均值濾波器的方法,cv2.blur(),cv2.blur()的ksize引數是一個元組,而cv2.blur()的ksize引數是一個數值。
import cv2 img = cv2.imread("longmen.jpg") dst1 = cv2.medianBlur(img, 3) cv2.imshow("3*3", dst1) cv2.waitKey() cv2.destroyAllWindows()
濾波後效果如下:
高斯濾波器也被稱為高斯模糊 或 高斯平滑 。
高斯濾波器可以在降低圖片噪聲、細節層次的同時保留更多的影象資訊,使經過處理的影象呈現出“磨砂玻璃”的濾鏡效果。
使用均值濾波時,每個畫素都是均等權重的。使用高斯濾波器求的是不同權重下的均值,越靠近核心的畫素的權重越大,約靠近邊緣的畫素的權重則越小。
與濾波核對應的由每個資料權重組成的矩陣結構,是一個折積核。折積核中所有權重值的和為1。折積核中的數值會隨著核的大小而變化。
OpenCV使用cv2.GaussianBlur()方法實現高斯濾波器。其語法如下:
GaussianBlur(src, ksize, sigmaX, dst=None, sigmaY=None, borderType=None)
其中
修改sigmaX 和 sigmaY都會改變折積核中的權重值。這裡涉及折積方面的知識。
borderType 是邊界型別。
以9×9的濾波核為例
import cv2 img = cv2.imread("longmen.jpg") dst1 = cv2.GaussianBlur(img, (9, 9), 0, 0) cv2.imshow("9*9", dst1) cv2.waitKey() cv2.destroyAllWindows()
濾波後效果如下:
前三種濾波方式都會使影象變得平滑的同時,邊緣區域變得模糊不清。
雙邊濾波是可以在濾波過程中起到保護影象邊界資訊作用的濾波操作方法。
其邏輯為:
如果影象在邊緣區域,則加大邊緣畫素的權重,儘可能地讓邊緣區域的畫素值保持不變。如果不在邊緣區域(在平坦區域),則使用類似高斯濾波器的演演算法進行。
雙邊濾波器的語法為:
bilateralFilter(src, d, sigmaColor, sigmaSpace, dst=None, borderType=None)
scr 即目標影象
d過濾期間使用的每個畫素鄰域的直徑。如果為非正,則根據sigmaSpace計算。即如果為15,則表示15×15的濾波核。
sigmaColor參與計算的顏色的範圍,只有畫素小於這個值時,以其為核心的濾波核才參與濾波計算。否則不參與。當sigmaColor值為255時,表示所有畫素值為核心的濾波核都會參與。
sigmaSpace座標空間的σ sigmaσ值,σ sigmaσ越大,參與計算的畫素數量就越多。
borderType邊界的樣式。
還以圖片"longmen.jpg"為例,
選擇20×20的濾波核,
參與計算的畫素值範圍為:小於125的畫素值;
座標空間的σ sigmaσ值為,200
import cv2 img = cv2.imread("longmen.jpg") # 雙邊濾波,選取範圍直徑為15,顏色範圍為125 dst = cv2.bilateralFilter(img, 15, 125, 200) cv2.imshow("bilateral", dst) cv2.waitKey() cv2.destroyAllWindows()
雙邊濾波效果如下:
可以看出,相比以上濾波效果,雙邊濾波保留了較清晰的影象邊緣資訊。
到此這篇關於Python OpenCV之常用濾波器使用詳解的文章就介紹到這了,更多相關Python OpenCV濾波器內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45