GE Healthcare Voluson のマシンで作成された「4Dボリュームシネ」超音波スキャン(3Dスキャンの時系列)があります。ファイルは古い独自仕様の.V00
フォーマット。
これから通常のメディアプレーヤーで再生できるビデオファイルを作成したいと思います。理想的には無料で入手できるツールを使用して、それを行う方法は?
.V00
ファイルは、「Kretzfile」/「Kretz3D超音波画像」形式[ ソース ]です。 GE HealthcareとKretzの関係は、「2001年にGE MedicalSystemsがMedisonからKretztechnikAGの主要な株式を取得し、KretztechnikAGがGEMedical Systemsの完全子会社になった」ためです[ 出典 ]。
使用できます 4Dビュー 。これは、GEHealthcareがVoluson超音波イメージングマシン用に提供する「公式」PCソフトウェアです。それを使用してビデオにエクスポートする方法のプロセス例:
.avi
形式にエクスポートします。あなたが得るものは 4Dビューで再生 のように見えるはずです、ちょうどすべてのレタリングなしで。ビデオから巨大な黒い境界線を削除し、エクスポートされた複数のビデオを接続し、すべてを小さなMP4形式に変換するには、Linuxシェルで次の ffmpeg
コマンドを実行できます。エクスポートされた、圧縮されていない.avi
ファイルだけが含まれているディレクトリにいる間:
ffmpeg \
-i concat:"$(ls -l *.avi | awk 'BEGIN {ORS="|"} { print $9 }')" \
-filter:v "crop=400:380:332:175" \
-r 25 \
-crf 18 \
output.mp4
これは いくつかその他回答 に基づいています。代わりに avconv
がある場合は、同じパラメーターで機能します。 x = 332、y = 175で始まる400×380ピクセルのコンテンツ(つまり、約1068×740ピクセルのビデオを中心とする)を想定しています。必要に応じて、静止フレームで測定することにより、crop=
パラメータ値をケースに適合させます。 。 -crf 18
は、デフォルトの-crf 23
よりも高い品質を選択しますが、ファイルサイズが大きくなります。品質の向上が見られるかどうかは疑問ですが…
アーカイブの目的で、個々のAVIビデオ(圧縮されていない場合は巨大です!)を連結せずに、ニースのロスレスまたはほぼロスレスの形式で保存し、無駄な黒い境界線を削除することをお勧めします。
for file in *.avi; do
ffmpeg \
-i $file \
-c:v libx264 \
-preset veryslow \
-crf 1 \
-r 25 \
-filter:v "crop=400:380:332:175" \
${file/.avi/.mp4};
done
これは、量子化値1(-crf 1
)のH.264を使用します。これは、ロスレス[ source ]に非常に近く、元の非圧縮AVIの25分の1です。代わりに-crf 0
以上の-qp 0
を使用することもできます。これにより、真にロスレスのH.264が得られます。それは約20%大きく、すべてのプレイヤーがそれを読むことができるわけではありません[ 詳細 ]。しかし、VLCとYouTubeは、たとえばできます。
4Dビューの取得とインストールに関するヒント:
.avi
ファイルにエクスポートできるようですが、私は60日間のデモでしか試しませんでした。V00ファイルの変換に関する詳細と連絡先は このcomp.protocols.dicomスレッド にあります。背景情報については、 Voluson S6/S8サービスマニュアル もあります。テストのために、ここに見つけるのが難しい Kretzfile形式の3Dスキャン ダウンロード用;ただし、3Dのみであるため、4Dビューでの4Dから.avi
への変換は許可されません。
不可能: 4DTheFetusView 。このツールは2005バージョンの4D Viewと同じであり、引き続き無料でダウンロードできます。ただし、 sonoworld.com を介して共有されたデモボリュームを開くためにのみ使用できます。これらの4Dデモボリュームは、いくつかの それらのケース ( this 、 this 、 this )に添付されていましたがダウンロードできなくなりました。
不可能: DICOMatic 。これは無料でダウンロードできる変換ツールであり、多数の独自の医用画像フォーマットを新しいものに変換できます。標準フォーマット [〜#〜] dicom [〜#〜] 。未登録のバージョンがエクスポートされた画像に透かしを入れるというだけです[ ソース ]。 DICOMから、無料で利用できるツール MicroDICOM または DICOM Cine Viewer を使用して、ビデオファイルをエクスポートできます。ただし、GE KretzFile形式の場合、DICOMaticは、「DICOMは超音波画像の3Dボリュームをサポートしていません」[ ソース ]と述べています。 DICOMaticで.V00ファイルを開こうとすると、極座標をサポートしていないというメモが表示されました。おそらくそれは、3Dボリュームがサポートされていない(?)と言っているのと同じです。したがって、(私にとっては)機能しませんでしたが、製造元は機能するはずだと言っています[ ソース ]。
不可能: TomoVision およびスクリーングラバー。TomoVisionは医用画像形式のビューアであるため、.V00シーケンスをレンダリングできる場合、スクリーングラバーでビデオに変換することができます。ただし、DICOMatic [ source ]と同じライブラリを使用しているため、4Dボリュームを読み取ることもできません。繰り返しになりますが、メーカーはそれが可能であるはずだと主張しています[ ソース ]。
3DSlicerにGE/Kretz3D超音波画像リーダーを実装しました。画像を読み込んだ後、3Dスライサーのすべてのすばらしいツールを使用して画像を視覚化および処理できます(たとえば、3D印刷可能なモデルを作成するため)。ここでデモを見ることができます:
まだ完全ではありませんが(球形からデカルト座標への変換は完全には正確ではありません)、完全に無料でオープンソースです。修正と改善を歓迎します。詳細と質問については、3Dスライサーフォーラムに投稿してください。
https://discourse.slicer.org/t/loading-of-ge-kretz-ultrasound-volumes-vol-file/808/14?u=lassoan
圧縮を有効にせずに(ウェーブレット= 'オフ')、ボリューム/未加工ファイルを選択してVolusonファイルをエクスポートしたと仮定して...このスクリプトを使用して、データがサードパーティのDICOM形式であるかどうかを確認してください。これは、データを使用可能な形式に再構築しませんが、要素データにアクセスできるかどうかを示します。
import struct
import sys
class GETagAnalyser(object):
def __init__(self,fname):
self.m_fname = None
if fname is not None:
self.m_fname = fname
self.m_tagdict = []
def readAllTags(self):
with open(self.m_fname,'rb') as f:
hdr = f.read(16)
print hdr
#find end
f.seek(0,2)
fend = f.tell()
print fend
#back to start
f.seek(16,0)
while f.tell() <= fend-4:
t1,t2,s,tag_data,f = self.readNextTag(f)
#self.m_tagdict
print hex(t1), hex(t2),s
#print t1, t2, s
def readNextTag(self,f):
firsttag = f.read(2)
firsttag = struct.unpack('@H',firsttag)
secondtag = f.read(2)
secondtag = struct.unpack('@H',secondtag)
size = f.read(4)
size = struct.unpack('@I',size)
data = f.read(size[0])
tag1,tag2,size,data = firsttag[0],secondtag[0],size[0],data
return tag1,tag2,size,data,f
def main():
if len(sys.argv) != 2:
print "Usage: GETagAnalyser <inputfile>"
return
g = GETagAnalyser(sys.argv[1])
#print sys.argv[1]
g.readAllTags()