文件交换

图像缩略图

豪斯多夫距离

版本1.6.0.0(4.22 KB)通过 扎卡里丹齐格
计算两个点集之间的豪斯多夫距离的欧几里得度量空间。

44个下载

更新2013年4月3日

查看许可证

豪斯多夫距离的是一个数学结构来衡量两套是一个度量空间的子集点的“接近性”。

这种措施可以用来分配两个轨迹,数据云或点中的任意集合之间的标量分数的相似性。

该函数将返回两组点之间的豪斯多夫距离。

对于豪斯多夫距离的详细信息:http://en.wikipedia.org/wiki/Hausdorff_distance

引用作为

扎卡里丹齐格(2020年)。豪斯多夫距离(//www.tianjin-qmedu.com/matlabcentral/fileexchange/26738-hausdorff-distance),MATLAB中央文件交换。检索

评论和评分(三十

希林SHK

MoseLee

林新余

姆乔

ggyyree

嗨扎卡里,

短短的几个简单的问题:

1.将与3D数据点你实现好不好?例如,我已得到两组三维数据点由顶点(X,Y,Z)和(X 'Y',Z')表示。这会不会实现能处理呢?

2.我发现了另一个在执行
http://uk.mathworks.com/matlabcentral/fileexchange/29968-modified-hausdorff-distance

然而,这一次给出的结果是从您的实现不同。拜托你对此有何评论?

非常感谢您的梦幻般的工作。

儿子阮

嗨扎卡里。

我的意思是,可以使用一个点的坐标是集。例如,点(1,2,3)将变成集合{1,2,3} - 由坐标的集合。

因此,使用这种想法,我想查看哪些组是d的距离的点P远离=(A,B,C),我的输入。[我只是想在空间中的点。]

@Son:两点之间的Hausdorff距离将是一样的“普通”欧氏距离。当你比较两个集合点的豪斯多夫距离变得非常有用。

儿子阮

你好。

我是新来的MATLAB。有人可以帮助我如何使用这个程序?

基本上我想要做的就是我希望把在空间中的点,说(0,0,0),并指定最大距离,说5,我想找到的所有空间中的点,其Hausdorff距离的起源是5。

感谢您的时间。

所有的警告可以通过输出参数之间用逗号将可避免。[A B] - > [A,B]。

@Duc菲尔感谢您的输入,这可能是非常有用的。我还没有制定与并行MATLAB计算非常多。

德费尔

很不错的一段代码。我想知道,如果这个改变是可能的:L91-L110,利用并行计算的。我认识到,有时长度SP(1)或□(1)的载体可能仍然过大过保存,但有大小SP(1)*□(1)和载体的那些个体的基体之间有很大的区别长度。

MINP =零(1,SP(1));
PARFOR P = 1:SP(1)
%计算从点P中至Q的最小距离
MINP(P)=分钟(总和(bsxfun(@减去,P(P,:),Q)^ 2,2))。
结束
MAXP = MAX(MINP);

%重复的Q中的点
minQ =零(1,□(1));
PARFOR Q = 1:□(1)
minQ(Q)=分钟(总和(bsxfun(@减去,Q(Q,:),P)^ 2,2))。
结束
MAXQ = MAX(minQ);

我想计算两个指标图像之间的豪斯多夫距离!

请我需要一个代码来计算两个二进制图像之间的豪斯多夫距离!

@Yunus,你的问题是有点暧昧。按照规定,代码将解释你的输入集具有每一个2维的点,在这种情况下,我们预计非零HD,因为点是不同的,而事实上,是由它们的欧几里得距离精确地不同。如果你有兴趣在比较组有两个1维穴每次需要调换你的投入。行被视为观察和列的尺寸。

HD = HausdorffDist([1 2],[2 1]) - > 1.41
HD = HausdorffDist([1 2] '[2 1]') - > 0

确实是非常有用的代码。我有个问题 :

假设我们有两套,即{1,2}和{2,1}。这两组之间的豪斯多夫距离为零。然而,在代码中,我们得到了点之间的欧氏距离的值。我错了吗?

@Shaan,一种方法是对待这些图像的像素的向量,并使用这些向量代码,但是,HD图像的比较多更细致的实施方案已经制定出来。

你如何使用此代码来计算两个二进制图像之间的豪斯多夫距离是多少?

这是伟大的代码,但是你需要修复你的错误:为了达到相同的列的两个图像,你可以修复下列代码列数:

NROWS = MAX(大小(I1,1),大小(I2,1));
NCOLS = MAX(大小(I1,2),大小(I2,2));
nchannels =尺寸(I1,3);

extendedI1 = [I1,零(大小(I1,1),NCOLS尺寸(I1,2),nchannels);...
零(NROWS尺寸(I1,1),NCOLS,nchannels)];

extendedI2 = [I2,零(大小(I2,1),NCOLS尺寸(I2,2),nchannels);...
零(NROWS尺寸(I2,1),NCOLS,nchannels)];

I1 = extendedI1;
I2 = extendedI2;

此外,二值图像不给我们的豪斯多夫距离的最低数字。我检查你的代码与几个二进制图像和所有时代的最大豪斯多夫距离的数字是正确的答案,而不是最小数量。

Venkat [R

非常快速和有用的提交。
很适合我。谢谢

嗨,
我有由被人-X和Y像参观顺序位置的两个向量:

X = [(LAT1,long1),(LAT2,long2),(lat3,long3)];

Y = [(lat4,long4),(LAT2,long2),(lat3,long3)];

我需要找到这两个向量之间的相似度。可这Hausdorff距离帮我以任何方式?

罗埃尔H,
同意这两个方面。该代码已被更新和重新发布。做一些快速测试,你推荐显著提高速度非常大的矩阵的更新,谢谢。

罗埃尔^ h

漂亮的代码,感谢写这个功能!

虽然我有几句话。对于largeMat情况下,最好是使用bsxfun代替repmat,因为它是更有效的(更快),用于大矩阵这显然是这种情况。也可能是一个想法,直到最大发现推迟“开方”的呼叫。这不会改变结果,但要求较少的计算

%现有的代码:
MINP =分钟(SQRT(总和((repmat(P(P,:),[□(1)1]) - Q)^ 2,2)));
%sugestion:
MINP =分钟(总和((bsxfun(@减去,P(P,:),Q))^ 2,2))。

它是由特拉维夫大学的Roey Baror提醒我注意,创建/所有点之间的距离输出的矩阵可以迅速占用系统内存对于大型矩阵,如高清晰度的图像。更新提供二次算法计算Hausdorff距离,而不存储在存储器中的大矩阵,并且当该二次算法是必要的自动检测。

s_ppu

龙眼

Sasikanth

漂亮的代码,并很好的注释来!

更新

1.6.0.0

数据可视化的选项现在包括在内。

1.4.0.0

根据用户的意见,该算法对大数据集的性能进行了更新。

1.3.0.0

当没有足够的内存来计算和存储包含所有组成点之间的距离的矩阵的代码,现在自动切换到辅助算法。它也允许用户手动选择所需的算法。

1.2.0.0

概括的代码,以允许N维点集。此更新通过文件27905,具有良好的执行超过2 d点集高清的启发。

1.1.0.0

编辑添加的距离作为输出选项的矩阵。修正了会导致一个错误,如果其中一组是单点的错误。除去多余的呼吁“大小”和“长度”。- 2010年5月

MATLAB版本兼容性
创建了R2009a
与任何版本兼容
平台兼容性
视窗 苹果系统 Linux的