QuadTree如何适用于非正方形区域?

时间:2011-02-13 16:11:07

标签: java image-processing quadtree

我理解四边形树如何处理方形图像(通过分割图像直到该部分是单一颜色,存储在叶节点中)。

如果图像的尺寸比另一个尺寸长一些,最终可能会有一个2x1像素区域作为最小的子单元,这会导致很难使用四叉树分割方法来存储单一颜色。你会如何解决这个问题?

3 个答案:

答案 0 :(得分:5)

你可以填充图像,直到它相等且功率为2。虽然它可能会增加一些额外的内存需求,但增长量不应该那么大。

2x1示例将填充到标准2x2并存储实际大小或为填充节点使用特殊值,以便您可以恢复原始大小。

我知道这是一个老问题,但我希望无论如何我都会帮助。

答案 1 :(得分:0)

为什么不在树上留下空叶? 编辑: 也许我不明白这个问题^^。你的问题是你最终得到像2x1这样的非方形图像,并希望将它们表示为四边形图?

当您有像

这样的2x2平方时

1 2
3 4

你会用“new QuadNode(1,2,3,4)”

创建一个Quadnode

我建议汉德尔像一个2x1的方格

1 2

类似“new QuadNode(1,2,null,null)” 当你有更大的缺失部分时,你可以使用相同的系统。当您有像

这样的4x2图片时

1 2 3 4
5 6 7 8

你会得到一个“新的QuadNode(新的QuadNode(1,2,3,4),null,新的QuadNode(5,6,7,8),null)”

这也适用于颜色相同而不是像素的碎片。

我了解你的问题并清楚明白了吗?

答案 2 :(得分:0)

正方形是一个特殊的矩形,Quad树也可以在矩形上工作。 你只需要一个拆分方法,为给定的方法提供4个矩形。

如果最顶部的根四边形单元格是一个矩形,只需将宽度和高度除以2。

在像素的情况下,只有根单元widthand和高度都是2的幂才有意义。

因此,如果root cell = 2048 * 1024 拆分只是将宽度和高度除以2。

相关问题