[python opencv 計算機視覺零基礎到實戰] 九、模糊

一、學習目標

  1. 了解什么是卷積
  2. 了解模糊的使用方法與應用

如有錯誤歡迎指出~

二、了解模糊的應用

上一篇:[python opencv 計算機視覺零基礎到實戰] 八、ROI泛洪填充

2.1 了解卷積是什么

在本節中,卷積我們不過多的進行深入講解,我本人對卷積也只是稍有理解,不敢過多的編寫太深的內容。在OpenCV中的模糊操作中,模糊需要用到卷積,在此引入賈志剛老師對于OpenCV的基本卷積的講解。
以下是一個基本卷積的圖示,第一列是一維數組中每一個位置的值。其中111我們稱為卷積核。通過卷積核與一維數組進行計算最終將會得到藍最下面的藍色方塊內的值。第一位我們照著寫下,藍色區域為1,藍色方塊內的第二個值為2,是如何得到的呢?很簡單,用卷積核的每一個數乘上淡青藍色的內容,那就是11,21,15,隨后將它們進行相加,除以卷積核的步長,也就是3。這是就可以寫成(11+21+15)/3等于2,余數為2,我們只取整數部分。之后的計算也是如此,包括二維的數據進行計算也是根據一維的計算原理一致。

2.2 均值模糊

在OpenCV中均值模糊使用blur函數,blur函數一般使用可以接收2個參數,一個是src為輸入的圖像,一個是ksize為卷積核大小;卷積核大小可以給予一個矩陣,如上圖所屬的111是1行3列的卷積核,那么就可以寫為(1,3)。模糊都可以去進行去噪操作,不同的模糊對于不同的噪點有不同的效果。均值模糊一般可以用在隨機噪點的圖片中,可以很好的去除噪點。

首先我們引入一張圖片:

import cv2img = cv2.imread(r"C:\Users\Administrator\Desktop\2.jpg")
cv2.imshow("img", img)

隨后使用blur均值模糊函數對圖片進行降噪:

blur_img=cv2.blur(img,(2,24))#圖片去噪

blur函數第一個參數是img,為我們即將要處理的圖片,第二個參數是(2,24),表示創建一個2行24列的卷積核進行卷積。最后顯示圖片并且進行等待,完整代碼如下:

import cv2img = cv2.imread(r"C:\Users\Administrator\Desktop\3.jpg")
cv2.imshow("img", img)
blur_img=cv2.blur(img,(2,24))#圖片去噪
cv2.imshow("blur_img", blur_img)
cv2.waitKey (0)#等待關閉
cv2.destroyAllWindows()#destroy

我們可以從圖片中看到,原圖是存在一定的噪點,但是進行均值模糊后會變淡很多,但是圖片會有一定模糊。

2.3 中值模糊

中值模糊使用medianBlur函數,medianBlur一般接收2個參數,一個是待處理的圖片,還有一個是核的大小,規定為大于1的奇數,例如3、5、7…
現在我有一張有椒鹽噪點的圖片:

中值模糊對于該類型的圖片進行降噪效果十分顯著。由于大多數代碼已經講解過,在此不再贅述,直接貼上代碼:

import cv2img = cv2.imread(r"C:\Users\Administrator\Desktop\2.jpg")
cv2.imshow("img", img)
median_blur_img=cv2.medianBlur(img,5)cv2.imshow("median_blur_img", median_blur_img)
cv2.waitKey (0)#等待關閉
cv2.destroyAllWindows()#destroy

以上代碼中使用了medianBlur中值模糊方法,傳入了照片,并且給予了核大小值5,該值越大,則越模糊。結果如下:

2.4 銳化

在OpenCV中我們可以自定義內核對圖像進行卷積,內核也有幾種不同標準的內容,可以給圖像進行卷積后達到一些指定的效果。自定義對內核進行卷積使用filter2D函數。函數原型如下:

cv.filter2D(src, ddepth, kernel)

src為待處理的圖像;ddepth一般使用為-1,表示與原圖像具有相同的深度;kernel為卷積核,為單通道浮點矩陣;由于我們進行初步使用直接使用一般的卷積核,這個時候直接傳入固定數據即可,所以再次并不進行深度說明。

進行銳化的卷積核為:

kernel=np.array([[0,-1,0],[-1,5,-1],[0,-1,0]],np.float32)

傳入至filter2D函數則為:

cv2.filter2D(blur_img, -1, kernel)

現在我們將一個受到均值模糊的圖片使用filter2D函數進行銳化處理,完整代碼如下:

import cv2
import numpy as npimg = cv2.imread(r"C:\Users\Administrator\Desktop\4.jpg")
cv2.imshow("img", img)
blur_img=cv2.blur(img,(1,6))#圖片去噪
cv2.imshow("blur_img", blur_img)kernel=np.array([[0,-1,0],[-1,5,-1],[0,-1,0]],np.float32)
dst = cv2.filter2D(blur_img, -1, kernel)
cv2.imshow("dst", dst)cv2.waitKey (0)#等待關閉
cv2.destroyAllWindows()#destroy

以上代碼中blur_img,是均值模糊后的圖片,我們將blur_img傳入值filter2D函數中使用指定的卷積核進行銳化,最后得到dst圖像數據。結果如下:
均值模糊:

銳化處理:

從圖片的結果可以看出,進行均值模糊后,再進行銳化,該圖片的編譯將得到加深。

2.4 浮雕

矩陣:

kernel=np.array([[-2,-1,0],[-1,1,1],[0,1,2]],np.float32)


有點鬼畜,不要笑。

2.5 大綱

矩陣:

kernel=np.array([[-1,-1,-1],[-1,8,-1],[-1,-1,-1]],np.float32)

2.6 拉普拉斯算子

矩陣:

kernel=np.array([[0,1,0],[1,-4,1],[0,1,0]],np.float32)

2.7 分身原圖

矩陣:

kernel=np.array([[0,0,0],[0,1,0],[0,0,0]],np.float32)

在這里插入圖片描述
該系列文章首發于ebaina

三、總結

  1. 了解了卷積卷積的運算方式
  2. 了解多種模糊的使用方法
  3. 了解了中值模糊對于椒鹽噪點有很好的去噪效果

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/287528.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/287528.shtml
英文地址,請注明出處:http://en.pswp.cn/news/287528.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

windows update更新失敗 安全模式進不去

今天一同事的電腦遇到問題了,提示“windows update更新失敗”。最后一次正確配置不行, 安全模式進不去。解決方法:強制關機開機后F8啟動修復模式(系統盤或者pe進入也可以),系統還原,找最后的還原…

windbg的時間旅行實現對 C# 程序的終極調試!

一:什么是時間旅行 簡而言之就是把程序的執行流拍成vlog,這樣就可以對 vlog 快進或者倒退,還可以分享給別人做進一步的分析,是不是想都不敢想。很開心的是 windbg preview 版本中已經實現了,叫做 時間旅行調試 TTD&…

【神經網絡】神經網絡結構在命名實體識別(NER)中的應用

命名實體識別(Named Entity Recognition,NER)就是從一段自然語言文本中找出相關實體,并標注出其位置以及類型,如下圖。它是NLP領域中一些復雜任務(例如關系抽取,信息檢索等)的基礎。…

centos安裝禪道的步驟

1、下載 XAMPP 套件: https://sourceforge.net/projects/xampp/files/XAMPP%20Linux/stats/timeline 下載的文件是 xampp-linux-x64-7.0.6-0-installer.run 2、 執行 ./xampp-linux-x64-7.0.6-0-installer.run 3、 啟動 /opt/lampp/lampp start 4、 下載禪道 ZenTa…

[python opencv 計算機視覺零基礎到實戰] 十、圖片效果毛玻璃

一、學習目標 了解高斯模糊的使用方法了解毛玻璃的圖片效果添加了解如何自己做一個噪聲圖片 上一篇:[python opencv 計算機視覺零基礎到實戰] 九、模糊 如有錯誤歡迎指出~ 二、了解模糊與美顏 2.1 使用高斯模糊降噪 由于很多小伙伴反應拋開原理或理論講解使用用法對于初學…

Android之自定義View實現帶4圓角或者2圓角的效果

1 問題 實現任意view經過自定義帶4圓角或者2圓角的效果 2 原理 1) 實現view 4圓角 我們只需要把左邊的圖嵌入到右邊里面去,最終顯示左邊的圖就行。 2) 實現view上2圓角 我們只需要把左邊的圖嵌入到右邊里面去,最終顯示左邊的圖就行。 安卓源碼里面有這樣的類 package and…

java trim()函數_Java - split()函數和trim()函數的使用方法

split()函數和trim()函數的使用方法本文地址: http://blog.csdn.net/caroline_wendy/article/details/24465141詳細參考Java API: http://docs.oracle.com/javase/6/docs/api/java/lang/String.htmlsplit()函數是依據參數如",", "-", " "等, 切割…

分布式服務器集群架構方案思考

0x01.大型網站演化 簡單說,分布式是以縮短單個任務的執行時間來提升效率的,而集群則是通過提高單位時間內執行的任務數來提升效率。 集群主要分為:高可用集群(High Availability Cluster),負載均衡集群(Load Balance Cluster&…

交互式 .Net 容器版

1背景介紹 在之前的文章 - 交互式 .Net 中已經介紹了什么是 交互式 .Net,文中是通過 Visual Studio Code 插件的方式實現 交互式 .Net 的。現在,我們將使用容器的方式實現 交互式 .Net。2鏡像構建 1. DockerfileFROM mcr.microsoft.com/dotn…

Java 集合練習——3

創建Map集合,創建Emp對象,并將創建的Emp對象添加到集合中,并將id為005的對象從集合中移除 創建Emp類: package jihe;public class Emp {private String id;public String getId() {return id;}public void setId(String id) {this…

[python opencv 計算機視覺零基礎到實戰] 十一找到圖片中指定內容

一、學習目標 了解圖片內容定位方法matchTemplate使用了解minMaxLoc方法使用 上一篇《[python opencv 計算機視覺零基礎到實戰] 十、圖片效果毛玻璃》 如有錯誤歡迎指出~ 二、了解從一張圖片中找到指定內容的方法 2.1 使用matchTemplate函數對圖片中的指定內容進行查找 有…

Linq 實現 DataTable 行轉列

前幾天寫了一篇sqlserver 行轉列,http://www.cnblogs.com/li-peng/archive/2012/02/01/2334973.html 由于工作需要,要把查出來的DataTable實現 行轉列, 正好這一陣子在用Linq 就做了一個行轉列的小例 子 轉換前的table: 轉換后的table: 代碼…

Android Studio之編譯提示\app\src\main\res\values\colors.xml:1:1 Error:前言有不允許的內容

1 問題 Android Studio新建立的項目運行莫名其妙提示錯誤如下 app\src\main\res\values\colors.xml:1:1 Error:前言有不允許的內容 然后我把res目錄下面的colors.xml文件打開看如下 <?xml version"1.0" encoding"utf-8"?> <resources>&l…

python順序執行 toggle_編寫腳本在Python中運行多個腳本

我正在建一個鬧鐘項目。誰能告訴我如何編寫一個腳本來調用所有其他腳本嗎。例如&#xff0c;我在我的樹莓派上有三個腳本叫做LCDTESTFORPI.py&#xff0c;另一個叫做“ex 7”分段.py“還有一個叫”報警pi.py”. 我希望能夠運行一個名為“alarmpi”的腳本_初始py“它將運行所有其…

AndroidService 深度分析(2)

AndroidService 深度分析&#xff08;2&#xff09; 上一篇文章我們Service的生命周期進行了測試及總結。這篇文章我們介紹下綁定執行的Service的實現。 綁定執行的Service可能是僅為本應用提供服務&#xff0c;稱為本地Service。也可能為其它應用提供跨進程服務&#xff0c;即…

Hello Playwright:(3)基本概念

下面介紹一下 Playwright 中的基本概念&#xff1a;Headless 瀏覽器Playwright 需要特定版本的瀏覽器二進制文件才能運行。這些瀏覽器都支持 2 種 運行模式&#xff1a;Headless&#xff0c;無瀏覽器 UI&#xff0c;運行速度較快&#xff0c;常用于自動化運行Headed&#xff0c…

[python opencv 計算機視覺零基礎到實戰] 十二 直方圖

一、學習目標 了解matplotlib繪圖庫的使用了解如何通過折線圖或者直方圖對圖表進行繪制了解了通過圖標對圖片內容進行直觀判斷 如有錯誤歡迎指出~ 二、了解圖像直方圖及其應用 2.1 了解matplotlib庫 在了解圖像直方圖前我們需要了解一個matplotlib庫&#xff0c;matplotli…