如果矩形的數量通常很小,和矩形本身小,可以使出來行和列的差異,用它來拿出矩形可能是不同的...
想象用下面的像素值圖片...
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