首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python jp2医学图像-喜鹊,甘露糖

Python jp2医学图像-喜鹊,甘露糖
EN

Stack Overflow用户
提问于 2017-04-19 07:58:18
回答 4查看 5.6K关注 0票数 10

我正在尝试读取和平铺一个jp2图像文件。图像为RGB 98176 x 80656像素(它是医学图像数据)。

当尝试用glymur读取图像时,我会得到以下错误:

代码语言:javascript
复制
glymur.lib.openjp2.OpenJPEGLibraryError: OpenJPEG library error:  Prevent buffer overflow (x1: 80656, y1: 98176)

我知道这张照片太大了。我需要的是通过砖块读取图像数据,并将它们保存到其他地方并以另一种格式保存。

Glymur允许我使用python读取头部,因此,例如,代码流是:

代码语言:javascript
复制
>>> print(codestream.segment[1])
SIZ marker segment @ (87, 47)
    Profile:  no profile
    Reference Grid Height, Width:  (98176 x 80656)
    Vertical, Horizontal Reference Grid Offset:  (0 x 0)
    Reference Tile Height, Width:  (832 x 1136)
    Vertical, Horizontal Reference Tile Offset:  (0 x 0)
    Bitdepth:  (8, 8, 8)
    Signed:  (False, False, False)
    Vertical, Horizontal Subsampling:  ((1, 1), (1, 1), (1, 1))

打瓷砖不起作用,阅读方法不起作用。

编辑:

我也尝试过能够读取标题,但同样的事情,出现的错误是:

代码语言:javascript
复制
>>> import scipy.misc
>>> image=scipy.misc.imread('Sl0.jp2')
/home/user/anaconda2/lib/python2.7/site-packages/PIL/Image.py:2274: DecompressionBombWarning: Image size (7717166080 pixels) exceeds limit of 89478485 pixels, could be decompression bomb DOS attack.
  DecompressionBombWarning)
>>> scipy.misc.imwrite('/home/user/Documents/imageCfromjp2.tif',image)
/home/user/
AttributeError: 'module' object has no attribute 'imwrite'
>>> scipy.misc.imsave('/home/user/Documents/imageCfromjp2.tif',image)
/home/user/
  File "/home/user/anaconda2/lib/python2.7/site-packages/scipy/misc/pilutil.py", line 195, in imsave
    im = toimage(arr, channel_axis=2)
  File "/home/user/anaconda2/lib/python2.7/site-packages/scipy/misc/pilutil.py", line 287, in toimage
    raise ValueError("'arr' does not have a suitable array shape for "
ValueError: 'arr' does not have a suitable array shape for any mode.
>>> image2=image[0:500,0:500]
/home/user/
IndexError: too many indices for array
>>> image2=image[0:500]
/home/user/
ValueError: cannot slice a 0-d array

是否有任何方法将图像数据流到不同类型的容器中,以便索引的数量不成问题,并使我能够处理它?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-04-20 10:38:05

阅读巨大的医学图像的标准是开环内酯,我会先试一试。我不确定它是否会直接读取jp2,但假设这是从幻灯片扫描仪获得的,那么您是否可以将其保存在openslide支持的一种格式中?

ImageMagick将通过OpenJPEG加载大型jp2图像的部分,尽管它不是特别快。例如,我这里有一个10k×10k的jp2图像,如果我转换为JPG,我会看到:

代码语言:javascript
复制
$ time convert sekscir25.jp2 x.jpg
real    0m25.378s
user    0m24.832s
sys 0m0.544s

如果我试着弹出一小块,这几乎不会更快,这意味着IM总是解码整个图像:

代码语言:javascript
复制
$ time convert sekscir25.jp2 -crop 100x100+0+0 x.png
real    0m19.887s
user    0m19.380s
sys 0m0.504s

但如果我在载重时收割,它确实会加速:

代码语言:javascript
复制
$ time convert sekscir25.jp2[100x100+0+0] x.png
real    0m7.026s
user    0m6.748s
sys 0m0.276s

不太好,但如果你有耐心的话,也许会管用的。

票数 4
EN

Stack Overflow用户

发布于 2017-05-22 10:54:45

我在使用幻灯片扫描仪的文件时也面临着同样的问题。我发现有用的是使用vipsopenslide使用以下命令平铺图像:

代码语言:javascript
复制
vips dzsave image.mrxs targetdirectoryname --depth one --tile-size 2048 --overlap 0

这将输出0级(完全分辨率)的源图像的瓦片大小和像素重叠的0到目标目录。

票数 5
EN

Stack Overflow用户

发布于 2017-05-24 06:59:04

你试过用开胸片吗。

代码语言:javascript
复制
import openslide
from openslide.deepzoom import DeepZoomGenerator
osr=openslide.OpenSlide('JP2.svs')
im=osr.get_thumbnail((200,200))
im.save('test.jpg')
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43489810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档