欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python?計(jì)算機(jī)視覺編程進(jìn)階之OpenCV?圖像銳化及邊緣檢測

 更新時(shí)間:2021年11月24日 10:06:30   作者:一馬歸一碼  
計(jì)算機(jī)視覺這種技術(shù)可以將靜止圖像或視頻數(shù)據(jù)轉(zhuǎn)換為一種決策或新的表示。所有這樣的轉(zhuǎn)換都是為了完成某種特定的目的而進(jìn)行的,本篇我們來學(xué)習(xí)下如何對圖像進(jìn)行銳化處理以及如何進(jìn)行邊緣檢測

參考的一些文章以及論文我都會(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)文章

最新評論