如何在matlab中规范化不同大小的多个数组

时间:2015-04-06 04:16:23

标签: arrays matlab image-processing normalize

我使用一组图像进行图像处理,其中每个图像生成唯一代码(Freeman链码)。每个图像的阵列大小各不相同。但是,该值的范围为0到7。第一个图像创建3124个元素的数组。第二个图像创建1800个元素的数组。 现在进行进一步处理,我需要一个固定大小的那些数组。那么,有没有办法将其标准化?

1 个答案:

答案 0 :(得分:3)

在将链代码算法应用于不同的图像时,有一个原因可以使您获得不同大小的数组。这是因为表示每个形状的轮廓完全不同。例如,字母CD很可能包含长度不同的链代码,因为您将形状描述为起始位置的值链。从0到7的值只是告诉您在给定您在形状中查看的位置的当前位置时,您需要查看下一个方向。通常,链码具有以下约定:

3  2  1
4  x  0
5  6  7

0表示向东移动,1表示向东移动,2表示向北移动,依此类推。因此,如果我们有以下轮廓:

o  o  x 
o
o  o  o

起始位置为x,链码为:

4  4  6  6  0  0

链码编码我们应该如何在给定起始位置的情况下跟踪对象的周长。现在,您要问的是我们是否可以采用不同形状的两个不同轮廓,并使用代表其链码的相同数量的值来表示它们。由于链码的长度不同,你不能这样做。

tl;dr

一般来说,你不能。不同大小的阵列意味着由这些链代码表示的轮廓具有不同的长度。你实际上问的是你是否可以用相同数量的元素代表两个不同且不相关的轮廓/链码......而简短的答案是否定的。


您需要考虑的是为什么您想尝试这样做?你想比较不同轮廓之间的形状吗?如果你是这样,那么由于链码的轮廓变化有多么敏感,所以做链码并不是最好的方法。添加一点点噪音会导致完全不同的链码。

相反,您应该调查形状相似性度量。 Remco Veltkamp的权威论文讨论了形状检索的不同形状相似性度量。见这里:http://www.staff.science.uu.nl/~kreve101/asci/smi2001.pdf。诸如豪斯多夫距离,闵可夫斯基距离......甚至简单时刻等措施都是最常用的措施之一。