日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

OpenCV使用深度學習做邊緣檢測的流程

新機器視覺 ? 來源:AI算法與圖像處理 ? 作者:AI算法與圖像處理 ? 2021-05-08 11:05 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

導讀

分析了Canny的優(yōu)劣,并給出了OpenCV使用深度學習做邊緣檢測的流程。

在這篇文章中,我們將學習如何在OpenCV中使用基于深度學習的邊緣檢測,它比目前流行的canny邊緣檢測器更精確。邊緣檢測在許多用例中是有用的,如視覺顯著性檢測,目標檢測,跟蹤和運動分析,結構從運動,3D重建,自動駕駛,圖像到文本分析等等。

什么是邊緣檢測?

邊緣檢測是計算機視覺中一個非常古老的問題,它涉及到檢測圖像中的邊緣來確定目標的邊界,從而分離感興趣的目標。最流行的邊緣檢測技術之一是Canny邊緣檢測,它已經(jīng)成為大多數(shù)計算機視覺研究人員和實踐者的首選方法。讓我們快速看一下Canny邊緣檢測。

Canny邊緣檢測算法

1983年,John Canny在麻省理工學院發(fā)明了Canny邊緣檢測。它將邊緣檢測視為一個信號處理問題。其核心思想是,如果你觀察圖像中每個像素的強度變化,它在邊緣的時候非常高。

在下面這張簡單的圖片中,強度變化只發(fā)生在邊界上。所以,你可以很容易地通過觀察像素強度的變化來識別邊緣。

現(xiàn)在,看下這張圖片。強度不是恒定的,但強度的變化率在邊緣處最高。(微積分復習:變化率可以用一階導數(shù)(梯度)來計算。)

Canny邊緣檢測器通過4步來識別邊緣:

去噪:因為這種方法依賴于強度的突然變化,如果圖像有很多隨機噪聲,那么會將噪聲作為邊緣。所以,使用5×5的高斯濾波器平滑你的圖像是一個非常好的主意。

梯度計算:下一步,我們計算圖像中每個像素的強度的梯度(強度變化率)。我們也計算梯度的方向。

d1e241c6-aef2-11eb-bf61-12bb97331649.png

梯度方向垂直于邊緣,它被映射到四個方向中的一個(水平、垂直和兩個對角線方向)。

非極大值抑制:現(xiàn)在,我們想刪除不是邊緣的像素(設置它們的值為0)。你可能會說,我們可以簡單地選取梯度值最高的像素,這些就是我們的邊。然而,在真實的圖像中,梯度不是簡單地在只一個像素處達到峰值,而是在臨近邊緣的像素處都非常高。因此我們在梯度方向上取3×3附近的局部最大值。

d206e58a-aef2-11eb-bf61-12bb97331649.png

遲滯閾值化:在下一步中,我們需要決定一個梯度的閾值,低于這個閾值所有的像素都將被抑制(設置為0)。而Canny邊緣檢測器則采用遲滯閾值法。遲滯閾值法是一種非常簡單而有效的方法。我們使用兩個閾值來代替只用一個閾值:

高閾值 = 選擇一個非常高的值,這樣任何梯度值高于這個值的像素都肯定是一個邊緣。

低閾值 = 選擇一個非常低的值,任何梯度值低于該值的像素絕對不是邊緣。

在這兩個閾值之間有梯度的像素會被檢查,如果它們和邊緣相連,就會留下,否則就會去掉。

遲滯閾值化

Canny 邊緣檢測的問題:

由于Canny邊緣檢測器只關注局部變化,沒有語義(理解圖像的內容)理解,精度有限(很多時候是這樣)。

Canny邊緣檢測器在這種情況下會失敗,因為沒有理解圖像的上下文

語義理解對于邊緣檢測是至關重要的,這就是為什么使用機器學習或深度學習的基于學習的檢測器比canny邊緣檢測器產(chǎn)生更好的結果。

OpenCV中基于深度學習的邊緣檢測

OpenCV在其全新的DNN模塊中集成了基于深度學習的邊緣檢測技術。你需要OpenCV 3.4.3或更高版本。這種技術被稱為整體嵌套邊緣檢測或HED,是一種基于學習的端到端邊緣檢測系統(tǒng),使用修剪過的類似vgg的卷積神經(jīng)網(wǎng)絡進行圖像到圖像的預測任務。

HED利用了中間層的輸出。之前的層的輸出稱為side output,將所有5個卷積層的輸出進行融合,生成最終的預測。由于在每一層生成的特征圖大小不同,它可以有效地以不同的尺度查看圖像。

網(wǎng)絡結構:整體嵌套邊緣檢測

HED方法不僅比其他基于深度學習的方法更準確,而且速度也比其他方法快得多。這就是為什么OpenCV決定將其集成到新的DNN模塊中。以下是這篇論文的結果:

d3af918e-aef2-11eb-bf61-12bb97331649.png

在OpenCV中訓練深度學習邊緣檢測的代碼

OpenCV使用的預訓練模型已經(jīng)在Caffe框架中訓練過了,可以這樣加載:

sh download_pretrained.sh

網(wǎng)絡中有一個crop層,默認是沒有實現(xiàn)的,所以我們需要自己實現(xiàn)一下。

class CropLayer(object):

def __init__(self, params, blobs):

self.xstart = 0

self.xend = 0

self.ystart = 0

self.yend = 0

# Our layer receives two inputs. We need to crop the first input blob

# to match a shape of the second one (keeping batch size and number of channels)

def getMemoryShapes(self, inputs):

inputShape, targetShape = inputs[0], inputs[1]

batchSize, numChannels = inputShape[0], inputShape[1]

height, width = targetShape[2], targetShape[3]

self.ystart = (inputShape[2] - targetShape[2]) // 2

self.xstart = (inputShape[3] - targetShape[3]) // 2

self.yend = self.ystart + height

self.xend = self.xstart + width

return [[batchSize, numChannels, height, width]]

def forward(self, inputs):

return [inputs[0][:,:,self.ystart:self.yend,self.xstart:self.xend]]

現(xiàn)在,我們可以重載這個類,只需用一行代碼注冊該層。

cv.dnn_registerLayer(‘Crop’, CropLayer)

現(xiàn)在,我們準備構建網(wǎng)絡圖并加載權重,這可以通過OpenCV的dnn.readNe函數(shù)。

net = cv.dnn.readNet(args.prototxt, args.caffemodel)

現(xiàn)在,下一步是批量加載圖像,并通過網(wǎng)絡運行它們。為此,我們使用cv2.dnn.blobFromImage方法。該方法從輸入圖像中創(chuàng)建四維blob。

blob = cv.dnn.blobFromImage(image, scalefactor, size, mean, swapRB, crop)

其中:

image:是我們想要發(fā)送給神經(jīng)網(wǎng)絡進行推理的輸入圖像。

scalefactor:圖像縮放常數(shù),很多時候我們需要把uint8的圖像除以255,這樣所有的像素都在0到1之間。默認值是1.0,不縮放。

size:輸出圖像的空間大小。它將等于后續(xù)神經(jīng)網(wǎng)絡作為blobFromImage輸出所需的輸入大小。

swapRB:布爾值,表示我們是否想在3通道圖像中交換第一個和最后一個通道。OpenCV默認圖像為BGR格式,但如果我們想將此順序轉換為RGB,我們可以將此標志設置為True,這也是默認值。

mean:為了進行歸一化,有時我們計算訓練數(shù)據(jù)集上的平均像素值,并在訓練過程中從每幅圖像中減去它。如果我們在訓練中做均值減法,那么我們必須在推理中應用它。這個平均值是一個對應于R, G, B通道的元組。例如Imagenet數(shù)據(jù)集的均值是R=103.93, G=116.77, B=123.68。如果我們使用swapRB=False,那么這個順序將是(B, G, R)。

crop:布爾標志,表示我們是否想居中裁剪圖像。如果設置為True,則從中心裁剪輸入圖像時,較小的尺寸等于相應的尺寸,而其他尺寸等于或大于該尺寸。然而,如果我們將其設置為False,它將保留長寬比,只是將其調整為固定尺寸大小。

在我們這個場景下:

inp = cv.dnn.blobFromImage(frame, scalefactor=1.0, size=(args.width, args.height),

mean=(104.00698793, 116.66876762, 122.67891434), swapRB=False,

crop=False)

現(xiàn)在,我們只需要調用一下前向方法。

net.setInput(inp)

out = net.forward()

out = out[0, 0]

out = cv.resize(out, (frame.shape[1], frame.shape[0]))

out = 255 * out

out = out.astype(np.uint8)

out=cv.cvtColor(out,cv.COLOR_GRAY2BGR)

con=np.concatenate((frame,out),axis=1)

cv.imshow(kWinName,con)

原文標題:在OpenCV中基于深度學習的邊緣檢測

文章出處:【微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • OpenCV
    +關注

    關注

    33

    文章

    652

    瀏覽量

    45107
  • 深度學習
    +關注

    關注

    73

    文章

    5610

    瀏覽量

    124652

原文標題:在OpenCV中基于深度學習的邊緣檢測

文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    《2024工業(yè)AR質量檢測方案橫評:5大主流工具深度對比》

    。 標準化操作流程 :內嵌標準作業(yè)程序(SOP),避免人為誤差,提高流程一致性。 二、5大主流AR質量檢測工具深度對比 1.Twyn AR質檢平臺 (安寶特) 核心特點 : 技術架構
    發(fā)表于 04-27 10:42

    2026視覺檢測產(chǎn)業(yè)深度調研及未來趨勢分析

    視覺檢測技術融合深度學習與多模態(tài)傳感,實現(xiàn)從輔助工具向決策中樞的轉變,推動智能制造與工業(yè)4.0發(fā)展。
    的頭像 發(fā)表于 04-01 09:26 ?270次閱讀
    2026視覺<b class='flag-5'>檢測</b>產(chǎn)業(yè)<b class='flag-5'>深度</b>調研及未來趨勢分析

    【智能檢測】基于AI深度學習與飛拍技術的影像測量系統(tǒng):實現(xiàn)高效精準的全自動光學檢測與智能制造數(shù)據(jù)閉環(huán)

    內容概要:文檔內容介紹了中圖儀器(Chotest)影像測量儀融合人工智能深度學習與飛拍技術的自動化檢測解決方案。系統(tǒng)通過AI深度學習實現(xiàn)
    發(fā)表于 03-31 17:11

    OpenCV首次到訪奧比中光并展開深度交流

    1月15日,OpenCV創(chuàng)始人及核心團隊首次到訪奧比中光,雙方圍繞3D視覺硬件與計算機視覺軟件的協(xié)同創(chuàng)新,展開深度交流。
    的頭像 發(fā)表于 01-21 15:51 ?573次閱讀

    穿孔機頂頭檢測儀 機器視覺深度學習

    LX01Z-DG626穿孔機頂頭檢測儀采用深度學習技術,能夠實現(xiàn)頂頭狀態(tài)的在線實時檢測,頂頭丟失報警,頂頭異常狀態(tài)報警等功能,響應迅速,異常狀態(tài)視頻回溯,
    發(fā)表于 12-22 14:33

    沒有專利的opencv-python 版本

    費用于商業(yè)產(chǎn)品,僅需保留版權聲明); 包含所有核心功能:圖片讀取/處理、視頻讀寫、繪圖、形態(tài)學操作、邊緣檢測(Canny)、閾值分割、輪廓檢測等,滿足 90%+ 開發(fā)場景; 適配 Python 3.13,安裝
    發(fā)表于 12-13 12:37

    【團購】獨家全套珍藏!龍哥LabVIEW視覺深度學習實戰(zhàn)課(11大系列課程,共5000+分鐘)

    行業(yè)市場具備深度學習能力的視覺系統(tǒng)占比已突破40%,催生大量復合型技術崗位需求: ? 崗位缺口:視覺算法工程師全國缺口15萬+,缺陷檢測專項人才招聘響應率僅32% ? 薪資水平:掌握LabVIEW+
    發(fā)表于 12-04 09:28

    【團購】獨家全套珍藏!龍哥LabVIEW視覺深度學習實戰(zhàn)課程(11大系列課程,共5000+分鐘)

    行業(yè)市場具備深度學習能力的視覺系統(tǒng)占比已突破40%,催生大量復合型技術崗位需求: ? 崗位缺口:視覺算法工程師全國缺口15萬+,缺陷檢測專項人才招聘響應率僅32% ? 薪資水平:掌握LabVIEW+
    發(fā)表于 12-03 13:50

    如何深度學習機器視覺的應用場景

    深度學習視覺應用場景大全 工業(yè)制造領域 復雜缺陷檢測:處理傳統(tǒng)算法難以描述的非標準化缺陷模式 非標產(chǎn)品分類:對形狀、顏色、紋理多變的產(chǎn)品進行智能分類 外觀質量評估:基于學習的外觀質量標
    的頭像 發(fā)表于 11-27 10:19 ?350次閱讀

    工業(yè)視覺網(wǎng)關:RK3576賦能多路檢測邊緣AI

    標簽 + 位置標注,打通 MES/ERP/追溯 流程。 三、典型落地場景· AOI自動光學檢測:多角度對比 + 邊緣AI判定,降低 DPMO,提升 FPY。· 工序/裝配監(jiān)控:對漏裝/錯裝/姿態(tài)異常進行實時
    發(fā)表于 10-16 17:56

    零成本鋼鐵俠手套!樹莓派+OpenCV 秒變手勢遙控器!

    使用樹莓派和OpenCV實時掃描并存儲二維碼使用樹莓派和OpenCV實現(xiàn)物體與動物識別使用樹莓派、攝像頭和OpenCV進行速度檢測用樹莓派+Open
    的頭像 發(fā)表于 08-16 16:16 ?1599次閱讀
    零成本鋼鐵俠手套!樹莓派+<b class='flag-5'>OpenCV</b> 秒變手勢遙控器!

    如何使用樹莓派與OpenCV實現(xiàn)面部和運動追蹤的云臺系統(tǒng)?

    使用樹莓派和OpenCV實時掃描并存儲二維碼使用樹莓派和OpenCV實現(xiàn)物體與動物識別使用樹莓派、攝像頭和OpenCV進行速度檢測用樹莓派+Open
    的頭像 發(fā)表于 08-14 17:45 ?2499次閱讀
    如何使用樹莓派與<b class='flag-5'>OpenCV</b>實現(xiàn)面部和運動追蹤的云臺系統(tǒng)?

    RK3128 Android 7.1 進入深度休眠流程分析

    RK3128 Android 7.1 進入深度休眠流程分析RK3128是瑞芯微電子推出的一款低功耗四核Cortex-A7處理器,運行Android 7.1系統(tǒng)時進入深度休眠(Deep Sleep
    發(fā)表于 07-22 10:45

    【Milk-V Duo S 開發(fā)板免費體驗】SDK編譯、人臉檢測、OpenCV測試

    檢測、OpenCV-mobile 庫的測試等相關流程。 Buildroot SDK Duo 系列開發(fā)板默認的 SDK 是基于 buildroot 構建的,用來生成 Duo 的固件。 V2 版本 SDK
    發(fā)表于 07-11 13:48

    基于LockAI視覺識別模塊:C++輪廓檢測

    本文檔展示了如何使用 OpenCV 進行圖像處理和特征檢測,包括邊緣檢測、直線檢測、圓檢測以及多
    發(fā)表于 05-22 10:05
    奇台县| 松原市| 普安县| 京山县| 长岭县| 永宁县| 垫江县| 富川| 商洛市| 定襄县| 长汀县| 茌平县| 砚山县| 宁远县| 黄浦区| 新丰县| 宜昌市| 张家港市| 卫辉市| 抚顺县| 普陀区| 平武县| 南宁市| 中牟县| 河池市| 台湾省| 祁门县| 广州市| 呼和浩特市| 吐鲁番市| 偏关县| 孝昌县| 南漳县| 迁西县| 阳春市| 乌审旗| 绥中县| 阿勒泰市| 嘉义市| 岗巴县| 浙江省|