【问题标题】:Stick Images together将图像粘贴在一起
【发布时间】:2010-11-17 10:43:06
【问题描述】:

我刚刚尝试使用Google Map Buddy 从谷歌地图获取卫星图像。此应用程序首先从谷歌地图下载小图像,然后将它们粘贴到新图像中。我不得不等待大约 2 个小时才能将图像下载到我的计算机上,看起来它下载了所有图像(22,194 张图像),但随后应用程序告诉我它无法将它们粘在一起。当我再次启动应用程序时,虽然这个应用程序会重用我的电脑上的图像,但它会再次开始下载它们。所以我不得不停止这个过程,问你们,伙计们,你们知道我怎么能把这个谜题放在一起吗。

这些图像的命名模式如下:

x=92651y=48130zoom=17.png
x=92652y=48130zoom=17.png
x=92653y=48130zoom=17.png
x=92654y=48130zoom=17.png
x=92655y=48130zoom=17.png
...
...
x=92664y=48131zoom=17.png
x=92665y=48131zoom=17.png
x=92666y=48131zoom=17.png
x=92667y=48131zoom=17.png
...
...
x=92689y=48132zoom=17.png
x=92690y=48132zoom=17.png
x=92691y=48132zoom=17.png
x=92692y=48132zoom=17.png
x=92693y=48132zoom=17.png

如何使用一些简单的脚本语言以编程方式将它们组合在一起?我可以访问 Mac 和 Windows 系统,并且可以安装任何简单的脚本语言。

谢谢

【问题讨论】:

  • Google 地图使用条款不允许这样做吗?

标签: google-maps image image-processing batch-file


【解决方案1】:

您可以将PythonPython Imaging Library (PIL) 一起使用。

首先我会列出文件名及其坐标。使用正则表达式从文件名中提取整数坐标并将它们存储在字典列表中:

>>> filename = 'x=92664y=48131zoom=17.png'
>>> imagePattern = re.compile(r'^x=(\d{5})y=(\d{5})zoom=17.png$')
>>> x,y = map(int, imagePattern.search(filename).groups())
>>> {'x':x, 'y':y, 'filename':filename}
{'y': 48131, 'x': 92664, 'filename': 'x=92664y=48131zoom=17.png'}

拥有一个字典列表,您可以根据任一维度对它们进行排序:

tileListSortedByX = sorted(tileList, key = lambda i: i["x"])

并过滤它们:

fileListWhereX48131 = [tile for tile in tileList if tile["x"]==48131]

通过这两个操作,您可以轻松想象 for 循环逐行遍历图块。

您需要创建一个大的空图像(使用 PIL),然后将小图块图像粘贴到其中。它的大小将是图块大小的倍数。

>>> from PIL import Image
>>> bigImage = Image.new('RGB',(300,300),(255,255,255))
    #creates a white 300x300 image

将小图像粘贴到大图像中如下所示:

>>> smallImage = Image.open(tile["filename"])
>>> bigImage.paste(smallImage,(0,0))   

希望你能明白。

【讨论】:

    【解决方案2】:

    “将图像粘贴在一起”的过程通常称为“拼接”或“马赛克”。

    我在 Wikipedia 文章“Comparison of Photo Stitching Applications”上找到了许多执行此操作的应用程序列表。

    已编辑:删除了我找到的单个应用程序的链接,并替换为维基百科的软件列表。

    【讨论】:

    • 请注意,像这样的程序可能需要您手动定位数百个瓷砖 - 取决于他想要多大的区域。
    • 是否可以在 Mac 中使用某些命令行或自动机以编程方式进行
    • 我相信这就是“匹配模​​式”列中的“自动”值在比较中的用途。
    • 拼接通常需要图像之间的重叠,因为照片拼接应用程序匹配通用特征来覆盖它们。在 Google 的情况下,我怀疑这些图像彼此整齐地贴合,但没有重叠,这使得整个拼接过程无法解决。
    • 对于大多数“照片拼接应用程序”,它确实是必需的。它们旨在用于从重叠的照片创建全景图。您发布的链接是关于从电动显微镜拼接图像。
    猜你喜欢
    • 2011-03-20
    • 1970-01-01
    • 2013-01-12
    • 2017-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多