距离度量方法
假设对于像素P(Xp,Yp), Q(Xq,Yq),R(Xr,Yr)而言,若函数D满足如下三个条件,则函数D可被称为距离函数或度量。
1、D(P,Q)>=0,当且仅当P=Q时有D(P,Q) = 0
2、D(P,Q) = D(Q,P)
3、D(P,Q) =< D(P,R) + D(R,Q)
常见的几个距离函数有
1、欧式距离
其距离等于r的像素形成以P为圆心的圆。
2、D4距离(街区距离)
即距离等于r的像素形成以P为中心的菱形。
3、D8距离(棋盘距离)
即距离等于r的像素形成以P为中心的方形。
距离度量参数可以用于对图像特征进行比较、分类或者进行某种像素级操作。最常用的距离度量是欧式距离,然而在形态学中,也可能使用街区距离和棋盘距离。
示例演示
我们实现一个功能,输入一个彩色图像,输出一个相同大小的二值图像,二值图像每个像素由彩色图像每个像素颜色和我们设置的目标颜色的距离决定,距离大于100,则为白色,否则为黑色。
我们利用D4距离来算颜色距离,主要代码如下:
i
nt MainWindow::getD4Distance(const cv::Vec3b &color, const cv::Vec3b& target) const
{
return abs(color[0]- target[0]) + abs(color[1]-target[1]) + abs(color[2]- target[2]);
}
运行结果:
输入图像
处理后