机器学习算法 之欧氏距离
欧氏距离通常用于衡量2个点之间的距离,注意这2个点可以是定义在2维空间的,也可以是定义在3维空间或者n维空间的。
二维的公式
ρ = sqrt( (x1-x2)^2+(y1-y2)^2 )
三维的公式
ρ = sqrt( (x1-x2)^2+(y1-y2)^2+(z1-z2)^2 )
n维空间的公式
n维欧氏空间是一个点集,它的每个点 X 可以表示为 (x[1],x[2],…,x[n]) ,其中 x[i](i = 1,2,…,n) 是实数,称为 X 的第i个坐标,两个点 A = (a[1],a[2],…,a[n]) 和 B = (b[1],b[2],…,b[n]) 之间的距离 ρ(A,B) 定义为下面的公式。
ρ(A,B) =sqrt [ ∑( a[i] - b[i] )^2 ] (i = 1,2,…,n)
我们先以一个简单的图像边缘算法为例,让机器学习算法实现自动取如下图像的边缘
实现的最后效果是
图像是由2维像素点组成的矩阵,通常每个像素点由3个元素组成,红、绿、蓝,这3个基本分量可以组成高清的图像。我们可以把图像上的每个像素点理解为(x,y,z)这样的一个点,这个点定义在3维空间,每一维分别代表红、绿、蓝的分量。
假设我们将像素的顺序定义为:蓝、绿、红,我们就可以定义一个像素点为(blue,green,red),每个图像由无数个像素点组成,我们将这个像素点组成的矩阵定义为H*W大小,H为高,W为宽,我们就得到了一个H*W*3的矩阵。、
opencv是一个图像算法库,当然其中也定义了很多机器学习的算法,opencv就是这样定义的图像矩阵的,建议大家安装好opencv,win下有直接安装的exe文件,安装好后,可以直接调用它的python绑定库.
我们开始下面的操作
假设这个像素矩阵的变量名为img,则可以用python描述,如下编写代码,实现一个蓝色分量为200,绿色为100,红色为50的像素点的定义,这个像素点位于图像的300*150处
img[300,150,0]=200 img[300,150,1]=100 img[300,150,2]=50