十四、計算機視覺-形態學梯度

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔

文章目錄

  • 一、梯度的概念
  • 二、梯度的應用
  • 三、梯度如何實現


一、梯度的概念

形態學梯度(Morphological Gradient)是數字圖像處理中的一種基本操作,用于檢測圖像中的邊緣和輪廓。它結合了形態學膨脹(Dilation)和形態學腐蝕(Erosion)兩種基本操作的結果,從而得到一個圖像的邊緣信息。


二、梯度的應用

現在有個問題請大家想一下,上面我們提到了梯度可以得到圖像的邊緣信息,那我們通過前幾節的課程想一下 梯度是如何實現的?
例如我現在有個圓,我如何得到圓的邊緣?
我如果把這個圓給膨脹一下,這個圓就變大了一圈,我再給腐蝕一下,圓又變小了,如果拿膨脹減去腐蝕的 不就是邊緣了嗎。
那有人可能又問了:膨脹過后減去原圖不也能得到邊緣嗎,為什么還要在腐蝕一下在減呢?

其實膨脹減去原圖也能得到邊緣,但是這和膨脹減去腐蝕是有差距的:
當我們將膨脹操作的結果減去原始圖像時,實際上得到的是原始圖像中比周圍更亮的區域。這是因為膨脹操作會擴大圖像中較亮的區域,而減去原始圖像后,差異部分就是原始圖像中相對較亮的區域。因此,這樣的操作會突出原始圖像中的亮部分,而不是物體的邊緣。
對于檢測邊緣,我們需要考慮的是圖像中亮暗交界處的變化,而不僅僅是圖像中較亮的區域。形態學梯度通過膨脹和腐蝕操作的差異來捕獲這種變化,因為它考慮了物體與背景之間的差異,即使在較暗的物體周圍也能有效地檢測到邊緣。
因此,直接將膨脹操作的結果減去原始圖像并不適合用于突出圖像的邊緣信息,而形態學梯度通過膨脹減去腐蝕來更準確地實現這一目的。

三、梯度如何實現

import cv2
import numpy as np# 讀取圖像
image = cv2.imread('yunfeng.jpg', cv2.IMREAD_GRAYSCALE)# 定義結構元素
kernel = np.ones((5,5), np.uint8)# 膨脹操作
dilated = cv2.dilate(image, kernel, iterations=1)# 腐蝕操作
eroded = cv2.erode(image, kernel, iterations=1)# 形態學梯度
gradient = cv2.morphologyEx(image, cv2.MORPH_GRADIENT, kernel)# 顯示原始圖像、膨脹結果、腐蝕結果和形態學梯度結果
cv2.imshow('Original 、', image)
cv2.imshow('Dilated ', dilated)
cv2.imshow('Eroded ', eroded)
cv2.imshow('Morphological', gradient)cv2.waitKey(0)
cv2.destroyAllWindows()

上面代碼對圖像腐蝕和膨脹是為了看對比效果,實際上梯度是通過morphologyEx MORPH_GRADIENT這個參數實現的。
我們看下最終效果:

在這里插入圖片描述

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

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

相關文章

MATLAB中回調定義

目錄 指定回調的方法 回調函數語法 傳遞額外輸入參數 將回調定義為默認值 指定回調的方法 要使用回調屬性,將回調代碼賦予該屬性。使用以下技術之一: 引用函數執行的函數句柄。 包含函數句柄和其他參數的元胞數組 計算為有效 MATLAB 表達式的字符向…

pytorch 圖像的卷積操作

目錄 1.卷積核基本參數說明 2.卷積相關操作說明 3.卷積操作示例 1.卷積核基本參數說明 pytorch進行圖像卷積操作之前,需要把圖像素格式進行分離,比如一個圖像為rgb格式,把R,G,B取出來作為一個ndarray,前文講過&#…

Linux 下 socket 編程介紹及 TCP 客戶端與服務端創建示例

目錄 socket 編程接口TCP 服務端TCP 客戶端更多內容 本文介紹了 Linux 下的 socket 編程,及總結了使用 socket 接口實現 TCP 服務端和客戶端的示例代碼。 socket 編程接口 socket() 函數:用于創建一個新的 socket 描述符: int socket(int …

Linux內核MMC框架

1.mmc的概念 1.MMC MultiMedia Card,多媒體存儲卡, 但后續泛指一個接口協定(一種卡式),能符合這接口的內存器都可稱作mmc儲存體,工作電壓:高電壓為2.7~3.6 V,低電壓為1.65&#xf…

【微服務】微服務中常用認證加密方案總結

目錄 一、前言 二、登錄認證安全問題 3.1 認證方式選擇 三、常用的加密方案 3.1 MD5加密算法 3.1.1 md5特點 3.1.2 md5原理 3.1.3 md5使用場景 3.2 AES加密算法 3.2.1 AES簡介 3.2.2 AES加解原理 3.2.3 AES算法優缺點 3.2.4 AES算法使用場景 3.3 RSA加密算法 3.3…

Flutter Dio進階:使用Flutter Dio攔截器實現高效的API請求管理和身份驗證刷新

Flutter筆記 使用Flutter Dio攔截器實現高效的API請求管理和身份驗證刷新 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article…

金融業被網絡攻擊了怎么辦,如何治理和風險控制?

近年來,網絡罪犯的人數和復雜程度都在增加,網絡罪犯的目標鎖定變得更具策略性,更加專注于最大效率和獲利。隨著有關全球網絡犯罪的數據持續涌入,可以看出金融服務企業已然成為頭號鎖定目標。雖然金融服務企業在網絡安全人員、工具…

圖論例題解析

1.圖論基礎概念 概念 (注意連通非連通情況,1節點) 無向圖: 度是邊的兩倍(沒有入度和出度的概念) 1.完全圖: 假設一個圖有n個節點,那么任意兩個節點都有邊則為完全圖 2.連通圖&…

【MySQL】SQL 優化

MySQL - SQL 優化 1. 在 MySQL 中,如何定位慢查詢? 1.1 發現慢查詢 現象:頁面加載過慢、接口壓力測試響應時間過長(超過 1s) 可能出現慢查詢的場景: 聚合查詢多表查詢表數據過大查詢深度分頁查詢 1.2 通…

錯誤筆記:Anaconda 錯誤(閃退、無法安裝等) + Pycharm 錯誤(無法啟動)+ python 報錯

Anaconda 錯誤 1、導航器啟動中發生-- 閃退 方法一: Windows下: 1)使用管理員運行:conda prompt 2)執行命令 conda update anaconda-navigator 方法二: 重置Anaconda配置:anaconda-navigator…

C語言第三十四彈---動態內存管理(下)

?個人主頁: 熬夜學編程的小林 💗系列專欄: 【C語言詳解】 【數據結構詳解】 動態內存管理 1、動態內存經典筆試題分析 1.1、題目1 1.2、題目2 1.3、題目3 1.4、題目4 2、柔性數組 2.1、柔性數組的特點 2.2、柔性數組的使用 2.3、…

【c++】計算樹的深度和節點數

在C語言中,計算給定樹的層數(深度)和節點總數通常需要使用遞歸方法。首先,我們需要定義樹的節點結構。這里假設我們處理的是一棵二叉樹,每個節點有兩個子節點(左子節點和右子節點)。 下面是一個…

5.STL源碼解析-算法、仿函數、適配器

算法 STL算法總覽 仿函數與適配器 C標準模板庫(STL)是C程序員的得力工具,提供了許多強大而高效的數據結構和算法。在STL中,仿函數(Functor)和適配器(Adapter)是兩個重要的概念…

C語言文件操作(fputs() 和 puts() 有兩個小區別)

fputs() 和 puts() 有兩個小區別: 1.puts() 只能向標準輸出流輸出,而 fputs() 可以向任何流輸出。 2.使用 puts() 時,系統會在自動在其后添加換行符;而使用 fputs() 時,系統不會自動添加換行符。 那么這是不是意味著使…

【C++精簡版回顧】17.io流,流中提供的函數

1.流含義 2.流類 3.流對象 4.流對象的函數 舉例&#xff1a; 要求&#xff1a;數據結構中經常需要對齊輸出數據&#xff0c;應該怎么做&#xff1f; 1.頭文件 #include<iomanip> 2.創建表格頭 cout << setiosflags(ios::left) << setw(8) << "姓名…

BUGKU 網站被黑

打開環境&#xff0c;什么都沒發現&#xff0c;使用蟻劍掃描一下&#xff0c;發現shell.php&#xff0c;打開 使用BP抓包&#xff0c;進行爆破 得到密碼&#xff1a;hack 進去得到flag

GEE高階應用python wxee——如何利用來自 GOES-16 和 MODIS 的數據來可視化火災隨時間的進展分析

火災進展 wxee 是專為處理氣象數據而設計的,但它對遙感數據也很有用。在本示例中,我們將了解 wxee 如何利用來自 GOES-16 和 MODIS 的數據來可視化火災隨時間的進展情況。 安裝和設定 #!pip install wxeeimport ee import wxeeee.Authenticate() wxee.Initialize(project=x…

每日一類:QLabel深入解析

QLabel是Qt中用于顯示文本或圖像的控件&#xff0c;屬于Qt Widgets模塊。它是展示靜態內容的理想選擇&#xff0c;支持富文本格式&#xff0c;使得文本可以包含不同的字體、顏色和鏈接。QLabel也可以用來顯示圖像&#xff0c;包括動態圖像。此外&#xff0c;它還支持文本和圖像…

【Java面試題】SpringBoot與Spring的區別

主要區別體現幾個方面&#xff1a; 1.操作簡便性 SpringBoot提供極其快速和簡化的操作&#xff0c;使得Spring開發者能更快速上手。它通過提供spring的運行配置&#xff0c;以及為通用spring項目提供許多非功能性特性&#xff0c;進一步簡化了開發過程。 2.框架擴展性 Spri…

算法學習——差分

在了解差分之前&#xff0c;我們首先需要知道前綴和的概念。 前綴和簡單介紹&#xff1a; 對于一個數組A&#xff0c;要求出A[0]~A[i]的和&#xff0c;我們通常的做法是遍歷一邊&#xff0c;加起來。但是要求m組這樣的和&#xff0c;我們就要花費O(mn)的時間復雜度。顯然不合…