医用画像処理用のsvs形式

SVSデータフォーマットとは何ですか?

TIFF (Tagged Image File Format) は、画像を保存するためのファイル形式です。TIFF ファイルは、複数の「ページ」または画像、およびさまざまな保存形式と圧縮方法をサポートしています。このようなストレージ形式の 1 つは、Tiled TIFF ストレージ形式と呼ばれます。

        タイル化 TIFF: タイル化 TIFF 画像は、同じサイズ (通常は 256 × 256 ピクセル) の多数の正方形のタイルで構成されます。Tiled 形式の利点は、単一の大きな (巨大な) モノリシック画像を読み込むのではなく、絶対に必要な画像のみを読み込むことで、非常に大きな画像を効率的に読み込んで表示できることです。

        SVS: SVS ファイルは、スライド ラベル、概要画像、およびスキャンされたスライドの縮小されたいくつかのコピーを含む追加のページ (画像) を含むタイル状の TIFF 画像です。

当社では、顕微鏡スライドからスキャンされた関心領域 (ROI) を含む画像フォーマットを指すために「全体スキャン画像」(WSI) という用語を使用します。通常、フル スキャン画像は非常に大きくなります。画像のピクセルは約 100,000 × 100,000 で、画像のサイズは通常 60M ~ 1.5G ですがこれらのファイルは大きすぎてほとんどのコンピューターのメモリに収まりません。したがって、jpg、png、bmp などの従来の画像形式は、このような画像の保存に使用できません。タイル化された TIFF ファイルは、これらの画像を小さな正方形の「タイル」に分割することを提案しています。

OpenSlide デモはオンラインの写真があります。

全体スキャン画像(WSI)では 3 つの異なるファイル形式を作成できます。

  • ディープズーム
  • タイル状 TIFF (SVS)
  • イージーズーム(SZI)

  SVS を共通フォーマットに変換する

1. OpenCV の試行が失敗しました: svs ファイル サイズが範囲外です×

“ cv2.error: OpenCV(3.4.2) /io/opencv/modules/imgcodecs/src/loadsave.cpp:74: error: (-215:Assertion failed) pixels <= (1<<30) in function 'validateInputImageSize' ”,

 2. OpenSlide(openslide-python) : https://openslide.org/
OpenSlide は、Python インターフェイスを備えたオープンソースの C ライブラリで、非常に使いやすいです。openslide の具体的な使用方法については、Baidu 自身で行うことができます。リンクは次のとおりです: https://blog.csdn.net/weixin_41787032/article/details/79817926

# 将.svs转化成.tif
import openslide
import numpy as np
import scipy.misc
 
test = openslide.open_slide('test.svs')
 
img = np.array(test.read_region((0, 0), 0, test.dimensions))
scipy.misc.imsave('test.tif', img)

 デメリット:高解像度の画像を丸ごと保存すると、画像サイズが何倍にも大きくなります(tiff形式で保存されるため約10倍になりますが、jpg形式だと確かに画像は小さくなりますが、ただし、これは非可逆圧縮です。PNG も良い選択であると考えてください)。これは、画像の最大解像度を維持できるように、レベル = 0 の下の寸法が取得されるためです。ただし、同時に、画像が大きい場合や、コンピューターのパフォーマンスがわずかに低下すると、コンピューターがスタックするか、MemoryError エラーが報告される可能性があります。

3. libvips(pyvips) : http://jcupitt.github.io/libvips/API/current/Examples.md.html
libvips も C ライブラリですが、pyvips と呼ばれる Python インターフェイスもあります。公式を参照してください。使用方法のドキュメント: https://libvips.github.io/pyvips/。

コードは次のとおりです。

import pyvips
 
img = pyvips.Image.new_from_file('test.svs', access='sequential')
img.write_to_file('test.tif')

        長所: 直接読み取り、保存します。保存に失敗することはありません。つまり、メモリエラーなどの保存に失敗する現象が発生しません。

        欠点: 保存後の画像のサイズは依然として非常に大きくなります。

 SVSの表示

1. pyvips ライブラリを使用して、svs ファイルを dzi ファイル形式に変換し、保存します。

import pyvips
 
img = pyvips.Image.new_from_file('test.svs', access='sequential')
img.dzsave('test')

上記のコードを実行すると、test.dzi、test_files という 2 つのファイルが生成されます。前者は 1 つのファイルで、後者は、異なる解像度の svs ファイルのスライスと test.dzi 内のファイルを保存するフォルダーです。内容は以下の通りです。

<?xml version="1.0" encoding="UTF-8"?>
<Image xmlns="http://schemas.microsoft.com/deepzoom/2008"
  Format="jpeg"
  Overlap="1"
  TileSize="254"
  >
  <Size 
    Height="32893"
    Width="46000"
  />
</Image>

2. OpenSeaDragon ライブラリをダウンロードし、HTML ファイルを生成します

① dzi ファイルを表示するには、OpenSeaDragon という Java ライブラリ (https://openseadragon.github.io/examples/tilesource-dzi/) があります。OpenSeaDragon をダウンロードし、ローカルの任意のフォルダーに解凍し、openseadragon に名前を変更します。

②html ファイルも必要です (出典: https://blog.csdn.net/qianqianyixiao1/article/details/50420398)。ここでは test.html という名前で、内容は次のとおりです。

 
<!DOCTYPE html>
<html lang='en'>
 
<head>
    <meta charset='UTF-8'>
    <title>OpenSeadragon_Demo0</title>
    <script src='../openseadragon.min.js'></script>
</head>
 
<body>
    <div id='openSeadragon1' style='width:1850px; height:960px;'></div>
</body>
 
 
<script type='text/javascript'>
    OpenSeadragon({
        id: 'openSeadragon1',
        prefixUrl: '../images/',
        tileSources: {
            Image: {
                xmlns: 'http://schemas.microsoft.com/deepzoom/2008',
                Url: './test_files/',
                Overlap: '1',
                TileSize: '254',
                Format: 'jpeg',
                Size: {
                    Height: '32893',
                    Width: '46000'
                }
            }
        }
    });
</script>
 
</html>

内部のデータを dzi ファイル内のデータに置き換えることを忘れないでください。そうすれば、test.dzi ファイルを削除できます。

3. test.html フォルダーと test_files フォルダーを同じディレクトリ (ここでは、ディレクトリ名はzoomFiles) に配置し、それらを openseadragon フォルダーに配置します。次に、test.html ファイルをクリックし、Web ページをクリックします。対応する結果を表示できます。

おすすめ

転載: blog.csdn.net/weixin_45958695/article/details/127769773