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表示的是輸出二維數組的類型;