如何转换金字塔平铺文件中的jp2?

时间:2017-03-28 14:45:50

标签: image-processing high-resolution jpeg2000

我有一套完整的幻灯片图片~300-400 MB jp2文件,我希望以金字塔(多分辨率)结构转换它们,使得每个金字塔等级都可以在图块中分解。通过定义这个文件是金字塔结构,但任何想法如何访问特定的分辨率级别和相应的瓷砖?

感谢。

1 个答案:

答案 0 :(得分:1)

如果您正在寻找一种快速简便的解决方案,我会这样做:

$ kdu_expand -i input.jp2 -o output_tmp.tiff

我在这里专门使用kakadu,因为我知道没有其他的实现能够处理如此大的图像。如果你不能使用免费的kakadu二进制文件(仅限学院)并且你买不起许可证价格,你可能想再试一次openjpeg:

$ opj_decode  -i input.jp2 -o output_tmp.tiff

至少你已被警告过了。

无论如何,现在你有一个由VIPS处理的文件,只需:

$ vips output_tmp.tiff pyramid_deflate.tiff --tile --pyramid --compression deflate --tile-width 256 --tile-height 256

这将创建一个瓷砖大小为256x256的金字塔形TIFF(选择您喜欢的尺寸)。我特意选择deflate,因为你没有提到你是否接受有损压缩。

如果你真的不关心有损的人工制品,你应该更喜欢JPEG压缩:

$ vips output_tmp.tiff pyramid_jpeg.tiff --tile --pyramid --compression jpeg --Q 80 --tile-width 256 --tile-height 256

与上述评论相同,我在此选择了80的质量,但您可以在这里设置自己喜欢的品质。

您的原件不太清楚:

  

通过定义这个文件是金字塔结构,但任何想法如何   访问特定的分辨率级别和相应的区块?

这似乎是某种次要问题。在这种情况下,您可以使用openslide API访问特定级别的特定磁贴:

在C:

在Python中:

在Java中:

虽然上述内容可以让您从A点到B点,但这是一项繁重的工作。相反,可以采用更仔细的解决方案,一次一个地小心提取JP2水平,并将它们转换为金字塔形TIFF。由于我不知道这些工具,这个任务可能需要在kakadu代码库和/或VIPS代码库中进行一些编码。