我理解四边形树如何处理方形图像(通过分割图像直到该部分是单一颜色,存储在叶节点中)。
如果图像的尺寸比另一个尺寸长一些,最终可能会有一个2x1像素区域作为最小的子单元,这会导致很难使用四叉树分割方法来存储单一颜色。你会如何解决这个问题?
答案 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。