©Fu Xianjun. All Rights Reserved.
#距离变换介绍
剩下的区域不确定是硬币还是背景,这些区域通常在前景和背景接触的区域(或者两个不同硬币接触的区域),我们称之为边界。通过分水岭算法应该能找到确定的边界。由于硬币之间彼此接触,我们使用另一个确定前景的方法,就是带阈值的距离变换。下面左边的图为得到的距离转换图像,其中每个像素的值为其到最近的背景像素(灰度值为0)的距离,可以看到硬币的中心像素值最大(中心离背景像素最远)。对其进行二值处理就得到了分离的前景图,白色区域肯定是硬币区域,而且还相互分离
#距离变换
dist_transform = cv2.distanceTransform(opening, cv2.DIST_L2, 5)
#归一化图像
cv2.normalize(dist_transform, dist_transform, 0, 1.0, cv2.NORM_MINMAX)
plt.imshow(dist_transform, cmap='gray')
plt.show()
#阈值变换-寻找前景区域
ret, sure_fg = cv2.threshold(dist_transform, 0.5*dist_transform.max(), 255, 0)
plt.imshow(sure_fg, cmap='gray')
plt.show()