国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【數(shù)字圖像處理】邊緣檢測

這篇具有很好參考價值的文章主要介紹了【數(shù)字圖像處理】邊緣檢測。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

0. 前言

邊緣檢測是一種圖像處理技術(shù),旨在標識和定位數(shù)字圖像中的邊緣和輪廓。邊緣是圖像中灰度值變化明顯的位置,通常是物體的邊緣或表面的變化。通過邊緣檢測算法,可以將圖像中的物體和背景分離出來,從而實現(xiàn)目標檢測、圖像分割、計算機視覺和機器人視覺等應(yīng)用。

邊緣檢測算法的基本原理是在數(shù)字圖像中尋找灰度變化的位置。其中,最常見的方法是基于圖像梯度的邊緣檢測算法,如Sobel算子、Prewitt算子、Roberts算子和Canny算子等。

1. Sobel算子

Sobel算子將數(shù)字圖像與兩個卷積核Gx和Gy進行卷積,Gx和Gy分別用于計算水平方向和垂直方向上的梯度:
G x = [ ? 1 0 1 ? 2 0 2 ? 1 0 1 ] G_x = \begin{bmatrix}-1 & 0 & 1 \\-2 & 0 & 2 \\-1 & 0 & 1\end{bmatrix} Gx?= ??1?2?1?000?121? ? G y = [ ? 1 ? 2 ? 1 0 0 0 1 2 1 ] G_y = \begin{bmatrix}-1 & -2 & -1 \\0 & 0 & 0 \\1 & 2 & 1\end{bmatrix} Gy?= ??101??202??101? ?
在計算完Gx和Gy之后,可以計算每個像素的梯度強度和方向:
G = G x 2 + G y 2 G = \sqrt{G_x^2 + G_y^2} G=Gx2?+Gy2? ? θ = tan ? ? 1 ( G y G x ) \theta = \tan^{-1}\left(\frac{G_y}{G_x}\right) θ=tan?1(Gx?Gy??)

import cv2
import numpy as np
import matplotlib.pyplot as plt

# 讀取圖片
img = cv2.imread("example.jpg", cv2.IMREAD_GRAYSCALE)

# 定義Sobel算子
sobel_x = np.array([[-1, 0, 1], [-2, 0, 2], [-1, 0, 1]])

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

# 對圖片進行Sobel邊緣檢測
img_sobel_x = cv2.filter2D(img, -1, sobel_x)
img_sobel_y = cv2.filter2D(img, -1, sobel_y)

# 計算梯度幅值和梯度方向
gradient_magnitude = np.sqrt(img_sobel_x ** 2 + img_sobel_y ** 2)
gradient_magnitude = (gradient_magnitude / gradient_magnitude.max())*255
gradient_direction = np.arctan2(img_sobel_y, img_sobel_x)
gradient_direction = (gradient_direction / gradient_direction.max()) * 255

# 顯示結(jié)果
fig, axs = plt.subplots(1, 4, figsize=(16, 4))
axs[0].imshow(img, cmap="gray")
axs[0].set_title("Original")
axs[1].imshow(img_sobel_x, cmap="gray")
axs[1].set_title("Sobel X")
axs[2].imshow(img_sobel_y, cmap="gray")
axs[2].set_title("Sobel Y")
axs[3].imshow(gradient_magnitude.astype(np.uint8), cmap="gray")
axs[3].set_title("Gradient Magnitude")
plt.show()

【數(shù)字圖像處理】邊緣檢測
可以看到,Gx主要檢測出了豎直方向上的邊緣,Gy主要檢測出了水平方向上的邊緣。

2. Canny算子

Canny算子是在工業(yè)界廣泛使用的邊緣檢測算法,它的主要原理是通過檢測圖像中像素灰度變化的一階導(dǎo)數(shù)來檢測邊緣。

Canny算法主要分為以下幾個步驟:

  • 去噪
    由于圖像中可能存在噪聲,并且噪聲對邊緣檢測的影響較大(因為噪聲也是高頻信息),首先需要對圖像進行去噪聲處理。常見的方法是使用高斯濾波器對圖像進行平滑處理,以減少噪聲的影響。

  • 計算梯度
    在圖像平滑之后,需要計算每個像素點的梯度值和方向。常用的方法是使用Sobel算子,對圖像進行水平和垂直方向上的梯度計算。梯度方向的計算可以通過計算水平和垂直梯度值的反正切來得到。

  • 非極大值抑制
    由于Sobel算子計算的梯度值較大,圖像中可能存在多個方向的梯度,需要進行非極大值抑制來確定每個像素點的主要梯度方向。具體來說,對于每個像素點,沿著其梯度方向上的兩個鄰域像素點進行比較,如果當前像素點的梯度值最大,則保留它,否則將其置為零。

  • 雙閾值檢測
    經(jīng)過前面的處理之后,圖像中只剩下邊緣可能存在的位置。但是,由于圖像中存在很多噪聲和灰度變化,有些邊緣可能會被誤判為非邊緣。因此需要使用雙閾值檢測來進一步篩選邊緣。將梯度幅值分為兩個閾值:高閾值和低閾值。如果一個像素點的梯度幅值大于高閾值,則被認為是邊緣像素;如果一個像素點的梯度幅值小于低閾值,則被認為是非邊緣像素。如果一個像素點的梯度幅值在兩個閾值之間,則只有它與高閾值相連的像素點才被認為是邊緣像素。

  • 邊緣連接
    經(jīng)過上述處理之后,圖像中可能還存在一些不連續(xù)的邊緣。因此,需要使用邊緣連接算法將它們連接起來。一種常用的方法是使用基于滯后閾值的連接算法。具體來說,從高閾值像素開始,將與其相鄰的低閾值像素加入到邊緣中,直到不存在低閾。

3. 深度學習算法

3.1 Holistically-Nested Edge Detection(HED)

HED是一個端到端的邊緣檢測模型,總體架構(gòu)如下:
【數(shù)字圖像處理】邊緣檢測
【數(shù)字圖像處理】邊緣檢測
將移除了全連接層的VGG16作為特征提取器,每個stage會外接一個卷積和sigmoid,用于輸出單通道的邊緣檢測結(jié)果,即圖中的Side-output。

  • 訓練階段:每個side-output的輸出經(jīng)過上采樣至GT的分辨率,然后分別與GT求loss;考慮到圖像中的邊緣信息占據(jù)比例較小,因此引入了 β \beta β解決類別不均衡的問題,對于非邊緣像素的損失分配較小的權(quán)重。
    【數(shù)字圖像處理】邊緣檢測
    side部分的總損失等于各個side損失的加權(quán)求和
    【數(shù)字圖像處理】邊緣檢測
    除了side-output,網(wǎng)絡(luò)還有一個fuse輸出,即將所有side輸出concat后進行卷積(輸出通道為1),然后經(jīng)過sigmoid輸出最終的fuse結(jié)果。fuse輸出也要利用GT進行監(jiān)督,損失函數(shù)為cross-entropy。
    【數(shù)字圖像處理】邊緣檢測
    整個網(wǎng)絡(luò)的優(yōu)化目標為使side損失和fuse損失最低
    【數(shù)字圖像處理】邊緣檢測

  • 測試階段:將所有side-output和fuse-output平均后的結(jié)果作為最終的邊緣檢測結(jié)果

3.2 Richer Convolutional Features(RCF)

RCF是針對HED的改進,主要改進有兩點:

  • 改進點1:HED的side-output是每個stage最后一個卷積輸出的特征圖經(jīng)過卷積和sigmoid得來的,RCF中改為將每個stage中所有卷積的輸出經(jīng)過1×1卷積->求和->1×1卷積->sigmoid后的結(jié)果,利用了更豐富的特征信息。

【數(shù)字圖像處理】邊緣檢測

  • 改進點2:設(shè)置一個閾值 η \eta η,小于閾值的不計算損失(分不清到底是邊緣還是非邊緣),計算非邊緣部分的損失時分配一個較小的權(quán)重 α \alpha α,計算邊緣部分的損失時分配一個較大的權(quán)重 β \beta β
    【數(shù)字圖像處理】邊緣檢測

參考資料

[1] Holistically-Nested Edge Detection
[2] Richer convolutional features for edge detection文章來源地址http://www.zghlxwxcb.cn/news/detail-434516.html

到了這里,關(guān)于【數(shù)字圖像處理】邊緣檢測的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • (數(shù)字圖像處理MATLAB+Python)第七章圖像銳化-第三節(jié):高斯濾波與邊緣檢測

    (數(shù)字圖像處理MATLAB+Python)第七章圖像銳化-第三節(jié):高斯濾波與邊緣檢測

    高斯函數(shù) :是一種常見的連續(xù)函數(shù),通常用符號 G ( x ) G(x) G ( x ) 表示。它可以用下面的公式定義 G ( x ) = 1 σ 2 π e ? x 2 2 σ 2 G(x)=frac{1}{sigma sqrt{ 2pi }}e^{-frac{x^{2}}{2sigma^{2}}} G ( x ) = σ 2 π ? 1 ? e ? 2 σ 2 x 2 ? 其中, x x x 是自變量, σ sigma σ 是一個正實數(shù),表示高斯函

    2024年02月06日
    瀏覽(108)
  • 《數(shù)字圖像處理-OpenCV/Python》連載(1)前言

    《數(shù)字圖像處理-OpenCV/Python》連載(1)前言

    本書京東優(yōu)惠購書鏈接:https://item.jd.com/14098452.html 寫作背景 編寫本書的初衷,源自作者學習數(shù)字圖像處理的經(jīng)歷。 在創(chuàng)新實驗班開設(shè)的專業(yè)創(chuàng)新教育課程中,我選擇的是數(shù)字圖像處理方向。老師向我推薦的教材是岡薩雷斯的《數(shù)字圖像處理》。學習的開始階段非常困難。教

    2024年02月11日
    瀏覽(161)
  • 圖像處理:邊緣檢測原理

    圖像處理:邊緣檢測原理

    很抱歉,前面推導(dǎo)三種邊緣檢測算子我不是很滿意就發(fā)出去了,現(xiàn)在以我的知識儲備看他們還是有著很大的問題,我潛下心的找資料,看視頻,就是為了將我的基礎(chǔ)打牢,所以,我在這一篇當中好好的摳細節(jié),畢竟從實際的應(yīng)用上來說,這是我的學習筆記,再怎么也不能糊弄

    2024年02月06日
    瀏覽(23)
  • 圖像處理——邊緣檢測(MATLAB實現(xiàn))

    圖像處理——邊緣檢測(MATLAB實現(xiàn))

    實驗表明,人眼對圖像中邊緣的識別不是通過設(shè)置閾值來分割的,目標的邊緣一般表現(xiàn)為灰度(對彩色圖像還包括色度)的特變。對于人類的視覺感知,圖像邊緣對理解圖像內(nèi)容起到關(guān)鍵作用。在灰度漸變的圖像中無法區(qū)分其灰度變化的邊界,但如果邊界灰度有突變,則可以區(qū)

    2024年02月03日
    瀏覽(23)
  • 【圖像處理】基于matlab蟻群聚類圖像邊緣檢測

    目錄 基于matlab蟻群聚類圖像邊緣檢測 蟻群聚類是一種模擬自然界中螞蟻群體行為的算法,常用于解決優(yōu)化問題。該算法可以用于圖像處理中的邊緣檢測。下面給出一個基于MATLAB的蟻群聚類圖像邊緣檢測的示例代碼。 我們首先讀入待處理圖像,并將其轉(zhuǎn)換為灰度圖像。然后,

    2023年04月22日
    瀏覽(22)
  • 圖像處理之梯度及邊緣檢測算子

    圖像處理之梯度及邊緣檢測算子

    梯度是一個量變化的速度,在數(shù)學中通常使用求導(dǎo)、求偏導(dǎo)獲取梯度或者某一方向上的梯度。 在數(shù)字圖像中梯度可以看為像素值分別在x,y方向上的變化速度,因為數(shù)字圖像的離散型,以及像素是最小處理單元的特性,求數(shù)字圖像的梯度時,不需要求導(dǎo),只需要進行加減運算即

    2024年02月16日
    瀏覽(22)
  • ZYNQ圖像處理(7)——sobel邊緣檢測

    ZYNQ圖像處理(7)——sobel邊緣檢測

    所謂邊緣是指其周圍像素灰度急劇變化的那些象素的集合,它是圖像最基本的特征。邊緣存在于目標、背景和區(qū)域之間,所以,它是圖像分割所依賴的最重要的依據(jù)。由于邊緣是位置的標志,對灰度的變化不敏感,,因此,邊緣也是圖像匹配的重要的特征。邊緣檢測和區(qū)域劃分

    2024年02月05日
    瀏覽(88)
  • 我在Vscode學OpenCV 圖像處理三(圖像梯度--邊緣檢測【圖像梯度、Sobel 算子、 Scharr 算子、 Laplacian 算子、Canny 邊緣檢測】)

    我在Vscode學OpenCV 圖像處理三(圖像梯度--邊緣檢測【圖像梯度、Sobel 算子、 Scharr 算子、 Laplacian 算子、Canny 邊緣檢測】)

    這里需要區(qū)分開邊緣檢測和輪廓檢測 邊緣檢測并非萬能,邊緣檢測雖然能夠檢測出邊緣,但邊緣是不連續(xù)的,檢測到的邊緣并不是一個整體。圖像輪廓是指將邊緣連接起來形成的一個整體,用于后續(xù)的計算。 OpenCV 提供了查找圖像輪廓的函數(shù) cv2.findContours(),該函數(shù)能夠查找圖

    2024年02月04日
    瀏覽(27)
  • 圖像處理 邊緣檢測 繪制金字塔 模板匹配

    Canny邊緣檢測器是一種多步算法,用于檢測任何輸入圖像的邊緣。 邊緣檢測步驟: 1.應(yīng)用 高斯濾波器 ,以平滑圖像,濾除噪聲( 降噪 ) 2.計算圖像中每個像素點的梯度大小(邊緣兩側(cè)和卷積之間的像素差值和方向(x和y方向)(梯度Scole算子檢測邊緣) 3.使用非極大值抑制,

    2024年02月06日
    瀏覽(22)
  • 圖像處理基礎(chǔ)篇-形態(tài)學處理-邊緣檢測(matlab仿真與圖像處理系列第4期)

    圖像處理方面的老師,第一天學習以下內(nèi)容和代碼: 圖像讀取和顯示:在Matlab中,可以使用imread函數(shù)讀取圖像,并使用imshow函數(shù)顯示圖像。以下是一個簡單的示例代碼: 圖像濾波:濾波是圖像處理中常用的一種技術(shù),可以用來去除噪聲、平滑圖像等。以下是一些常見的濾波

    2024年02月11日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包