我迷失了,需要指导。
我们尝试使用imagemagick将一堆小图像(X)渲染到一个统一的画布上。
不同的X可以是五种不同尺寸中的一种:20x20,40x40,60x60,80x80或100x100。大图像的宽度始终设置为600,但可以根据需要调整高度。
在任何特定时刻,我们可以使用少至10个或多达10,000个X.
目前,我们正在使用的简单概念证据如下:
images.each do |image|
image = Magick::Image.read("#{RAILS_ROOT}/public/images/#{image}").first
w = image.columns
h = image.rows
pixels = image.export_pixels(0, 0, w, h, "RGB")
img.import_pixels(x, y, w, h, "RGB", pixels)
x += w
end
......它简单而愚蠢,但它确实输出了一系列合并为一个的图像。几乎在那里; - )
有没有人知道一种有效的算法,我们可以用它来迭代许多X并将它们并排放置,跨越多条线并仍在优化空间? 此处的目标是创建一个没有空白区域的单个图像,由所有小图像构建。
如上所述,我希望你们对此有任何反馈意见。指针?想法?实例
感谢。
答案 0 :(得分:0)
现在看来图像是噪音。你想解决一个瓷砖问题。瓷砖有一些固定的尺寸,您希望将它们放在固定宽度和最小高度的表面上。这可以通过DFS,BFS,A *等全局完成。您还可以查看一些本地方法,如模拟退火或爬山,这取决于您是否需要全局最优或仅仅是一个合理的解决方案。您可以在online source repository for AIMA。
中找到这些方法的实现解决了拼贴问题后,您可以使用与您正在显示的代码类似的代码覆盖图像。