处理 150GB .jp2 图像

发布于 2025-01-10 21:18:02 字数 216 浏览 0 评论 0原文

我下载了一个 150GB 的卫星 .jp2 图像,我一次只想要其中的一小部分。 我将如何将图像平铺为可管理的块?只需提取图像的一部分就足够了。

由于我对 Python 只是有点熟悉,所以我查看了 Pillow 和 OpenCV 库,但由于图像分辨率超出了它们的限制而没有成功。 我还研究了 Openslide for Python,但无法消除错误(无法找到模块“libopenslide-0.dll”)。

I downloaded a 150GB satellite .jp2 image, of which I only want a small section at a time.
How would I go about tiling the image in manageable chunks? Just extracting a part of the image would also be enough.

As I'm only somewhat familiar with Python, I looked at the Pillow and OpenCV libraries, but without success as the image resolution exceeds their limits.
I also looked into Openslide for Python, but couldn't get rid of an error (Could not find module 'libopenslide-0.dll').

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

撩发小公举 2025-01-17 21:18:02

libvips 可以高效处理大图片。

例如,对于这个 2.8gb 测试图像:

$ vipsheader 9235.jp2
9235.jp2: 107568x79650 uchar, 4 bands, srgb, jp2kload
$ ls -l 9235.jp2
-rw-r--r-- 1 john john 2881486848 Mar  1 22:37 9235.jp2

我明白了:

$ /usr/bin/time -f %M:%e \
    vips crop 9235.jp2 x.jpg 10000 10000 1000 1000
190848:0.45

因此,它在 0.5 秒内从 110,000 x 80,000 像素 jp2 图像中取出 1,000 x 1,000 像素块,并且需要不到 200mb 的内存。

有 python、ruby、node 等的绑定,因此您不必使用 CLI。

在 python 中你可以这样写:

import pyvips

image = pyvips.Image.new_from_file("9235.jp2")
tile = image.crop(10000, 10000, 1000, 1000)
tile.write_to_file("x.jpg")

它确实有点依赖于你正在读取的 jp2 图像。有些是直到(!!)并且读出一个部分可能非常慢。

也有 Windows 二进制文件,请查看“下载”页面。

如果您使用的是 Linux,vipsdisp 可以非常快速地查看像这样的巨大图像。

libvips can process huge images efficiently.

For example, with this 2.8gb test image:

$ vipsheader 9235.jp2
9235.jp2: 107568x79650 uchar, 4 bands, srgb, jp2kload
$ ls -l 9235.jp2
-rw-r--r-- 1 john john 2881486848 Mar  1 22:37 9235.jp2

I see:

$ /usr/bin/time -f %M:%e \
    vips crop 9235.jp2 x.jpg 10000 10000 1000 1000
190848:0.45

So it takes a 1,000 x 1,000 pixel chunk out of a 110,000 x 80,000 pixel jp2 image in 0.5s and needs under 200mb of memory.

There are bindings for python, ruby, node, etc., so you don't have to use the CLI.

In python you could write:

import pyvips

image = pyvips.Image.new_from_file("9235.jp2")
tile = image.crop(10000, 10000, 1000, 1000)
tile.write_to_file("x.jpg")

It does depend a bit on the jp2 image you are reading. Some are untiled (!!) and it can be very slow to read out a section.

There are windows binaries as well, check the "download" page.

If you're on linux, vipsdisp can view huge images like this very quickly.

四叶草在未来唯美盛开 2025-01-17 21:18:02

Grok JPEG 2000 工具包
能够解压缩极大图像的区域,例如
您链接到的 150 GB 图像。

示例命令:

grk_decompress -i FOO.jp2 -o FOO.tif -d 10000,10000,15000,15000 -v

解压缩区域(10000,10000,15000,15000)代码> 为 TIFF 格式。

Grok JPEG 2000 toolkit
is able to decompress regions of extremely large images such as
the 150 GB image you linked to.

Sample command:

grk_decompress -i FOO.jp2 -o FOO.tif -d 10000,10000,15000,15000 -v

to decompress the region (10000,10000,15000,15000) to TIFF format.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文