【发布时间】:2012-03-28 18:33:27
【问题描述】:
我需要以“通常”的方式将图像(正方形)转换为四叉树 - 将其分成四份,检查每份中是否只有一种颜色;如果是:关闭节点,否则:重复;
有人知道它的开源程序吗?
最好使用 Java,但我可以使用任何语言。
谢谢。
【问题讨论】:
标签: image image-processing quadtree
我需要以“通常”的方式将图像(正方形)转换为四叉树 - 将其分成四份,检查每份中是否只有一种颜色;如果是:关闭节点,否则:重复;
有人知道它的开源程序吗?
最好使用 Java,但我可以使用任何语言。
谢谢。
【问题讨论】:
标签: image image-processing quadtree
我想你可以很容易地在 OpenCV 中编写一个程序来为你做这件事。如果你已经有一些数据结构来保存实际的树,那么主函数看起来像这样(我已经为灰色图像编写了它,但它只是需要对颜色重复 3 次的测试):
void divideAndConquer(Mat im, QuadTree &tree, int parent){
if(parent<0)
return;
double min,max;
minMaxLoc(im,&min,&max);
if(max-min<0.01)
tree.addNode(parent,closed);
else{
tree.addNode(parent,open);
Mat im0=Mat(im,Range(0,image.rows/2-1),Range(0,image.cols/2-1));
Mat im1=Mat(im,Range(image.rows/2,image.rows),Range(0,image.cols/2-1));
Mat im2=Mat(im,Range(0,image.rows/2-1),Range(image.cols/2,image.cols));
Mat im3=Mat(im,Range(image.rows/2,image.rows),Range(image.cols/2-1,image.cols));
divideAndConquer(im0, tree, parent/4);
divideAndConquer(im1, tree, parent/4+1);
divideAndConquer(im2, tree, parent/4+2);
divideAndConquer(im3, tree, parent/4+3);
}
}
【讨论】: