距離變換函數(shù)用于計(jì)算每個(gè)像素離最近0值像素的距離夯接,輸入是一個(gè)二值圖像。
圖像上越亮的點(diǎn)纷妆,代表了離零點(diǎn)的距離越遠(yuǎn)盔几。
應(yīng)用于圖像細(xì)化,圖像分割等掩幢。
dist_img = cv2.distanceTransform(img_bin, distance_type, mask_size)
# distance_type 計(jì)算距離的公式
# 參看 cv2.DIST_* 逊拍,常用cv2.DIST_L1
# mask_size
# 參看 cv2.DIST_MASK_*
import cv2
from cvutils import utils
from matplotlib import pyplot as plt
img = cv2.imread('laugh.jpg', 0)
img_filtered = cv2.bilateralFilter(img, 21, 75, 75)
img_bin = utils.convert2binary(img_filtered, ksize=91)
dist_img = cv2.distanceTransform(img_bin, cv2.DIST_L1, cv2.DIST_MASK_3)
plt.subplot(1, 2, 1), plt.imshow(dist_img)
plt.title("jet dist"), plt.xticks([]), plt.yticks([])
plt.subplot(1, 2, 2), plt.imshow(cv2.equalizeHist(cv2.convertScaleAbs(dist_img)), cmap='gray')
plt.title("gray_dist"), plt.xticks([]), plt.yticks([])
plt.show()