在Java中为大量文件存储RGB值

时间:2012-10-08 07:26:25

标签: java algorithm

我正在研究Java中的Photo Mosaic。我有一堆瓷砖。我必须处理每个tile并将其[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个tile和m个单元格,我的算法将运行n ^ 2.m次。

有没有更好的方法呢?或者我是否必须使用计算密集型算法来比较图像?

1 个答案:

答案 0 :(得分:2)

您可以构建八叉树http://en.wikipedia.org/wiki/Octree或KD树http://en.wikipedia.org/wiki/Kd-tree,以便有效地找到最近的邻居。