对于距离图像,图像中每个像素的灰度值为该像素与其邻近模板的距离加上模板上像素值的最小值。一般步骤是:
1、将图像转换为二值化;
2、第一遍从左上角开始扫描,按行遍历图像,计算下式:
3、第二遍从右下角开始,从右向左扫描
4、根据上述结果得到最终图像
#include<opencv2/imgproc/imgproc.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/core/core.hpp>
#include<vector>
#include<iostream>
#include<algorithm>
using namespace std;
using namespace cv;
//opencv中距离变换函数distanceTransform实现
//计算欧式距离
float calcEuclideanDistance(int x1, int y1, int x2, int y2)
{
return sqrt(float((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)));
}
//计算棋盘距离
float calcChessboardDistance(int x1, int y1, int x2, int y2)
{
return max(abs(x1 - x2), abs(y