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

Python圖像處理之邊緣檢測(cè)原理詳解

 更新時(shí)間:2022年12月05日 10:45:54   作者:夏天是冰紅茶  
邊緣檢測(cè)是圖像處理和計(jì)算機(jī)視覺(jué)當(dāng)中的基本問(wèn)題,邊緣檢測(cè)的目的是標(biāo)識(shí)數(shù)字圖像中亮度變化明顯的點(diǎn)。本文將通過(guò)示例和大家介紹一下邊緣檢測(cè)的原理,希望對(duì)大家有所幫助

原理

邊緣檢測(cè)是圖像處理和計(jì)算機(jī)視覺(jué)當(dāng)中的基本問(wèn)題,邊緣檢測(cè)的目的是標(biāo)識(shí)數(shù)字圖像中亮度變化明顯的點(diǎn),圖像的邊緣檢測(cè)可以大幅度的減少數(shù)據(jù)量,并且剔除了可以認(rèn)為不相關(guān)的信息,保留了圖像重要的結(jié)構(gòu)屬性,它們絕大多數(shù)可以分為兩類(lèi):基于搜索和基于零穿越。

基于搜索:通過(guò)尋找圖像一階導(dǎo)數(shù)中max來(lái)檢測(cè)邊界,然后利用計(jì)算結(jié)果估計(jì)邊緣的局部方向,通常采用梯度的方向,并在此方向找到局部梯度模的最大值,代表的算法是Sobel算子和Scharr算子。

基于零穿越:通過(guò)尋找圖像二階導(dǎo)數(shù)零穿越來(lái)尋找邊界,代表算法是Laplacian算子。 

Sobel檢測(cè)算子

Sobel邊緣檢測(cè)算法比較簡(jiǎn)單,實(shí)際應(yīng)用中效率要比Canny邊緣檢測(cè)算法效率要高,但邊緣檢測(cè)效果不如Canny準(zhǔn)確,但很多常會(huì)它依舊是首選,它是高斯平滑與微分操作的結(jié)合體,所以其抗燥聲能力很強(qiáng),用途較多,尤其是對(duì)效率要求較高,而對(duì)細(xì)紋理不是很在意的情況下。

方法

 那么我們看到上圖最后一個(gè)式子,在某一個(gè)領(lǐng)域內(nèi),某一方向上,前一個(gè)像素與后一個(gè)像素的差,除以(x+1)-(x-1)=2,就得到當(dāng)前的一個(gè)一階導(dǎo)數(shù),這就是Sobel算子的一個(gè)思想。

這里假設(shè)要處理的對(duì)象為I,在兩個(gè)方向求導(dǎo):

  • 水平變化:將圖像I與奇數(shù)大小的模板進(jìn)行卷積,結(jié)果為Gx。
  • 垂直變化:將圖像I與奇數(shù)大小的模板進(jìn)行卷積,結(jié)果為Gy。

如下,模板為3;

最后,統(tǒng)計(jì)極大值所在的位置,即為圖像的邊緣

注:當(dāng)內(nèi)核大小為3時(shí),以上Sobel內(nèi)核可能會(huì)產(chǎn)生比較明顯的誤差,為解決這一個(gè)問(wèn)題,我們使用Scharr函數(shù),但該函數(shù)僅作用于大小為3的內(nèi)核,該函數(shù)的運(yùn)行速度與Sobel算子一樣快,但結(jié)果更加精準(zhǔn),其計(jì)算方法為下圖所示:

應(yīng)用

 Opencv當(dāng)中的API為:

sobel_x_or_y=Sobel(src, ddepth, dx, dy, dst=None, ksize=None, scale=None, delta=None, borderType=None)
 
"""
src:傳入圖像
ddepth:圖像的深度
dx、dy=指求導(dǎo)的階數(shù),0表示這個(gè)方向上沒(méi)有求導(dǎo),取值為0、1
ksize=是Sobel算子的大小,即卷積核的大小,為奇數(shù)(1,3,5,7等),默認(rèn)是3
scale:縮放導(dǎo)數(shù)的比例常數(shù),默認(rèn)沒(méi)有
borderType:函數(shù)的邊界模式,默認(rèn)是cv2.BORDER_DEFAULT
"""

Sobel函數(shù)求導(dǎo)后會(huì)有負(fù)數(shù),還有大于255的值,原圖像為uint8,8位無(wú)符號(hào)數(shù),所以Sobel建立的圖像位數(shù)不夠,會(huì)有截?cái)?。因此,要?6位有符號(hào)的數(shù)據(jù)類(lèi)型,即cv2.CV_16S(放到深度中)。處理完圖像后,再使用cv2.convertScaleAbs()函數(shù)將其再轉(zhuǎn)為uint8格式,否則無(wú)法顯示圖像。

Sobel算子是兩個(gè)方向計(jì)算的,最后要用cv2.addWeighted()函數(shù)將其組合起來(lái)

Scale_abs=cv2.convertScaleAbs(x)
result=cv2.addWeighted(scr1,alpha,scr2,beta)  #混合x(chóng),y方向
import cv2
import numpy as np
from matplotlib import pyplot as plt
 
img=cv2.imread("Images/1-1.jpg",0)
#Sobel:x,y方向
x=cv2.Sobel(img,cv2.CV_16S,1,0)
y=cv2.Sobel(img,cv2.CV_16S,0,1)
#數(shù)據(jù)轉(zhuǎn)化
Scale_absx=cv2.convertScaleAbs(x)
Scale_absy=cv2.convertScaleAbs(y)
#混合圖像
result=cv2.addWeighted(Scale_absx,0.5,Scale_absy,0.5,0)
 
plt.figure(figsize=(10,8),dpi=100)
plt.subplot(121),plt.imshow(img,cmap=plt.cm.gray),plt.title('yuantu')
plt.xticks([]),plt.yticks([])
plt.subplot(122),plt.imshow(result,cmap=plt.cm.gray),plt.title('Sobel')
plt.xticks([]),plt.yticks([])
plt.show()

而Scharr,就是將Sobel算子當(dāng)中的變成ksize=-1。

x=cv2.Sobel(img,cv2.CV_16S,1,0,ksize=-1)
y=cv2.Sobel(img,cv2.CV_16S,0,1,ksize=-1)

可以看到,Scharr檢測(cè)的細(xì)節(jié)更加多一些。 

Laplacian算子

laplacian是利用二階導(dǎo)數(shù)來(lái)檢測(cè)邊緣。因?yàn)閳D像是“二維”,需要在兩個(gè)方向上求導(dǎo),如下所示

API:

laplacian=cv2.Laplacian(src, ddepth, dst=None, ksize=None, scale=None, delta=None, borderType=None)
 
"""
src:圖像
Ddepth:圖像的深度,-1表示采用的是原圖像相同的深度,目標(biāo)圖像的深度必須要大于等于原圖像的深度;
ksize:卷積核的大小,必須為奇數(shù)
"""
import cv2
import numpy as np
from matplotlib import pyplot as plt
 
img=cv2.imread("Images/1-1.jpg",0)
 
result=cv2.Laplacian(img,cv2.CV_16S)
Scale_abs=cv2.convertScaleAbs(result)
 
plt.figure(figsize=(10,8),dpi=100)
plt.subplot(121),plt.imshow(img,cmap=plt.cm.gray),plt.title('yuantu')
plt.xticks([]),plt.yticks([])
plt.subplot(122),plt.imshow(result,cmap=plt.cm.gray),plt.title('laplacian')
plt.xticks([]),plt.yticks([])
plt.show()

算子比較

到此這篇關(guān)于Python圖像處理之邊緣檢測(cè)原理詳解的文章就介紹到這了,更多相關(guān)Python邊緣檢測(cè)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python tornado上傳文件的功能

    Python tornado上傳文件的功能

    這篇文章主要介紹了Python tornado上傳文件的功能,代碼分為普通上傳和ajax上傳,通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • python繪制三維圖的詳細(xì)新手教程

    python繪制三維圖的詳細(xì)新手教程

    通常我們用 Python 繪制的都是二維平面圖,但有時(shí)也需要繪制三維場(chǎng)景圖,下面這篇文章主要給大家介紹了關(guān)于python繪制三維圖的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • Python使用MySQL8.2讀寫(xiě)分離實(shí)現(xiàn)示例詳解

    Python使用MySQL8.2讀寫(xiě)分離實(shí)現(xiàn)示例詳解

    在這篇文章中,我們將了解如何將?MySQL?8.2?的讀寫(xiě)分離功能與?MySQL-Connector/Python?一起使用的方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • python中把嵌套的列表合并成一個(gè)列表方法總結(jié)

    python中把嵌套的列表合并成一個(gè)列表方法總結(jié)

    python中l(wèi)ist這種數(shù)據(jù)結(jié)構(gòu)很常用到,下面這篇文章主要給大家介紹了關(guān)于python中把嵌套的列表合并成一個(gè)列表方法的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • python基礎(chǔ)教程之Hello World!

    python基礎(chǔ)教程之Hello World!

    這篇文章主要介紹了python基礎(chǔ)教程之Hello World!,本文講解了命令行中、文件中、腳本文件中輸出Hello World的例子,需要的朋友可以參考下
    2014-08-08
  • Python+Tkinter制作猜燈謎小游戲

    Python+Tkinter制作猜燈謎小游戲

    元宵節(jié),又稱(chēng)上元節(jié)、燈節(jié),是春節(jié)之后的第一個(gè)重要節(jié)日。而元宵節(jié)除了吃元宵、看花燈,還有一件最重要的事情就是猜燈謎!因此本文將通過(guò)Python Tkinter制作一個(gè)猜燈謎小游戲,感興趣的小伙伴可以了解一下
    2022-02-02
  • 詳解PyTorch手寫(xiě)數(shù)字識(shí)別(MNIST數(shù)據(jù)集)

    詳解PyTorch手寫(xiě)數(shù)字識(shí)別(MNIST數(shù)據(jù)集)

    這篇文章主要介紹了詳解PyTorch手寫(xiě)數(shù)字識(shí)別(MNIST數(shù)據(jù)集),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 深入詳解Python中sys模塊的功能與應(yīng)用

    深入詳解Python中sys模塊的功能與應(yīng)用

    在Python的標(biāo)準(zhǔn)庫(kù)中,sys模塊是一個(gè)常用而強(qiáng)大的工具,它提供了與Python解釋器交互的函數(shù)和變量,本文將介紹sys模塊的一些常用函數(shù)和方法,并通過(guò)實(shí)際的代碼實(shí)例來(lái)解析它們的用法,希望對(duì)大家有所幫助
    2024-03-03
  • Python設(shè)計(jì)模式之MVC模式簡(jiǎn)單示例

    Python設(shè)計(jì)模式之MVC模式簡(jiǎn)單示例

    這篇文章主要介紹了Python設(shè)計(jì)模式之MVC模式,簡(jiǎn)單介紹了MVC模式的概念、原理,并結(jié)合實(shí)例形式給出了Python實(shí)現(xiàn)與使用MVC模式的相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • Django 自定義404 500等錯(cuò)誤頁(yè)面的實(shí)現(xiàn)

    Django 自定義404 500等錯(cuò)誤頁(yè)面的實(shí)現(xiàn)

    這篇文章主要介紹了Django 自定義404 500等錯(cuò)誤頁(yè)面的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03

最新評(píng)論