欧几里得距离两个像素,每个像素属于不同的图像

Posted

技术标签:

【中文标题】欧几里得距离两个像素,每个像素属于不同的图像【英文标题】:Euclidean distance two pixels, each belonging to different images 【发布时间】:2014-01-04 14:22:04 【问题描述】:

我正在尝试实现用于图像分类的朴素贝叶斯最近邻 (NBNN)。在算法中,它要求属于不同图像的两个像素之间的欧几里得距离。

我有 1) m×40,000 矩阵中的一组 m 图像(其中 40,000 是一个图像中的像素数)和 2) n×40,000 矩阵中的另一组 n 图像.

1) 是训练集,2) 是验证集。

为了让我应用 NBNN,根据我的理解,我需要找到 2) 的每个像素与 1) 的相应像素之间的欧几里得距离。

我的问题是,给定两个灰度值,一个来自 1),另一个来自 2),我如何找到它们之间的欧几里得距离以应用 k-NN?

【问题讨论】:

只是一个简单的实用问题:距离输出矩阵的预期维度是多少? 根据我对朴素贝叶斯最近邻的理解,它应该是 m×40,000,给定 1×40,000 的测试图像和 m×40,000 的训练集。从那里,我将寻找每个像素(列)的最小值以找到最近的邻居。如果我理解不正确,请告诉我。 @viviboox3,我也在尝试在 MATLAB 中的一个项目中采用这种方法。我已经阅读了 Boiman 关于 NBNN 的论文,但我仍然很难理解这种方法。我认为 NBNN 的全部意义在于提出类描述符,然后计算图像到类的距离。这是你在这里做的吗?另外,如果你能指出我对算法的一个很好的解释,我将不胜感激! 【参考方案1】:

设 x, y 是两张 200×200 的灰度图像。像素级别为x1,x2,...x40000y1, y2,...y40000。 x和y的欧式距离为d(x,y)=sqrt(sum_i((xi-yi)^2))

【讨论】:

【参考方案2】:

我会参考wikipedia给出的符号和定义

您有 1d 数据,因此有 p=(p1)q=(q1)e(p,q)=sqrt((p1-q1)^2)=abs(p1-q1)

对于一维情况,欧式距离是灰度值的绝对差。

【讨论】:

那么对于一维图像,像素的位置无关紧要吗?我拥有的 m×40,000 矩阵对应于 m 图像,每个 200×200 像素,因此总像素 = 40,000。 也许我误解了这个问题,我回答了如何计算颜色值的欧几里得距离。您也可以将欧几里得距离应用于位置。 我正在尝试在图像集上实现 knn 算法以对情绪进行分类。如果我有一组用于训练的图像和一个用于测试的图像,我需要找到最小化每个像素之间距离的训练示例。我的图像是 200 x 200。我仍然可以将 1d-case 的欧几里得距离应用于此吗?如果我的问题不清楚,我很抱歉。感谢您的意见。

以上是关于欧几里得距离两个像素,每个像素属于不同的图像的主要内容,如果未能解决你的问题,请参考以下文章

Lab空间中不同距离函数的Kmeans聚类

两个不同 Numpy 数组中的点之间的最小欧几里得距离,不在

像素间的基本关系-距离(转)

如何在opencv中找到单个图像的关键点之间的欧几里得距离

两个坐标列表的欧几里得距离矩阵

计算两个python数组之间的欧几里得距离