Python-opencv通過距離變換提取圖像骨骼

文章目錄

    • 距離變換
    • distanceTransform函數

距離變換

如果把二值圖像理解成地形,黑色表示海洋,白色表示陸地,那么陸地上任意一點,到海洋都有一個最近的距離,如下圖所示,對于左側二值圖像來說,【dist-bg】為其白色區域的骨骼;【dist-fg】為黑色區域的骨骼。

在這里插入圖片描述

實現代碼如下

import numpy as np
import matplotlib.pyplot as plt
from scipy.misc import ascent
import cv2img = ascent().astype(np.uint8)bImgs = {}
th, bImg = cv2.threshold(img, 0, 255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
bImgs[f'otsu({th})'] = bImgbImgs["dist-bg"] = cv2.distanceTransform(bImg, cv2.DIST_L2,5)
bImgs["dist-fg"] = cv2.distanceTransform(255-bImg, cv2.DIST_L2,5)for i,key in enumerate(bImgs,1):plt.subplot(1,3,i)plt.imshow(bImgs[key], cmap='gray')plt.title(key)plt.axis('off')plt.show()

distanceTransform函數

【distanceTransform】函數的功能是,計算當前像素點到零像素點的最短距離,其輸入參數有三,分別是輸入的二值圖像;求解距離的類型,以及掩膜尺寸,一般可設為3或者5。

在一張圖像中,兩點之間的距離有多種計算方式,比如

  • a a a 水平和數豎直方向的變化量
  • b b b 對角方向的變化量
  • c c c 條約移動的變化量

距離變換函數綜合了這三種距離,根據各種距離的權重不同,提供了下面幾種不同的距離類別

distanceTypemaskSize參數
CV_DIST_C3 ( 3 × 3 ) (3\times3) (3×3) a = 1 , b = 1 a=1, b=1 a=1,b=1
CV_DIST_L13 ( 3 × 3 ) (3\times3) (3×3) a = 1 , b = 2 a=1, b=2 a=1,b=2
CV_DIST_L23 ( 3 × 3 ) (3\times3) (3×3) a = 0.955 , b = 1.3693 a=0.955, b=1.3693 a=0.955,b=1.3693
CV_DIST_L25 ( 5 × 5 ) (5\times5) (5×5) a = 1 , b = 1.4 , c = 2.1969 a=1, b=1.4, c=2.1969 a=1,b=1.4,c=2.1969

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

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

相關文章

Gitee的原理及應用詳解(三)

本系列文章簡介: Gitee是一款開源的代碼托管平臺,是國內最大的代碼托管平臺之一。它基于Git版本控制系統,提供了代碼托管、項目管理、協作開發、代碼審查等功能,方便團隊協作和項目管理。Gitee的出現,在國內的開發者社…

漂流瓶掛機項目,聊天腳本賺錢新玩法,號稱單機30-50+ (教程+軟件)

一、項目簡介: 漂流瓶掛機項目主要是通過使用探遇漂流瓶、音麥漂流瓶等聊天軟件,為用戶提供一個聊天賺錢的平臺。男性用戶需要充值后才能發送消息,而女性用戶則可以通過接收消息賺取分紅。男性用戶發送給女性用戶的消息費用大約在.1-.2元之間…

VScode中對git的學習筆記

1.git是什么? Git是一個功能強大的分布式版本控制系統,由Linux內核的創始人Linus Torvalds在2005年創建。它以其速度、數據完整性和支持大型項目的能力而聞名,被廣泛應用于軟件開發中。Git允許開發者在本地機器上擁有完整的代碼庫副本&#x…

讀書筆記分享

1.蘇格拉底只在需要的時候才索取,那樣便能以最少的物質滿足自身的要求。他認為每個人都天生體質脆弱,只有在貧乏的環境中才會鍛煉地強壯起來。生活中的大多數人認為,奢華才是幸福的生活。無休止的物質積聚,讓人們每天生活在一個內…

2024-05-27 blue-vh-問題點

摘要: 2024-05-27 思考-日記-問題點 問題點: 一. 同步接口的并發問題 接口調用是在客戶端的的上下文,無論是線程,協程,是在客戶端的執行上下文里面同步的話,是同步客戶端的調用接口的上下文,阻塞的是客戶端的上下文&a…

SashulinMessageBroker:在消息流中調用C++ DLL

一、背景 在現實應用中,算法、核心邏輯為了追求快速高效的運行速度,很多人都采用C來編寫,并打包成動態庫供外部使用。SMB針對這種應用場景,提供了DLL組件,實現在消息流中對DLL的動態調用。下實例講解如何實現DLL as S…

多旋翼+發電機:國債應急系留照明無人機技術詳解

多旋翼發電機技術的應急系留照明無人機是一種集成了先進飛行技術、發電技術和照明技術的無人機系統。這種無人機具有高度的靈活性、移動性和適應性,能夠在各種復雜環境下迅速部署,為夜間搜救、救援等應急任務提供高效、可靠的照明支持。 無人機參數&…

融匯11款AI工具構建完美應用

本文將為您介紹25個開源項目,分為上下兩篇以便您融匯它們來制作自己的AI應用。人工智能(AI)應用在近年來得到了長足的發展。從語音助手到軟件開發,人工智能已在我們的生活中無處不在,并得到了廣泛應用。 如您所見&…

構建智慧城市公共服務系統的功能架構設計

隨著城市化進程的加速,城市公共服務系統在保障居民生活品質、提升城市管理水平方面扮演著愈發重要的角色。構建智慧城市公共服務系統的功能架構設計至關重要,它不僅需要充分考慮居民需求與城市管理的實際情況,還需要整合先進的科技手段&#…

LINGO:存貯問題

存貯模型中的基本概念 模型: 基本要素: (1)需求率:單位時間內對某種物品的需求量,用D表示。 (2)訂貨批量:一次訂貨中,包含某種貨物的數量,用 Q表…

【MySQL精通之路】索引優化(2)

目錄 1 MySQL如何使用索引 2 主鍵優化 3 空間索引優化 4 外鍵優化 5 列索引 6 多列索引 7 驗證索引使用情況 8 InnoDB和MyISAM索引統計集合 9 B樹索引與哈希索引的比較 9.1 B-樹索引特征 9.2 哈希索引特征 10 索引擴展的使用 11 優化器使用生成的列索引 12 不可見…

【C語言】實現貪吃蛇--項目實踐(超詳細)

前言: 貪吃蛇游戲大家都玩過吧?這次我們要用C語言來親手制作一個!這個項目不僅能讓我們復習C語言的知識,還能了解游戲是怎么一步步做出來的。我們會一起完成蛇的移動、食物的生成,還有碰撞檢測等有趣的部分。準備好了…

新計劃,不斷變更!做自己,接受不美好!豬肝移植——早讀(逆天打工人爬取熱門微信文章解讀)

時間不等人 引言Python 代碼第一篇 做自己,沒有很好也沒關系第二篇結尾 引言 新計劃: 早上一次性發幾個視頻不現實 所以更改一下 待后面有比較穩定的框架再優化 每天早上更新 早到8點 晚到10點 你剛剛好上班或者上課 然后偷瞄的看兩眼 學習一下 補充知…

SSM流浪寵物領養系統 畢業設計-附源碼 270917

摘 要 流浪寵物一直是影響城市環境與居民生活的一個不可忽略的因素。基于此,本文設計并實現一個流浪寵物領養系統。用戶可以通過本系統查看搜索流浪寵物的相關信息、進行領養申請,為其提供愛心幫助。本系統有效地解決了流浪寵物領養工作開展困難等問題&a…

STM32F1之OV7725攝像頭·SCCB總線詳解(附帶源碼編寫)

STM32F1之OV7725攝像頭-CSDN博客 STM32F1之OV7725攝像頭像素數據輸出時序、FIFO 讀寫時序以及攝像頭的驅動原理詳解-CSDN博客 目錄 1. 硬件設計 1.1 SCCB 控制相關 1.2 VGA 時序相關 1.3 FIFO 相關 1.4 XCLK 信號 2. 代碼設計 2.1 SCCB總線軟件實現 2.1.1 宏定…

推薦系統三方參與者

1.信息生產者 信息生產者是指制作和發布網絡信息內容的組織或個人。信息生產者的需求鏈路大致為:發布信息->期待曝光->期待閱讀->期待獎勵,需求得到滿足,持續生產,再次進入鏈路循環。生產者持續創作的激情和動力很大程度…

go語言內置io包中TreeReader函數的理解和使用示例

在go語言的內置io包中的這個 TreeReader函數,函數原型 func TeeReader(r Reader, w Writer) Reader 從函數原型中看是給他一個Reader, 和一個Writer 然后他給你返回一個Reader, 本文中我們把這個返回的Reader叫做 treeReader, 他是一個很特別的reader…

利用STK分析雷達干擾

利用STK中的radar模塊能夠進行干擾分析。該模塊能夠用來確定干擾源(單站雷達、發射源),評估干擾對本機雷達性能的影響。 在分析干擾影響之前,首先設置一簡單場景。 1、創建一個名為RadarJam的場景; 2、打開場景的Prop…

上位機圖像處理和嵌入式模塊部署(f103 mcu運行freertos)

【 聲明:版權所有,歡迎轉載,請勿用于商業用途。 聯系信箱:feixiaoxing @163.com】 mcu一般有兩個用途,一個是控制,一個是非控制。控制類的應用一般要求實時性比較高,什么時候做什么,都是有嚴格的時間要求的。而非控制類的應用,則要求實現盡可能多的功能,比如…

spring boot整合j2cache 配置項目全局鍵標識 幫助定位是哪個項目產生的緩存

我們利用 j2cache 存進 redis的緩存 key 可以加個全局標識 這樣 到時看緩存 方便別人看是哪個項目存進去的 例如 這里 我們存入的 book 我們 keys * 查看 就知道是個book 但不知道具體來自那套系統 我們在 j2cache.properties 中加上 redis.namespace 項目全局鍵標識 我們…