距離變換DT

2021-03-05 算法雜話


1 距離變換

2 歐式距離變換

3 OpenCV函數原型

4 基於距離變換的掌心提取


1 距離變換

設存在兩個點

曼哈頓距離定義為:

棋盤距離定義為:

歐式距離定義為:

距離變換(DT: distance transform)將二值圖轉為灰度圖,灰度圖中每個像素的值為二值圖中的對應點與最鄰近零值點的距離,如圖Figure 1所示。距離測度有曼哈頓距離、棋盤距離和歐式距離等。其中,歐式距離變換(EDT)計算的是準確距離,但計算量大;其他距離變換(DTs)的計算的是近似距離,但算法簡單快速且易於實現。

Figure 1. Example of a distance transformation. To the left is a binary image, with zero(*) and non-zero(-) pixels. To the right is the resulting image: Each pixel has a value corresponding to the distance to the nearest featyre pixel. The Euclidean distance has been rouded to the nearest integer.2 歐式距離變換

歐式距離變換本質上是一種全局操作,計算複雜。Borgefors86[1]提出了一種近似歐式距離變換,其基本思想是全局距離可以通過局部距離的傳播來近似,局部距離是指某個局部區域內像素之間的距離。近似歐式距離變換的數學模型:

其中,

近似歐式距離變換的算法簡單快速且易於實現。使用

3 OpenCV函數原型
cpp
void cv::distanceTransform (
        InputArray src,
        OutputArray dst,
        int distanceType,
        int maskSize,
        int dstType = CV_32F
)

參數說明:

src: 8位單通道二值源圖像

dst: 輸出距離圖像,8位整型或32位浮點型單通道數據

distanceType: 距離類型,取值如下:

Type釋義DIST_L1d = |x-u|+|y-v|DIST_L2d = sqrt{(x-u)^2+(y-v)^2}DIST_Cd = max(|x-u|, |y-v|)

maksSize: 距離變換的模板大小,取值如下

Type釋義DIST_MASK_3mask = 3DIST_MASK_5mask = 5DIST_MASK_PRECISE和DIST_L2使用

dstType: 輸出圖像類型,CV_8U或CV_32F。

當maskSize==DIST_MASK_PRECISE且distanceType==DIST_L2時,使用Felzenszwalb04[2]計算準確的歐式距離;否則使用[Borgefors86]算法,有以下幾種情況:對於DIST_C和DIST_L1,分別計算棋盤距離和曼哈頓距離;並且maskSize被強制設置為3,因為maskSize==3和maskSize==5得到的結果是一致的;而對於DIST_L2,計算近似的歐式距離,而且maskSize==5將得到比maskSzie==3更加準確的結果。當maskSize==3,模板如圖Figure 2所示,當maskSize==5,模板如圖Figure 3所示。

Figure 2. The

對於參數a,b和c,[Borgefors86]建議:

DIST_L2:

3 x 3: a = 0.955, b = 1.3693

5 x 5: a = 1, b = 1.4, c = 2.1969

4 基於距離變換的掌心提取

提取手掌中心通常的做法是計算整個手掌的質心,以該質心近似為手掌中心,這種方法只適用於沒有手指伸出的情況,否則手掌的中心將偏離準確的位置。而基於距離變換的方法,將不受手指伸出的影響。

基於距離變換的掌心提取:

將手掌圖像二值化,手掌內部區域為白色,外部區域為黑色;對二值圖像進行距離變換,得到dist_Image,其中每個像素點的值表示該像素點到最鄰近零值像素點的距離;參考資料[1]

[Borgefors86]: Distance-transformations-in-digital-images

[2]

[Felzenszwalb04]: Distance-transforms-of-sampled-functions

相關焦點

  • 傅立葉變換、拉普拉斯變換、Z 變換的聯繫是什麼?為什麼要進行這些變換?
    、拉普拉斯變換和Z變換的原理和作用。你看,這不就皆大歡喜了麼,搞來搞去,拉普拉斯變換的意義無非就是把那些想要上天的函數掰彎,好最終變成那種適合做變換的函數,但是掰彎聽起來不太專業,所以我們又管不好,信號是連續的,而計算機上存儲的數據是離散的,這可咋辦好,沒關係,我們可以這樣,每隔一小段距離,取一個點,最後用的時候把這些點連起來,不就能變成原來的的信號了麼,當然我們還得研究研究,這個一小段距離究竟得多小,才不至於讓原信號失真,這個就得參考參考香農採樣定律了。好的,現在我們把連續的信號換一下,換成離散的"點",首先積分是不能用了,既然換成離散的了,積分對應的就應該變成累加符號
  • 「每日一題」∫(0,1)f(tx)dt=x^2+f(x)-(1/x)∫(0,x)f(t)dt,求f(x)
    本文主要內容:連續函數f(x)滿足∫(0,1)f(tx)dt=x^2+f(x)-(1/x)∫(0,x)f(t)dt,求f(x).解:式中的∫(0,1)表示的積分上下限,其中前者0為下限,1為上限,後面以此類推。
  • 31、 霍夫變換
    霍夫變換是一種用於在圖像中查找直線、圓或其他簡單形狀的方法。最初的霍夫變換是直線變換,這是一種在二值圖像中搜索直線的方法。
  • 傅立葉變換、拉普拉斯變換、Z 變換的聯繫是什麼?為什麼要進行這些變換?
    、拉普拉斯變換、Z 變換的聯繫是什麼?為什麼要進行這些變換?》作者:嵌入式客棧[導讀] 在知乎上看到一個問題,傅立葉變換、拉普拉斯變換、Z 變換的聯繫是什麼?為什麼要進行這些變換?我覺得這是一個非常好的問題,貌似一下子也回答不上來,所以整理學習並分享一下。什麼是數學變換?要理解這些變換,首先需要理解什麼是數學變換!
  • 傅立葉變換、拉普拉斯變換、Z變換最全攻略
    傅立葉變換、拉普拉斯變換、Z變換的聯繫?他們的本質和區別是什麼?為什麼要進行這些變換。研究的都是什麼?從幾方面討論下。  傅立葉變換,拉普拉斯變換,Z變換的意義  【傅立葉變換】在物理學、數論、組合數學、信號處理、概率論、統計學、密碼學、聲學、光學、海洋學、結構動力學等領域都有著廣泛的應用(例如在信號處理中,傅立葉變換的典型用途是將信號分解成幅值分量和頻率分量)。
  • opencv教程-霍夫變換、圖像分割
    1:模板匹配opencv裡的模板匹配就不說了,也就是從當前圖像提取模板圖像匹配還好,換一個不同圖片的模板就不行了,而且對縮放的模板匹配效果也很差,就說下基本流程如下:圖像灰度化→cv2.matchTemplate→cv2.minMaxLoc2:霍夫變換
  • 概率霍夫變換
    cv2.line(orgb,(x1,y1),(x2,y2),(255,0,0),5)plt.subplot(121)plt.imshow(oShow)plt.axis('off')plt.subplot(122)plt.imshow(orgb)plt.axis('off')(-0.5, 459.5, 459.5, -0.5)算法:概率霍夫變換是霍夫變換算法的優化
  • [OpenCV]經典霍夫變換原理
    本文主要講述的是霍夫變換的一些內容,並加入一些在生活中的應用,希望能對讀者對於霍夫變換的內容有所了解。首先我先說的是,霍夫變換是一個特徵提取技術。其可用於隔離圖像中特定形狀的特徵的技術,應用在圖像分析、計算機視覺和數字圖像處理領域。
  • 拉普拉斯變換4:單邊拉普拉斯變換
    單邊拉普拉斯變換在分析具有非零初始條件的因果系統時,有很大的價值。單邊拉普拉斯變換定義:
  • 三雜域名8dt.com建站,18.cn、83.cn雙雙交易
    經典的五位數域名也有很多,如AAAAB系列,ABBBB系列,ABABA等等。隨著域名市場的持續升溫,其他五位數的價格也在穩步上升當中。  八達通啟用8dt.com建站    近日,三雜域名8dt.com被終端「深圳永利八達通」啟用建站,目前網站已經搭建完成能夠正常訪問。
  • Epc S3總決賽:DT拿下開門紅,9殺吃雞暫列積分榜第一
    再說回決賽圈,這局遊戲進入決賽圈的隊伍有三支,分別是ys、fod以及dt戰隊。在ys與fod戰隊遭遇交火之時,dt戰隊故伎重施,坐收漁翁之利,不僅保存了自己的實力,還又k了幾個頭。最後dt也是以9殺的不錯戰績,拿下了epc總決賽的開門紅!
  • 拉普拉斯變換及其逆變換表拉普拉斯變換及其逆變換表
    打開APP 拉普拉斯變換及其逆變換表拉普拉斯變換及其逆變換表 發表於 2017-12-05 18:30:31   拉普拉斯變換應用領域定理
  • photoshop自由變換製作美女圖片的摺疊特效PS教程
    2、在菜單欄中選擇「選擇—變換選區」命令,設置選區的大小,使選區貼合圖片,如圖所示。按Enter確定。3、在菜單欄中選擇「編輯—變換—斜切」命令,然後拖動選區的一邊,出現斜切效果,如圖所示。按Enter鍵確認。拖動時,要記下屬性欄中的數值變化,以便設置定後面的操作。
  • 知識總結 | 小波變換
    在正式進入小波變換之前,我們不妨來討論一下傅立葉變換的局限性和為什麼我們需要引入小波變換。回想傅立葉變換的公式從積分的算式我們可以輕鬆知道,在積分式一結束的同時,另外一個譜的信息就會完全消失,就是說,傅立葉變換的頻域上不含有時間信息。
  • 霍夫變換是怎麼發明的
    我對羅森菲爾德對「點線變換」的簡要描述很感興趣,但卻被變換空間在理論上無界的尷尬事實所困擾,需要用到前面提到的不優雅的軸反轉技巧。圖5顯示了ρ-θ變換空間中的三個正弦曲線,每個正弦曲線對應於圖像平面中的單個點。交點處的ρ和θ值定義了穿過三個點的x-y平面中的線。圖 5這種新變換不會受到與將點映射到直線相關的理論和計算問題的影響。有限圖像平面中的點映射到有限變換空間中的正弦曲線,並沿著線圖指向相交的正弦曲線,而與線的方向或坐標軸的選擇無關。
  • 霍夫變換原理剖析
    對應的變換可以通過圖形直觀表示:變換後的空間成為霍夫空間。即:笛卡爾坐標系中一條直線,對應霍夫空間的一個點。 到這裡問題似乎解決了,已經完成了霍夫變換的求解,但是如果像下圖這種情況呢?其實本質上就是:這就完成了霍夫變換的整個過程。這個時候求解出來了其實就是多條直線的斜率k以及截距q,通常會根據直線的特性進一步判斷,從而將直線變為線段:
  • 學不到的數學經典:拉普拉斯本人是如何推導出拉普拉斯變換公式的
    傅立葉變換和拉普拉斯變換是高等數學的重要內容,這兩大變換貫穿於各個自然學課,傅立葉變換雖然好用,而且物理意義明確,但有一個最大的問題是其存在的條件比較苛刻,比如時域內絕對可積的信號才可能存在傅立葉變換。
  • 基爾霍夫定律的應用--等效變換
    在實際應用中,有時會發現,有些電路可以通過簡化來節省對結果的求取過程,也會更容易理解,這個簡化的過程,我們稱之為等效變換。01等效變換就是把相同的部分作為一個等效的替代,結果不影響電路的功能。也可以是把電路中的一部分進行變換,變換後,該部分外部埠電壓電流值保持不變,或者外部埠的電壓電流關係都保持不變。同樣可以有多個等效變換存在於電路中。