如果矩形的数量通常很小,和矩形本身小,可以使出来行和列的差异,用它来拿出矩形可能是不同的...
想象用下面的像素值图片...
0 0 0 1 1 1 2 2 3 3
0 0 1 1 0 0 1 1 2 2
0 0 1 1 0 0 0 1 1 2
0 0 1 1 0 0 0 1 1 2
0 1 1 0 0 3 0 0 1 1
0 1 1 0 0 3 0 0 1 1
0 0 1 1 0 0 0 1 1 2
0 0 1 1 0 0 0 1 1 2
0 0 0 1 1 1 1 1 0 2
2 2 2 2 2 1 1 2 2 2
......还有......
0 0 0 1 1 1 2 2 3 3
0 1 1 1 0 0 1 1 2 2
0 1 2 4 0 0 0 1 1 2
0 1 2 3 0 0 0 1 1 2
0 1 1 0 0 3 0 0 1 1
0 1 1 0 0 3 0 0 1 1
0 0 1 1 0 3 3 2 1 2
0 0 1 1 0 3 3 2 1 2
0 0 0 1 1 2 2 2 0 2
2 2 2 2 2 1 1 2 2 2
首先你会拿出其中的像素行,行的面具,列产生了分歧......
0 1 1 1 0 1 1 1 0 0
0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0 0
1 0 1 1 1 0 0 0 0 0 0
1 0 1 1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 1 1 1 0 0
1 0 0 0 0 0 1 1 1 0 0
1 0 0 0 0 0 1 1 1 0 0
0 0 0 0 0 0 0 0 0 0 0
行和列的数据给我们指导,那里可能是长方形......
0 1 1 1 0 1 1 1 0 0
0 0 0 0 0 0 0 0 0 0 0
1 0 ? ? ? 0 ? ? ? 0 0
1 0 ? ? ? 0 ? ? ? 0 0
1 0 ? ? ? 0 ? ? ? 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
1 0 ? ? ? 0 ? ? ? 0 0
1 0 ? ? ? 0 ? ? ? 0 0
1 0 ? ? ? 0 ? ? ? 0 0
0 0 0 0 0 0 0 0 0 0 0
遍历每个可能的矩形,并决定是否有是否更改,然后对它们进行编码。如果您需要...您可以添加其他散列轴而不是行和列,就像您可以将图片细分为区域并散列区域是否有任何更改一样,然后使用散列来决定区域是否需要被编码。您可以执行任意次数的操作,并且具有合理快速的算法,也可以生成小文件。
无论如何,我认为您最好的选择是建立一个已更改内容的地图,并使用总量来告诉您是否更改了区块以指导您的决策。如果你收集了足够多的这些数据,你甚至可以创建一些不同的算法,在不同的情况下做好工作,然后将它们放入一个责任链中,根据地图的特征和你构建的哈希来决定使用哪种算法。
因此,磁盘空间是主要的考虑因素,而不是构建增量的时间? – 2010-03-31 03:02:10
@MaxGuernseyIII,是的,但那是因为我假设其他任务将主导CPU负载。我可能是错的。 – finnw 2010-03-31 03:07:49