20180918 【距離變換函數】

OpenCV中,函數distanceTransform()用於計算圖像中每一個非零點像素與其最近的零點像素之間的距離,輸出的是保存每一個非零點與最近零點的距離信息;

圖像上越亮的點,代表了離零點的距離越遠。

用途:

可以根據距離變換的這個性質,經過簡單的運算,用於細化字符的輪廓和查找物體質心(中心)。

                          OpenCV:distanceTransform距離變換函數

OpenCV函數distanceTransform():

功能:用來計算原圖像中距離變換圖像;

void distanceTransform( InputArray src,  

                    OutputArray dst,

OutputArray labels,

int distanceType,

int maskSize,

int labelType=DIST_LABEL_CCOMP ); 

函數說明:

用於計算圖像中每一個非零點像素與其最近的零點像素之間的距離,輸出的是保存每一個非零點與最近零點的距離信息;圖像上越亮的點,代表了離零點的距離越遠。

參數:

src是單通道的8bit的二值圖像(只有0或1)

dst表示的是計算距離的輸出圖像,可以使單通道32bit浮點數據

distanceType表示的是選取距離的類型,可以設置爲CV_DIST_L1,CV_DIST_L2,CV_DIST_C等,具體如下:

  DIST_L1       = 1,   //!< distance = |x1-x2| + |y1-y2| 

  DIST_L2       = 2,   //!< the simple euclidean distance 

  DIST_C        = 3,   //!< distance = max(|x1-x2|,|y1-y2|) 

  DIST_L12      = 4,   //!< L1-L2 metric: distance =2(sqrt(1+x*x/2) - 1)) 

  DIST_FAIR     = 5,   //!< distance = c^2(|x|/c-log(1+|x|/c)),c = 1.3998 

  DIST_WELSCH = 6,  //!< distance = c^2/2(1-exp(-(x/c)^2)), c= 2.9846 

  DIST_HUBER  = 7   //!< distance = |x|<c ? x^2/2 :c(|x|-c/2), c=1.345 

maskSize表示的是距離變換的掩膜模板,可以設置爲3,5或CV_DIST_MASK_PRECISE,對 CV_DIST_L1 或CV_DIST_C 的情況,參數值被強制設定爲 3, 因爲3×3 mask 給出5×5 mask 一樣的結果,而且速度還更快。

labels表示可選輸出2維數組;

labelType表示的是輸出二維數組的類型;

OpenCV:distanceTransform距離變換函數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章