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