使用四叉树进行图像合并

时间:2012-09-19 17:13:18

标签: image algorithm tree

我们如何使用四叉树合并两个图像?我正在浏览维基百科Quadtree并看到图像可以用四叉树表示。此问题的算法也曾在Google面试中提出过。

2 个答案:

答案 0 :(得分:0)

我刚刚读到了关于四叉树的信息,根据我的理解,Quadtree是一棵树,他的每个根都有4个孩子。
还要注意的是,以根是整个图像的方式表示图像是一个很好的结构,他的4个孩子将图像分成4个相等的部分,依此类推。
在此图片中可以很好地看到这一点:enter image description here

现在我看到它的方式,整个图像必须形成一个正方形,因为有4个相等的正方形总是形成一个正方形,为了从四叉树中得到一个矩形,它必须具有“空”填充的残余物。正方形,从上图中的“白色”方块可以看出。

所以我们假设我们有两个矩形,我们想要将它们水平地附加在一起, 我理解的最直接的方法是创建一个新的树,使用新的根,并添加第一个Image作为该根的第一个子,第二个Image作为该根的第二个子,第三个和第四个孩子将有“空”填充物 这样,如果图像很好地相互贴合,你将获得良好的图像效果。

答案 1 :(得分:0)

假设树的表示如下,

class Node {
Color color;
List<Node> children;}

这样的事情会起作用吗?

Node mergeNode(Node first,Node second){
if ( first == null || second == null )
{
    return first == null ? second : first;
}
else
{
    List<Node> newKids = new ArrayList<Node>();
    for ( int i = 0 ; i < 4 ; ++i )
    {
        Node merged = mergeNode(first,second);
        newKids.set(i,merged);
    }
    return new Node(mergeColors(first,second),newKids));
}}

其中mergeColors是解决颜色合并的策略(类似于真值表。