「通常の」方法で画像(正方形)を四分木に変換する必要があります-4つにスライスし、各ピースに1色しかないかどうかを確認します。はいの場合: ノードを閉じます。そうでない場合: 繰り返します。
オープンソース プログラムを知っている人はいますか?
できれば Java ですが、どの言語でも使用できます。
ありがとう。
「通常の」方法で画像(正方形)を四分木に変換する必要があります-4つにスライスし、各ピースに1色しかないかどうかを確認します。はいの場合: ノードを閉じます。そうでない場合: 繰り返します。
オープンソース プログラムを知っている人はいますか?
できれば Java ですが、どの言語でも使用できます。
ありがとう。
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);
}
}