【IPMV】圖像處理與機器視覺:Lec10 Edges and Lines

【IPMV】圖像處理與機器視覺:Lec10 Edges and Lines

本系列為2025年同濟大學自動化專業**圖像處理與機器視覺**課程筆記
Lecturer: Rui Fan、Yanchao Dong


Lec0 Course Description

Lec3 Perspective Transformation

Lec7 Image Filtering

Lec8 Image Pyramid

Lec9 Laplace Blending

Lec10 Edges and Lines

Lec11 Keypoint Features and Corners

持續更新中

文章目錄

  • 【IPMV】圖像處理與機器視覺:Lec10 Edges and Lines
    • 1. 邊緣是什么?
    • 2. 如何找邊緣?——用梯度(Gradient)
        • Image Gradient 圖像梯度
        • Derivative of Gaussian 高斯導數
        • 邊緣檢測算子(卷積核)
        • 邊緣后處理——Tinning and Thresholding 細化與閾值處理
    • 3. Canny邊緣檢測
    • 4. 利用二階導數: Laplacian & LoG & DoG
        • 一階與二階導數
        • 拉普拉斯算子 vs. LoG vs. DoG
    • 4. 直線檢測: Hough Transform
    • 5. 總結


Edges and Lines

  • Boundaries
  • shadow boundaries
  • Creases

Edge Detection 邊緣檢測

Edge operators (edge enhancement filters)

邊緣像素是在圖像強度函數的一階導數的極值處找到的。

1. 邊緣是什么?

邊緣就是圖像中顏色/亮度突然變化的地方,比如:

  • 物體的輪廓線(比如杯子邊緣)
  • 陰影分界線
  • 文字筆畫

2. 如何找邊緣?——用梯度(Gradient)

Image Gradient 圖像梯度

邊緣出現在圖像亮度變化最大的地方,數學上用梯度表示:

  • ? f = G x = [ ? f ? x ? f ? y ] \nabla f = G_x = \begin{bmatrix} \frac{\partial f}{\partial x} \\ \\ \frac{\partial f}{\partial y} \\ \end{bmatrix} ?f=Gx?= ??x?f??y?f?? ?
  • 梯度方向:亮度變化最快的方向(垂直于邊緣)
  • 梯度大小(幅度):變化有多劇烈
    ∣ ? f ∣ = ( ? f ? x ) 2 + ( ? f ? y ) 2 | \nabla f | = \sqrt{ \left( \frac{\partial f}{\partial x} \right)^2 + \left( \frac{\partial f}{\partial y} \right)^2 } ∣?f=(?x?f?)2+(?y?f?)2 ?

(其實就是計算水平和垂直方向的亮度變化,再合成總變化強度)

Derivative of Gaussian 高斯導數

先對圖像用高斯函數模糊(去噪),再求導:
h σ ( u , v ) = 1 2 π σ 2 e ? ( u 2 + v 2 2 σ 2 ) h_{\sigma}(u, v) = \frac{1}{2\pi\sigma^2} e^{-(\frac{u^2+v^2}{2\sigma^2})} hσ?(u,v)=2πσ21?e?(2σ2u2+v2?)
優點:邊緣更平滑,減少噪聲干擾。


邊緣檢測算子(卷積核)

實際計算時,用一個小矩陣(卷積核)掃描圖像,模擬求導過程。常見算子:

常見算子Prewitt 算子Sobel 算子(更常用)
水平方向( G x G? Gx?:檢測垂直邊緣(比如豎線) G x = [ ? 1 0 1 ? 1 0 1 ? 1 0 1 ] G_x = \begin{bmatrix} -1 & 0 & 1 \\ -1 & 0 & 1 \\ -1 & 0 & 1 \end{bmatrix} Gx?= ??1?1?1?000?111? ?
垂直方向( G γ G? Gγ?:檢測水平邊緣(比如橫線) G y = [ ? 1 ? 1 ? 1 0 0 0 1 1 1 ] G_y = \begin{bmatrix} -1 & -1 & -1 \\ 0 & 0 & 0 \\ 1 & 1 & 1 \end{bmatrix} Gy?= ??101??101??101? ?
水平方向( S x S? Sx? S x = [ ? 1 0 1 ? 2 0 2 ? 1 0 1 ] S_x = \begin{bmatrix} -1 & 0 & 1 \\ -2 & 0 & 2 \\ -1 & 0 & 1 \end{bmatrix} Sx?= ??1?2?1?000?121? ?
垂直方向( S γ S? Sγ? S y = [ ? 1 ? 2 ? 1 0 0 0 1 2 1 ] S_y = \begin{bmatrix} -1 & -2 & -1 \\ 0 & 0 & 0 \\ 1 & 2 & 1 \end{bmatrix} Sy?= ??101??202??101? ?
特點簡單,但對噪聲敏感。權重更大 → 對中心像素更敏感 → 邊緣更清晰,噪聲影響更小。

求導——Sobel

圖像幅值

邊緣后處理——Tinning and Thresholding 細化與閾值處理
  • 非極大值抑制 NMS
    • 只保留梯度方向上的局部最大值點,剔除冗余邊緣,使邊緣變細。
    • 效果:邊緣從“粗線”變為“單像素寬”的細線。
  • 閾值處理
    • 設定一個閾值,只保留梯度強度高于該值的邊緣點,生成二值化邊緣圖像。
    • 示例:Sobel算子檢測后的圖像經過閾值處理,得到清晰的邊緣輪廓。

3. Canny邊緣檢測

最常用

結合高斯模糊、梯度計算、NMS和雙閾值,得到清晰、連續的邊緣。

步驟

  1. 高斯濾波:先用高斯模糊降噪。
  2. 梯度計算:用Sobel算子計算梯度的強度和方向。
  3. 非極大值抑制:細化邊緣。
  4. 雙閾值檢測
    • 高閾值:保留強邊緣(肯定是真的邊緣,如物體輪廓)。
    • 低閾值:保留弱邊緣(可能是噪聲或次要邊緣,如陰影或紋理)。
    • 最終邊緣 = 強邊緣 + 與強邊緣相連的弱邊緣。
    • 規則:僅保留與強邊緣相連的弱邊緣,孤立弱邊緣視為噪聲。

優勢

  • 抗噪聲能力強。
  • 能檢測真實的弱邊緣(如模糊邊界)。

4. 利用二階導數: Laplacian & LoG & DoG

前面算子一階導數

一階與二階導數
  • 一階導數(梯度)
    • f ′ ( x ) f'(x) f(x):檢測亮度變化最快的位置(對應邊緣)。
    • 問題:對噪聲敏感(噪聲會導致虛假邊緣)。
  • 二階導數(拉普拉斯)
    • f ′ ′ ( x ) f''(x) f′′(x):檢測亮度變化的拐點(邊緣處二階導過零)。
    • 優勢:能定位更精細的邊緣和角點。
  • 高斯濾波:先對圖像平滑(低通濾波),再求導,減少噪聲影響。
拉普拉斯算子 vs. LoG vs. DoG
特性拉普拉斯算子高斯-拉普拉斯(LoG)高斯差分(DoG)
數學原理直接計算二階導數先高斯模糊,再拉普拉斯運算兩個不同標準差的高斯模糊圖像相減
核心公式 ? 2 = ? 2 ? x 2 + ? 2 ? y 2 \nabla^2 = \frac{\partial^2}{\partial x^2} + \frac{\partial^2}{\partial y^2} ?2=?x2?2?+?y2?2? ? 2 ( G σ ? f ) \nabla^2 (G_\sigma * f) \quad ?2(Gσ??f) G σ 1 ? f ? G σ 2 ? f (σ??>?σ?) G_{\sigma_1} * f - G_{\sigma_2} * f \quad \text{(σ? > σ?)} Gσ1???f?Gσ2???fσ??>?σ?
離散卷積核3×3核(常用): [ 0 1 0 1 ? 4 1 0 1 0 ] \begin{bmatrix} 0 & 1 & 0 \\ 1 & -4 & 1 \\ 0 & 1 & 0 \end{bmatrix} ?010?1?41?010? ?
5×5核(更精確): 1 6 [ 1 4 1 4 ? 20 4 1 4 1 ] \frac{1}{6}\begin{bmatrix} 1 & 4 & 1 \\ 4 & -20 & 4 \\ 1 & 4 & 1 \end{bmatrix} 61? ?141?4?204?141? ?
抗噪性? 極差(噪聲會被放大)? 強(高斯濾波抑制噪聲)?? 中等(依賴高斯參數選擇)
計算復雜度?? 低(單次卷積)?? 高(兩次卷積:高斯+拉普拉斯)?? 中(兩次高斯卷積,可并行)
邊緣定位精度? 高(無模糊,銳利邊緣)? 最高(零交叉點精準)?? 中等(近似LoG)
檢測目標邊緣、角點、細線(二階導過零點)邊緣(零交叉點)邊緣(近似零交叉點)
是否需要調參? 無參數? σ(高斯標準差)需調整? σ 1 σ? σ1? σ 2 σ? σ2?需匹配(通常 σ 1 ≈ 1.6 σ 2 σ?≈1.6σ? σ1?1.6σ2?
適用場景高清晰度圖像、角點檢測、工業精密測量醫學影像、復雜場景邊緣提取實時處理(如SIFT特征提取、機器人視覺)
直觀比喻裸眼找邊緣(清晰但易受干擾)戴降噪眼鏡找邊緣(精準但耗時)快速對比兩副眼鏡找邊緣(平衡速度與效果)
  • 抗噪性
    • LoG > DoG > 拉普拉斯算子
    • 拉普拉斯算子對噪聲敏感,適合無噪環境;LoG通過高斯濾波顯著降噪。
  • 計算效率
    • 拉普拉斯算子 > DoG > LoG
    • DoG 是 LoG的快速近似,適合實時系統。
  • 邊緣質量
    • LoG > 拉普拉斯算子 ≈ DoG
    • LoG的零交叉檢測最精準;拉普拉斯在無噪時邊緣銳利,但噪聲下失效。
  • 選擇
    • 需要抗噪+高精度LoG(如醫學影像分析)。
    • 實時性要求高DoG(如自動駕駛車道檢測)。
    • 無噪聲+簡單場景拉普拉斯算子(如工業零件尺寸測量)。


優點

  • 邊緣定位更精確。
  • 抗噪聲能力顯著優于普通拉普拉斯。

4. 直線檢測: Hough Transform

霍夫變換是一種從圖像中檢測幾何形狀(如直線、圓等)的算法,其核心是通過參數空間投票機制將圖像中的邊緣點映射為參數空間的累積統計,最終通過尋找峰值確定幾何形狀的參數。

  • 原理
    • 參數化表示:每條直線可用極坐標參數 ( ρ , θ ) (ρ, θ) (ρ,θ) 表示
      • ρ = x sin ? θ + y cos ? θ \rho = x \sin \theta + y \cos \theta ρ=xsinθ+ycosθ
      • ρ \rho ρ:直線到原點的垂直距離。
      • θ \theta θ:直線與x軸的夾角。
    • 投票機制
      • 每個邊緣點對所有可能經過它的直線投票。
      • 投票最多的 ( ρ , θ ) (ρ, θ) (ρ,θ) 就是圖像中的直線。
  • 步驟
  1. 檢測邊緣
    • 先用 Canny 等算法提取圖像邊緣(得到二值邊緣圖)
  2. 初始化累加器
    • 創建一個二維數組 ( ρ × θ ) (\rho \times \theta) (ρ×θ),初始值為0。
  3. 投票過程
    • 對每個邊緣點 ( x , y ) (x, y) (x,y),遍歷所有可能的 θ \theta θ(如0°~180°),計算對應的 ρ \rho ρ,并在累加器中對應位置投票(+1)。
  4. 峰值檢測
    • 找到累加器中的局部最大值(即投票數最多的 ( ρ , θ ) (\rho, \theta) (ρ,θ)),這些值即為圖像中的直線參數。
  5. 后處理(可選)
    • 對檢測到的直線進行擬合優化(如最小二乘法),剔除噪聲或合并相近直線。
特性說明
優點對遮擋和噪聲魯棒(部分邊緣點缺失仍可檢測)
可推廣到其他形狀(圓、橢圓等)
缺點計算量大(參數空間維度隨形狀復雜度增加)
需手動設置閾值(如累加器峰值閾值)
時間復雜度 O ( n × m ) O(n \times m) O(n×m) n n n為邊緣點數, m m m θ θ θ的離散化數量)

應用場景

  • 車道線檢測(自動駕駛)。
  • 文檔分析(檢測表格線或文字行)。
  • 工業檢測(機械零件邊緣對齊)。

5. 總結

方法核心思想優點缺點
Sobel/Prewitt一階導數求梯度計算快噪聲敏感
Canny高斯導數+雙閾值+NMS抗噪強,邊緣完整計算復雜
Laplacian直接二階導數檢測精細特征(如角點)極度敏感噪聲
LoG高斯平滑+二階導數邊緣精準,抗噪計算量大
  • 找邊緣:用Sobel或Canny(像用鉛筆描邊)
  • 抗噪聲:Canny或LoG(像先涂模糊再描邊,避免手抖)
  • 精細邊緣:LoG(能檢測到更微弱的邊緣變化)

霍夫變換(參數化表示+投票機制)進行直線檢測

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/84005.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/84005.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/84005.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AI筑基,新質躍升|英碼科技亮相華為廣東新質生產力創新峰會,發布大模型一體機新品,助力產業智能化轉型

5月15日,以“AI筑基,新質躍升”為主題的華為中國行2025廣東新質生產力創新峰會在惠州圓滿召開。本次峰會聚焦人工智能、算力基礎設施等新ICT技術如何驅動“新質生產力”,共探廣東高質量發展新路徑。英碼科技受邀出席本次峰會,并攜…

篇章三 需求分析(二)

目錄 1.核心API 2.交換機類型 3.持久化 4.網絡通信 5.小結 1.核心API 消息隊列服務器(Broker Server),要提供的核心API 1.創建隊列(queueDeclare) 此處不使用 Create 這樣的術語,而是使用 Declare&…

打造高效數據處理利器:用Python實現Excel文件智能合并工具

有時候,我們需要將多個Excel文件按照特定順序合并成一個文件,這樣可以更方便地進行后續的數據處理和分析。今天,我想分享一個使用Python開發的小工具,它可以幫助我們輕松實現Excel文件的智能合并。C:\pythoncode\new\xlsx_merger.…

StepX-Edit:一個通用圖像編輯框架——論文閱讀筆記

一. 前言 代碼:https://github.com/stepfun-ai/Step1X-Edit 論文:https://arxiv.org/abs/2504.17761 近年來,圖像編輯技術發展迅速,GPT- 4o、Gemini2 Flash等前沿多模態模型的推出,展現了圖像編輯能力的巨大潛力。 這…

第9.1講、Tiny Encoder Transformer:極簡文本分類與注意力可視化實戰

項目簡介 本項目實現了一個極簡版的 Transformer Encoder 文本分類器,并通過 Streamlit 提供了交互式可視化界面。用戶可以輸入任意文本,實時查看模型的分類結果及注意力權重熱力圖,直觀理解 Transformer 的內部機制。項目采用 HuggingFace …

【Java】泛型在 Java 中是怎樣實現的?

先說結論 , Java 的泛型是偽泛型 , 在運行期間不存在泛型的概念 , 泛型在 Java 中是 編譯檢查 運行強轉 實現的 泛型是指 允許在定義類 , 接口和方法時使用的類型參數 , 使得代碼可以在不指定具體類型的情況下操作不同的數據類型 , 從而實現類型安全的代碼復用 的語言機制 . …

linux如何查找軟連接的實際地址

在Linux系統中,查找軟連接(符號鏈接,即symbolic link)的實際地址可以通過多種方法實現。軟連接是一個特殊的文件類型,它包含了一個指向另一個文件或目錄的引用。要找到軟連接所指向的實際文件或目錄,可以使…

Token類型與用途詳解:數字身份的安全載體圖譜

在現代數字身份體系中,Token如同"數字DNA",以不同形態流轉于各類應用場景。根據Okta的最新研究報告,平均每個企業應用使用2.7種不同類型的Token實現身份驗證和授權。本文將系統梳理主流Token類型及其應用場景,通過行業典…

火山 RTC 引擎9 ----集成 appkey

一、集成 appkey 1、網易RTC 初始化過程 1)、添加頭文件 實現互動直播 - 互動直播 2.0網易云信互動直播產品的基本功能包括音視頻通話和連麥直播,當您成功初始化 SDK 之后,您可以簡單體驗本產品的基本業務流程,例如主播加入房間…

詳細介紹Qwen3技術報告中提到的模型架構技術

詳細介紹Qwen3技術報告中提到的一些主流模型架構技術,并為核心流程配上相關的LaTeX公式。 這些技術都是當前大型語言模型(LLM)領域為了提升模型性能、訓練效率、推理速度或穩定性而采用的關鍵組件。 1. Grouped Query Attention (GQA) - 分組…

光電效應理論與實驗 | 從愛因斯坦光量子假說到普朗克常量測定

注:本文為“光電效應”相關文章合輯。 英文引文,機翻未校。 中文引文,略作重排,未整理去重。 圖片清晰度受引文原圖所限。 如有內容異常,請看原文。 Photoelectric Effect 光電效應 Discussion dilemma Under the…

Visual Studio 2019/2022:當前不會命中斷點,還沒有為該文檔加載任何符號。

1、打開調試的模塊窗口,該窗口一定要在調試狀態下才會顯示。 vs2019打開調試的模塊窗口 2、Visual Studio 2019提示未使用調試信息生成二進制文件 未使用調試信息生成二進制文件 3、然后到debug目錄下看下確實未生成CoreCms.Net.Web.WebApi.pdb文件。 那下面的…

打破性能瓶頸:用DBB重參數化模塊優化YOLOv8檢測頭

文章目錄 引言DBB 重參數化模塊簡介DBB 的優勢 YOLOv8 檢測頭的結構分析使用 DBB 模塊魔改檢測頭替換策略代碼實現改進后的效果預期 實驗與驗證總結與展望 引言 在目標檢測領域,YOLO 系列算法一直以其高效的檢測速度和不錯的檢測精度受到廣泛關注。隨著版本的不斷更…

如何成為更好的自己?

成為更好的自己是一個持續成長的過程,需要結合自我認知、目標規劃和行動力。以下是一些具體建議,幫助你逐步提升: 1. 自我覺察:認識自己 反思與復盤:每天花10分鐘記錄當天的決策、情緒和行為,分析哪些做得…

免費使用GPU的探索筆記

多種有免費時長的平臺 https://www.cnblogs.com/java-note/p/18760386 Kaggle免費使用GPU的探索 https://www.kaggle.com/ 注冊Kaggle賬號 訪問Kaggle官網,使用郵箱注冊賬號。 發現gpu都是灰色的 返回home,右上角的頭像點開 驗證手機號 再次code-you…

CSS- 4.2 相對定位(position: relative)

本系列可作為前端學習系列的筆記,代碼的運行環境是在HBuilder中,小編會將代碼復制下來,大家復制下來就可以練習了,方便大家學習。 HTML系列文章 已經收錄在前端專欄,有需要的寶寶們可以點擊前端專欄查看! 點…

如何使用Antv X6使用拖拽布局?

拖拽效果圖 拖拽后 布局預覽 官方: X6 圖編輯引擎 | AntV 安裝依賴 # npm npm install antv/x6 --save npm install antv/x6-plugin-dnd --save npm install antv/x6-plugin-export --save需要引入的代碼 import { Graph, Shape } from antv/x6; import { Dnd } …

數據庫健康監測器(BHM)實戰:如何通過 HTML 報告識別潛在問題

在數據庫運維中,健康監測是保障系統穩定性與性能的關鍵環節。通過 HTML 報告,開發者可以直觀查看數據庫的運行狀態、資源使用情況與潛在風險。 本文將圍繞 數據庫健康監測器(Database Health Monitor, BHM) 的核心功能展開分析,結合 Prometheus + Grafana + MySQL Export…

PCB設計實踐(二十四)PCB設計時如何避免EMI

PCB設計中避免電磁干擾(EMI)是一項涉及電路架構、布局布線、材料選擇及制造工藝的系統工程。本文從設計原理到工程實踐,系統闡述EMI產生機制及綜合抑制策略,覆蓋高頻信號控制、接地優化、屏蔽技術等核心維度,為高密度、…

嵌入式硬件篇---陀螺儀|PID

文章目錄 前言1. 硬件準備主控芯片陀螺儀模塊電機驅動電源其他2. 硬件連接3. 軟件實現步驟(1) MPU6050初始化與數據讀取(2) 姿態解算(互補濾波或DMP)(3) PID控制器設計(4) 麥克納姆輪協同控制4. 主程序邏輯5. 關鍵優化與調試技巧(1) 傳感器校準(2) PID參數整定先調P再調D最后…