2016-06-15 149 views
6

我使用openslide-python打開svs形象,我也碰到了以下問題:不支持TIFF壓縮

>> import openslide as osi 
>> a = osi.OpenSlide('image.svs') 

產生錯誤

TIFFReadDirectory: Warning, Unknown field with tag 347 (0x15b) encountered. 
image.svs: JPEG compression support is not configured. 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/home/manan/anaconda/lib/python2.7/site-packages/openslide/__init__.py", line 154, in __init__ 
    self._osr = lowlevel.open(filename) 
    File "/home/manan/anaconda/lib/python2.7/site-packages/openslide/lowlevel.py", line 178, in _check_open 
    raise OpenSlideError(err) 
openslide.lowlevel.OpenSlideError: Unsupported TIFF compression: 7 

我一直沒能在這個問題上找到任何解決方案;我已經檢查了libopenjpeg和任何其他相關的庫,以確保它們處於各自的最新版本。

+0

你可能想在[問題跟蹤](https://github.com/openslide/openslide到文件的問題-python /問題)。 – Trilarion

+2

看來svs格式是標準TIFF的變體。如果是這種情況,TIFF文件可以包含各種壓縮類型的圖像。如果其他svs文件有效但不是這個,這個問題可能與壓縮有關。有關TIFF壓縮子類型的更多詳細信息,請參閱本文的答案:http://stackoverflow.com/questions/2835538​​9 –

+2

請提供運行環境意味着操作系統和libtiff,libjpeg版本 –

回答

5

如果你看一下代碼: https://github.com/openslide/openslide/blob/7b99a8604f38280d14a34db6bda7a916563f96e1/src/openslide-vendor-generic-tiff.c#L222-L226

if (!TIFFIsCODECConfigured(compression)) { 
    g_set_error(err, OPENSLIDE_ERROR, OPENSLIDE_ERROR_FAILED, 
       "Unsupported TIFF compression: %u", compression); 
    goto FAIL; 
} 

你會看到它使用libtiff:功能TIFFIsCODECConfigured由底層libtiff庫提供的(見man page)。

壓縮標記設置爲7;這是罕見支持的JPEG ('new-style' JPEG)壓縮方案 - 有時也稱爲JPEG-in-TIFF;您需要安裝編解碼器。

如果你仍然有幻燈片,並使用例如柯達成像,那麼您可以使用不同的壓縮方式再次掃描它們;但那將是一種回溯式的方式。嘗試添加編解碼器並在libtiff中啓用它可能會更容易。

libtiff documentation

JPEG壓縮

支持由JPEG_SUPPORT控制。 libtiff附帶的JPEG編解碼器專用於Independent JPEG Group免費提供的軟件發行版的第5版或更高版本。這個軟件可以從目錄ftp.uu.net:/graphics/jpeg/中檢索。

因此,支持是可選的,您可能需要重建libtiff(請參閱instructions)。

默認情況下未配置JPEG支持。

參考文獻:

+0

非常感謝您提供了一個極好的研究答案! –