圖像形態學操作對比(Opencv)

形態學基于圖像的形狀進行操作,用于處理二值化圖像,主要包括腐蝕和膨脹兩種基本操作。這些操作通常用于去除噪聲、分隔或連接相鄰的元素以及尋找圖像中顯著的最大點和最小點。

1. 形態學操作

import cv2
import numpy as np
import matplotlib.pyplot as plotimg = cv2.imread("tmp.jpg")
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
kernel = np.ones((5,5), np.uint8)
img_e = cv2.erode(img, kernel)
img_d = cv2.dilate(img, kernel)plot.figure(figsize=(12,4));
plot.subplot(1,3,1)
plot.title('source image')
plot.imshow(img)
plot.subplot(1,3,2)
plot.title('erosion')
plot.imshow(img_e)
plot.subplot(1,3,3)
plot.title('dilation')
plot.imshow(img_d)plot.show()

在這里插入圖片描述

2. 概念簡述

2.1 腐蝕(Erosion)

  • 基本原理:腐蝕操作會將圖像中的前景區域進行“侵蝕”,縮小物體的邊界。核(kernel)會掃描圖像的每個像素,如果核覆蓋區域的所有像素值都是前景,則該像素保持不變;否則,它將被腐蝕成背景。因此,腐蝕可以有效去除圖像中的小細節,比如孤立的噪聲點。
  • 應用場景:
    • 去除噪聲:腐蝕常用于消除圖像中的孤立噪聲點或小塊不需要的細節。
    • 分割連接物體:腐蝕可以用于分離連接較緊密的物體,例如兩個接觸的物體。

2.2 膨脹(Dilation)

  • 基本原理:膨脹操作是腐蝕的反向操作,它通過擴展物體的邊界來增加前景區域的面積。核(kernel)掃描圖像時,如果核覆蓋區域有一個或多個前景像素,那么該像素就會被膨脹為前景。因此,膨脹操作會使物體變大,并且可以填充前景區域中的小空隙或“洞”。
  • 應用場景:
    • 增強物體邊界:膨脹通常用于在邊界模糊的物體中增強邊緣,使得物體更加明顯。
    • 連接斷開的部分:膨脹可以用于連接圖像中斷開的物體,如中斷的線條、文字或其他形狀。

2.3 腐蝕與膨脹的結合

腐蝕和膨脹通常結合使用,形成了多種形態學操作:

  • 開運算(Opening):先腐蝕后膨脹,常用于去除小物體或噪聲,但保留物體整體結構。
  • 閉運算(Closing):先膨脹后腐蝕,常用于填充物體內部的小空洞,平滑物體邊緣。
  • 形態學梯度:通過膨脹和腐蝕之間的差異,提取圖像邊緣

3. 開閉運算

import cv2
import numpy as np
import matplotlib.pyplot as plotimg = cv2.imread("tmp.jpg")
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
kernel = np.ones((5,5), np.uint8)
img_op = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
img_cl = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
img_gr = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)plot.figure(figsize=(16,4));
plot.subplot(1,4,1)
plot.title('source image')
plot.imshow(img)
plot.subplot(1,4,2)
plot.title('Open')
plot.imshow(img_op)
plot.subplot(1,4,3)
plot.title('Close')
plot.imshow(img_cl)
plot.subplot(1,4,4)
plot.title('Gradient')
plot.imshow(img_gr)plot.show()

在這里插入圖片描述

4. Matplotlib顯示函數對比

4.1 plot

繪制x,y的一元方程的函數關系圖
plot ([x], y, [fmt], **kwargs)

  • [x]:橫坐標軸數據,可選參數
  • y:縱坐標軸數據
  • [fmt] :定義圖形的基本樣式:顏色,點型,線型
  • **Kwargs:不定長的關鍵字參數,用字典形式設置圖形的其他屬性,或者重復x,y,fmt用于多條線同時顯示

[fmt] 具體形式 ‘[顏色][標記][線型]’,是一個字符串來定義圖的基本屬性,詳細分解如下:

顏色參數顏色含義
bblue 藍
ggreen 綠
'rred 紅
ccyan 藍綠
mmagenta 洋紅
yyellow 黃
kblack 黑
wwhite 白
標記參數標記含義
.點標記
,像素標記
o圓圈標記
v倒三角標記
^正三角標記
<左三角標記
>右三角標記
1朝下三角標記
2朝上三角標記
3朝左三角標記
4朝右三角標記
s方形標記
p五角形標記
*星形標記
h六邊形標記1
H六邊形標記2
+加號標記
x乘號標記
D鉆石標記
d瘦鉆石標記
|豎線標記
_水平線標記

在這里插入圖片描述

線型參數線型含義
-實線
- -虛線
-.點畫線
:點線

4.2 imshow

創建圖像對象并配置其屬性,但不會顯示圖像
imshow(X, cmap=None, norm=None, aspect=None, interpolation=None, alpha=None, vmin=None, vmax=None, origin=None, extent=None, shape=None, filternorm=1, filterrad=4.0, imlim=None, resample=None, url=None, *, data=None, **kwargs):

  • X:輸入數據。可以是二維數組、三維數組、PIL圖像對象、matplotlib路徑對象等。
  • cmap:顏色映射。用于控制圖像中不同數值所對應的顏色。可以選擇內置的顏色映射,如gray、hot、jet等,也可以自定義顏色映射。
  • norm:用于控制數值的歸一化方式。可以選擇Normalize、LogNorm等歸一化方法。
  • aspect:控制圖像縱橫比(aspect ratio)。可以設置為auto或一個數字。
  • interpolation:插值方法。用于控制圖像的平滑程度和細節程度。可以選擇nearest、bilinear、bicubic等插值方法。
  • alpha:圖像透明度。取值范圍為0~1。
  • origin:坐標軸原點的位置。可以設置為upper或lower。
  • extent:控制顯示的數據范圍。可以設置為[xmin, xmax, ymin, ymax]。
  • vmin、vmax:控制顏色映射的值域范圍。
  • filternorm 和 filterrad:用于圖像濾波的對象。可以設置為None、antigrain、freetype等。
  • imlim: 用于指定圖像顯示范圍。
  • resample:用于指定圖像重采樣方式。
  • url:用于指定圖像鏈接。

4.3 顯示圖像

show
實際上顯示所有已經配置好的圖形,包括由 imshow 創建的圖像,具體步驟概述如下:

  1. 導入Matplotlib庫:import matplotlib.pyplot as plt
  2. 創建圖形對象:fig = plt.figure()
  3. 繪制圖形:使用Matplotlib提供的繪圖函數進行繪制,例如plt.plot(y)繪制折線, plt.imshow((x,y))繪制圖像等
  4. 調用show()函數顯示圖形:plt.show()

系列文章:

  1. opencv常用邊緣檢測算子示例
  2. 圖像顏色空間對比(Opencv)
  3. 圖像變換方式區別對比(Opencv)
  4. 常用圖像濾波及色彩調節操作(Opencv)
  5. 圖像形態學操作對比(Opencv)

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

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

相關文章

sql 向Java的映射

優化建議&#xff0c;可以在SQL中控制它的類型 在 MyBatis 中&#xff0c;如果返回值類型設置為 java.util.Map&#xff0c;默認情況下可以返回 多行多列的數據

excel中的VBA指令示例(一)

示例注釋&#xff1a; Sub 宏1() sub是宏開頭&#xff0c;宏1是宏的名稱&#xff0c;自定義&#xff0c;在按鈕中可指定用某個宏 后面是注釋 Sheets("裝配材料").Select ‘選擇表 裝配材料 Ce…

【Linux C】簡單bash設計

主要功能 循環提示用戶輸入命令&#xff08;minibash$&#xff09;。創建子進程&#xff08;fork()&#xff09;執行命令&#xff08;execlp&#xff09;。父進程等待子進程結束&#xff08;waitpid&#xff09;。關鍵問題 參數處理缺失&#xff1a;scanf("%s", buf)…

【vue】基礎

一、vi-if 1.1基本使用 必須綁定大盒子包住的代碼&#xff0c;使用id或者class都可以進行綁定 new Vue({ el:"#id" el:".class" }) 1.2v-if和v-show的區別 v-show會渲染&#xff0c;但是不顯示&#xff0c;v-if不渲染不顯示 1.3vue實例的作用范圍 必須包…

【數據結構_5】鏈表(模擬實現以及leetcode上鏈表相關的題目)

書接上文&#xff0c;繼續編寫鏈表的功能 4.鏈表的中間插入 在鏈表中&#xff0c;本身是沒有下標這樣的概念的&#xff0c;不像順序表&#xff0c;順序表根據下標訪問元素&#xff0c;O(1)復雜度。鏈表需要遍歷之后找到正確的位置才能進行插入&#xff0c;為O&#xff08;N&a…

C語言的發展史

一、起源 C語言的起源可以追溯到20世紀60年代末期。其前身是BCPL&#xff08;Basic Combined Programming Language&#xff09;語言&#xff0c;由劍橋大學的Martin Richards于1967年在CPL語言的基礎上簡化而來。1970年&#xff0c;美國貝爾實驗室的Ken Thompson以BCPL語言為…

深入解析棧式虛擬機與反向波蘭表示法

1.1 什么是虛擬機&#xff1f; 虛擬機&#xff08;Virtual Machine, VM&#xff09;是一種軟件實現的計算機系統&#xff0c;提供與物理計算機相類似的環境&#xff0c;但在軟件層面運行。虛擬機的存在簡化了跨平臺兼容性、資源管理以及安全隔離等問題。 1.2 棧式虛擬機的架構…

ubuntu 系統安裝Mysql

安裝 mysql sudo apt update sudo apt install mysql-server 啟動服務 sudo systemctl start mysql 設置為開機自啟 sudo systemctl enable mysql 查看服務狀態 &#xff08;看到類似“active (running)”的狀態信息代表成功&#xff09; sudo systemctl status mysql …

《前端面試題之 CSS篇(第一集)》

目錄 1、CSS的盒模型2、CSS選擇器及其優先級3、隱藏元素的方法有那些4、px、em、rem的區別及使用場景5、重排、重繪有什么區別6、水平垂直居中的實現7、CSS中可繼承與不可繼承屬性有哪些8、Sass、Less 是什么&#xff1f;為什么要使用他們&#xff1f;9、CSS預處理器/后處理器是…

HTTP:四.HTTP連接

HTTP(Hypertext Transfer Protocol)是一種用于傳輸超文本數據的應用層協議。它是互聯網上最常用的協議,用于在客戶端和服務器之間傳輸數據。HTTP協議通常用于從Web服務器傳輸網頁和文件到客戶端瀏覽器,并支持其他用途,如傳輸API數據和傳輸文件。 HTTP連接是指客戶端向服務…

opencv 識別運動物體

import cv2 import numpy as npcap cv2.VideoCapture(video.mp4) try:import cv2backSub cv2.createBackgroundSubtractorMOG2() except AttributeError:backSub cv2.bgsegm.createBackgroundSubtractorMOG()#形態學kernel kernel cv2.getStructuringElement(cv2.MORPH_REC…

要查看 ??指定 Pod 的資源限制(CPU/內存)

要查看 指定 Pod 的資源限制&#xff08;CPU/內存&#xff09;&#xff0c;可以通過以下 kubectl 命令實現&#xff1a; 1. 快速查看某個 Pod 的資源限制 kubectl get pod <pod-name> -o jsonpath{.spec.containers[*].resources} | jq輸出示例&#xff1a; {"lim…

信息安全管理與評估廣東省2023省賽正式賽題

任務1&#xff1a;網絡平臺搭建(60分) 題號 網絡需求 1 根據網絡拓撲圖所示&#xff0c;按照IP地址參數表&#xff0c;對DCFW的名稱、各接口IP地址進行配置。&#xff08;10分&#xff09; 2 根據網絡拓撲圖所示&#xff0c;按照IP地址參數表&#xff0c;對DCRS的名稱進…

IBM Rational Software Architect安裝感受及使用初體驗

1 安裝感受 最近準備用UML 2.0繪制模型圖。在讀UML創始人之一Grady Booch寫的書《Object-Oriented Analysis and Design with Applications》&#xff08;第3版&#xff09;1時&#xff0c;發現書中用的UML工具之一為IBM Rational Software Architect&#xff08;RSA&#xff…

接聽電話,手機靠近耳朵后拿開,掛斷電話,設備自動鎖屏

目錄 一、問題分析/需求分析 二、解決方案 一、問題分析/需求分析 先說一下大致流程: 首先是打電話過程會啟動PROXIMITY(接近光傳感器)用于監聽手機是否到耳邊,當手機到耳邊時進行滅屏處理,滅屏過程中會調用到鎖屏,所以最終會導致鎖屏 詳細流程分析: 首先根據日志看…

21天Python計劃:零障礙學語法(更新完畢)

目錄 序號標題鏈接day1Python下載和開發工具介紹https://blog.csdn.net/XiaoRungen/article/details/146583769?spm1001.2014.3001.5501day2數據類型、字符編碼、文件處理https://blog.csdn.net/XiaoRungen/article/details/146603325?spm1011.2415.3001.5331day3基礎語法與…

Honor of Kings (S39) 13-win streak

Honor of Kings (S39) 13-win streak S39賽季13連勝&#xff0c;莊周&#xff0c;廉頗硬輔助&#xff0c;對面有回血就先出紅蓮斗盆&#xff0c;有遇到馬克沒帶凈化的&#xff0c;出【冰霜沖擊】破他大招 S39&#xff0c;莊周廉頗前排硬輔助全肉全堆血13連勝_嗶哩嗶哩bilibi…

AI技術實戰:從零搭建圖像分類系統全流程詳解

AI技術實戰&#xff1a;從零搭建圖像分類系統全流程詳解 人工智能學習 https://www.captainbed.cn/ccc 前言 本文將以圖像分類任務為切入點&#xff0c;手把手教你完成AI模型從數據準備到工業部署的全鏈路開發。通過一個完整的Kaggle貓狗分類項目&#xff08;代碼兼容PyTorch…

NIPS2024論文 End-to-End Ontology Learning with Large Language Models

文章所謂的端到端本體學習&#xff0c;指的是從輸入到目標本體這個完整過程。在很多其他文章中&#xff0c;是把本體學習這個任務肢解了來做的&#xff0c;同樣也是肢解了之后評估。 文章號稱的貢獻&#xff0c;不但對通用本體學習提供所謂的baseline&#xff0c;而且還給出了驗…

【NLP】18. Encoder 和 Decoder

1. Encoder 和 Decoder 概述 在序列到序列&#xff08;sequence-to-sequence&#xff0c;簡稱 seq2seq&#xff09;的模型中&#xff0c;整個系統通常分為兩大部分&#xff1a;Encoder&#xff08;編碼器&#xff09;和 Decoder&#xff08;解碼器&#xff09;。 Encoder&…