2

私はJavaでフォトモザイクに取り組んでいます。タイルのコレクションがあります。各タイルを処理し、その [R,G,B] 値を何らかのデータ構造に格納する必要があります。基本的には、次の形式にしたいと考えています。

for eachTile in Directory:
calculateRGB;
store in HashMap(key is image name, value is a list of R,G,B value) in the form { (image1:[R,G,B]), (image2:[R,G,B], ...}

これが完了したら、ターゲット イメージをセルに分割する必要があります。各セルはタイルと同じサイズです。ここで、各セルを処理し、その RGB を計算する必要があります。この後、タイルと比較して最適なものを見つける必要があります。

ここで、最適な一致を見つけるために各セルと各タイルの間のユークリッド メトリックを計算したため、マッチングはトリッキーです。したがって、n 個のタイルと m 個のセルがある場合、アルゴリズムは n^2.m 回実行されます。

これを行うより良い方法はありますか?または、画像を比較するために計算集約的なアルゴリズムを実行する必要がありますか?

4

1 に答える 1

2

オクトリーhttp://en.wikipedia.org/wiki/Octreeまたは KD ツリーhttp://en.wikipedia.org/wiki/Kd-treeを構築して、最近傍を効率的に見つけることができます。

于 2012-10-08T08:15:42.507 に答える