Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 实现分形图像时间序列数据提取算法的三种思路_Image_Algorithm_Time Series_Similarity_Fractals - Fatal编程技术网

Image 实现分形图像时间序列数据提取算法的三种思路

Image 实现分形图像时间序列数据提取算法的三种思路,image,algorithm,time-series,similarity,fractals,Image,Algorithm,Time Series,Similarity,Fractals,由于一个项目,我想比较一些由L系统分形发生器生成的图像。我决定使用的方法是DTW动态时间扭曲。正如一些人可能知道的,DTW工作需要两个时间序列进行比较 在网上和科学研究论文上搜索之后,我找不到任何算法实现为像我这样的图像生成时间序列 只是想尝试一下我想要比较的图像,请参见以下内容: 每一列都是一种植物的特定基因型,经过三次迭代,正如你们所理解的,我想将这些图像相互比较 因此,第一步是以某种方式从每个图像中提取时间序列数据,然后在DTW算法中使用它 关于如何实现这样一个算法,我考虑了三种不同的方

由于一个项目,我想比较一些由L系统分形发生器生成的图像。我决定使用的方法是DTW动态时间扭曲。正如一些人可能知道的,DTW工作需要两个时间序列进行比较

在网上和科学研究论文上搜索之后,我找不到任何算法实现为像我这样的图像生成时间序列

只是想尝试一下我想要比较的图像,请参见以下内容:

每一列都是一种植物的特定基因型,经过三次迭代,正如你们所理解的,我想将这些图像相互比较

因此,第一步是以某种方式从每个图像中提取时间序列数据,然后在DTW算法中使用它

关于如何实现这样一个算法,我考虑了三种不同的方法,这里是我想听听你的意见的地方

想法1

正如您在上面看到的,第一个想法是计算同一代分支的距离。从底部开始计算。例如,来自该图像的数据将是:

1st gen : 1.51cm
2nd gen : 0.95cm , 1.03cm
3rd gen : 0.54cm , 0.66cm , 0.69cm , 0.73cm
然后,计算每一代的平均值

1st gen : 1.51cm
2nd gen : 0.99cm
3rd gen : 0.655cm
最后,时间序列图如下所示:

在我看来,这种想法似乎有一个缺点,因为这些分形只有6代,这意味着最终只有6个数字将描述时间序列图

想法2

第二个想法是为每一代顺时针测量从每个分叉到图像的第一个分叉的距离

以下是每个发电操作的顺时针方向的说明:

通过这种方式,我对每棵树进行了许多测量,如下所示:

1st : 1.67cm
2nd : 1.71cm
3rd : 2.60cm
4th : 2.71cm
5th : 2.86cm
6th : 2.94cm
7th : 3.07cm
and so on...
时间序列图为:

想法3

在这种情况下,测量值是从图像中心到轮廓任何点的距离,我认为随着使用更多的轮廓点,时间序列图中的结果会更好

这种情况下的测量:

1st : 2.62cm
2nd : 2.27cm
3rd : 1.98cm
4th : 1.43cm
5th : 1.39cm
6th : 2.07cm
7th : 2.73cm
and so on..
以及已生成的时间序列图:

这就是我所有的想法。所有这些表示和计算都是我用ImageJ和LibreOffice Calc手工完成的。我认为,在决定使用哪种方法后,我应该找到一种方法,用R/matlab或其他什么工具来自动化这个过程

欢迎对选择哪种方法、如何使这些想法自动化或任何更正发表任何意见


谢谢。

实际上我用的是第二个主意

使用ImageJ、add multi points函数和标准画布大小,我计算了属于每个fork的每个点的坐标

例如:

Fork    X     Y
1st    0.43  0.5
2nd    0.56  0.43
and so on...
我将这些值保存到一个excel文件中,并计算每个叉子与第一个叉子的欧几里德距离


最后,我得到了每棵树的距离,并使用DTWRpackage相互比较

我还不清楚你到底想要实现什么以及为什么。让你明白。。。我想比较这些图像,例如图1,制作一个系谱树,它实际上会告诉我,第一列的第一个图像最接近第五列的第二个图像,而第三列的第一个图像最接近。