Python?計(jì)算機(jī)視覺編程進(jìn)階之OpenCV?圖像銳化及邊緣檢測
參考的一些文章以及論文我都會(huì)給大家分享出來 —— 鏈接就貼在原文,論文我上傳到資源中去,大家可以免費(fèi)下載學(xué)習(xí),如果當(dāng)天資源區(qū)找不到論文,那就等等,可能正在審核,審核完后就可以下載了。大家一起學(xué)習(xí),一起進(jìn)步!加油?。?/p>
前言
(1)圖像銳化
前一篇文章中我們進(jìn)行了對圖像的噪聲的濾除操作,使用的手段是進(jìn)行圖像平滑,我們提到圖像平滑是將圖像中的高頻部分進(jìn)行濾除,然而圖像中的高頻部分則是主要決定了圖像的一些細(xì)節(jié)部分,因此濾除高頻部分就代表著圖像會(huì)變得模糊,這對與圖像的處理來說不太友好,所以我們要適當(dāng)對平滑后的圖像進(jìn)行銳化操作,使得圖像的一些邊緣部分變得更加清晰,便于我們觀察圖像的信息。
(2)圖像邊緣檢測
a. 圖像邊緣
圖像的大部分信息都存在于圖像的邊緣中 ,主要表現(xiàn)為圖像局部特征的不連續(xù)性,即圖像中灰度變化比較劇烈的地方。因此 ,我們把圖像的邊緣定義為圖像中灰度發(fā)生急劇變化的區(qū)域邊界。根據(jù)灰度變化的劇烈程度, 通常將邊緣劃分為階躍狀和屋頂狀兩種類型。階躍邊緣兩邊的灰度值變化明顯,而屋頂邊緣位于灰度值增加與減少的交界處。
b. 邊緣檢測
邊緣檢測的目的是去發(fā)現(xiàn)圖像中關(guān)于形狀和反射或透射比的信息, 是圖像處理、圖像分析、模式識(shí)別、計(jì)算機(jī)視覺以及人類視覺的基本步驟之一。 其結(jié)果的正確性和可靠性將直接影響到機(jī)器視覺系統(tǒng)對客觀世界的理解。
本篇文章主要進(jìn)行 Python 實(shí)際操作,不進(jìn)行一些概念的解釋和數(shù)學(xué)推導(dǎo),以后有時(shí)間專門出一篇特別篇進(jìn)行概念解釋。
1. 一階微分算算子、二階微分算子
前面我們提到,圖像邊緣分為階躍狀和屋頂狀兩種類型,其中階躍邊緣兩邊的灰度值變化明顯,而屋頂邊緣位于灰度值增加與減少的交界處。
那么, 對階躍邊緣和屋頂邊緣分別求取一階、二階導(dǎo)數(shù)就可以表示邊緣點(diǎn)的變化。即對于一個(gè)階躍邊緣點(diǎn),其灰度變化曲線的一階導(dǎo)數(shù)在該點(diǎn)達(dá)到極大值, 二階導(dǎo)數(shù)在該點(diǎn)與零交叉(一階導(dǎo)數(shù)與二階導(dǎo)數(shù)的意義);對于一個(gè)屋頂邊緣點(diǎn),其灰度變化曲線的一階導(dǎo)數(shù)在該點(diǎn)與零交叉(因?yàn)樵擖c(diǎn)為一個(gè)局部最大值點(diǎn));二階導(dǎo)數(shù)在該點(diǎn)達(dá)到極大值。
2. 讀取圖像信息
在我們這個(gè)計(jì)算機(jī)視覺的專欄文章里第一步永遠(yuǎn)是經(jīng)典的讀取圖像信息,而且是美女圖像信息:
""" Author:XiaoMa date:2021/10/29 """ import cv2 import matplotlib.pyplot as plt #讀取圖像信息 img0 = cv2.imread("E:\From Zhihu\For the desk\cvten2.jpg") img1 = cv2.resize(img0, dsize = None, fx = 0.5, fy = 0.5) img2 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY) cv2.imwrite("E:\From Zhihu\For the desk\cvtenGray.jpg", img2) #保存灰度圖 h, w = img1.shape[:2] print(h, w) cv2.namedWindow("W0") cv2.imshow("W0", img1) cv2.waitKey(delay = 0)
得到圖像信息如下:
395 702
我們接下來要做的就是對圖像進(jìn)行邊緣檢測
3. Sobel 算子
#Sobel 算子 img3 = cv2.Sobel (img2, cv2.CV_64F, 0, 1, ksize=5) cv2.namedWindow("W3") cv2.imshow("W3", img3) cv2.waitKey(delay = 0)
4. Laplacian 算子
#Laplacian 算子 img7 = cv2.Laplacian(img2, cv2.CV_64F) cv2.namedWindow("W7") cv2.imshow("W7", img7) cv2.waitKey(delay = 0)
5. Scharr 算子
#Scharr 算子 img9 = cv2.Scharr(img2, cv2.CV_64F, 0, 1) cv2.namedWindow("W9") cv2.imshow("W9", img9) cv2.waitKey(delay = 0)
6. Canny 算子
#canny 算子 img4 = cv2.Canny(img2, 100, 200) cv2.namedWindow("W4") cv2.imshow("W4", img4) cv2.waitKey(delay = 0)
7. 總結(jié)
這天時(shí)間比較緊,這篇博文在介紹圖像的銳化以及邊緣檢測時(shí)沒有涉及到過多的理論知識(shí)以及概念公式等,后面閑下來會(huì)加以補(bǔ)充或者專門寫一篇總結(jié)理論知識(shí)的文章,希望能幫到大家。參考論文按照慣例貼在下面。
8. 參考論文
到此這篇關(guān)于Python 計(jì)算機(jī)視覺編程進(jìn)階之OpenCV 圖像銳化及邊緣檢測的文章就介紹到這了,更多相關(guān)Python OpenCV 圖像銳化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)人臉識(shí)別的詳細(xì)圖文教程
人臉識(shí)別是人工智能的一個(gè)重要應(yīng)用,下面這篇文章主要給大家介紹了關(guān)于Python實(shí)現(xiàn)人臉識(shí)別的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08Python 實(shí)現(xiàn)購物商城,含有用戶入口和商家入口的示例
下面小編就為大家?guī)硪黄狿ython 實(shí)現(xiàn)購物商城,含有用戶入口和商家入口的示例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-09-09Python實(shí)現(xiàn)Youku視頻批量下載功能
前段時(shí)間由于收集視頻數(shù)據(jù)的需要,自己搗鼓了一個(gè)YouKu視頻批量下載的程序。下面小編把實(shí)現(xiàn)過程分享到腳本之家平臺(tái),供大家參考2017-03-03在pytorch中計(jì)算準(zhǔn)確率,召回率和F1值的操作
這篇文章主要介紹了在pytorch中計(jì)算準(zhǔn)確率,召回率和F1值的操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05python 中os模塊os.path.exists()的用法說明
這篇文章主要介紹了python 中os模塊os.path.exists()的用法說明,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03pytorch中的reshape()、view()、nn.flatten()和flatten()使用
這篇文章主要介紹了pytorch中的reshape()、view()、nn.flatten()和flatten()使用,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08python GUI庫圖形界面開發(fā)之PyQt5工具欄控件QToolBar的詳細(xì)使用方法與實(shí)例
這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5工具欄控件QToolBar的詳細(xì)使用方法與實(shí)例,需要的朋友可以參考下2020-02-02Python機(jī)器學(xué)習(xí)應(yīng)用之基于線性判別模型的分類篇詳解
線性判別分析(Linear?Discriminant?Analysis,?LDA)是一種監(jiān)督學(xué)習(xí)的降維方法,也就是說數(shù)據(jù)集的每個(gè)樣本是有類別輸出。和之前介紹的機(jī)器學(xué)習(xí)降維之主成分分析(PCA)方法不同,PCA是不考慮樣本類別輸出的無監(jiān)督學(xué)習(xí)方法2022-01-01