在《TIFF 圖像格式介紹》文章簡(jiǎn)要介紹了 TIFF 圖像結(jié)構(gòu),本文用代碼實(shí)操一下。
演示圖片下載自:https://camelyon17.grand-challenge.org/Data/
用 QuPath 打開圖片载矿,在左邊屬性可看到這個(gè) H&E 圖片是金字塔結(jié)構(gòu)的,存儲(chǔ)了不同分辨率的圖像。
用 Python 也可以看到有多個(gè) pages 每個(gè) page 對(duì)應(yīng)一個(gè)圖像婆芦。
>>> import tifffile
>>> wsi = tifffile.TiffFile("test_001.tif")
>>> wsi
<tifffile.TiffFile 'test_001.tif'>
>>> pages = wsi.pages
>>> len(pages)
9
第一個(gè) page 對(duì)應(yīng)分辨率最高的圖像,它是 tile 存儲(chǔ)形式喂饥,可以查看到 tile 長(zhǎng)寬都是 512.
>>> page0 = pages[0]
>>> page0.tilelength
512
>>> page0.tilewidth
512
使用 .tags
獲取到圖像 metadata 也即 IFD entry. 比如下面我們可以查看 tile 存儲(chǔ)位置(offset)消约,假如自己寫讀取代碼,那么可以根據(jù)位置讀取到 tile 數(shù)據(jù)员帮。
>>> page0_tags = page0.tags
>>> page0_tags["ImageWidth"].value
86016
>>> page0_tags["ImageLength"].value
89600
>>> page0_tags["TileOffsets"].value[0:5]
(16, 3586416, 3596929, 7268478, 7279382)
比較一下不同分辨率圖像大小或粮。
>>> page1 = pages[1]
>>> print(page0.imagelength, page0.imagewidth)
89600 86016
>>> print(page1.imagelength, page1.imagewidth)
44800 43008