問題タブ [simpleitk]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 画像のレジストレーション/位置合わせと変換は、ピクセル レベルでどのように機能しますか?
画像登録/位置合わせの基本的なフローまたはプロセスは知っていますが、2 つの画像が位置合わせ/位置合わせされるとピクセル レベルで何が起こるか、つまり、固定画像に変換される動画の類似ピクセルはそのまま保持されますが、そのピクセルはどうなりますか?一致していませんか、それらは平均化されていますか、それとも何か他のものですか?
また、正しい変換手法はどのように推定されますか。つまり、平行移動、スケーリング、回転などを適用するかどうか、および適用する量 (つまり、回転の角度の値、平行移動の値など) をどのように知ることができますか?
また、最初のステップで、類似したピクセル値がどのように識別され、一致するのでしょうか?
https://simpleitk.readthedocs.io/en/master/Examples/ImageRegistrationMethod1/Documentation.htmlにある python コードを実装しました。
入力画像は前立腺 MRI スキャンのものです。
違いは、右上と左上の出力画像で確認できます。しかし、コンソールの出力と、物事が実際に内部でどのように機能するかを解釈することはできません。
このことについて深い説明をいただけると大変助かります。ありがとうございました。
c# - PNG として保存すると DICOM スライスが破損する
SimpleITK を使用して DICOM を読み取り、特定のスライスを PNG ファイルとして保存しています。新しい DICOM ファイルをディスクに正常に書き戻すことができ、期待どおりに見えます。しかし、他の形式で保存しようとすると、大きく破損します。つまり、入力のようには見えず、完全に文字化けしています。
コードは次のとおりです。
画像のバッファを取得し、それを使用して BitMap を作成すると、同じ問題が発生します。1 つのファイルの代わりに DICOM シリーズ (私の最終的な目標) を読み取り、3D ボリュームを使用してその方法でスライスを抽出することにも同じ問題があります。
私は何が欠けていますか?
編集: を使用PixelIDValueEnum.sitkUInt16
すると の出力が大幅に改善されますがImageFileWriter
、コントラストがオフになり、詳細が失われます。バッファを BitMap に変換して PNG として保存することはまだできません。このコードは依然として破損したデータを作成します。
すべてのPixelFormat.16bpp*
値を試してみましたが成功しませんでした。ビットマップを保存したときよりも ImageFileWriter の出力が 50% 以上大きいため、一部のデータが失われているはずです。
悪いビットマップは次のとおりです。
python - scipy.ndimage.zoom 以外に 3D ボリュームのサイズを変更/再サンプリングするより高速な方法はありますか?
3D ボリュームのサイズを変更/再サンプリングする機能があることは知っていますがscipy.ndimage.zoom
、それは numpy.array 用であり、悪名高いほど遅いです。したがって、代わりにResampleImageFilter
fromを使用しSimpleITK
ます。C++ simpleitk をベースにした方がはるかに高速に動作すると思います。
しかし、simpleitk を使用してリサンプリングすることに小さな欠陥があります。ResampleImageFilter
SimpleITK.Image では機能しますが、numpy.array では機能しないため、さらに操作を行うのはかなり不便です。3D ボリュームをリサンプリングする他の方法はありますか?
EDIT
なぜ私がこの懸念を抱いているのかというと、SimpleITKのリサンプリングの高速性を利用したいのですが、その間、コードをきれいに保ちたいからです。たとえば、ボリュームに対してバイナリしきい値を実行してから、全体を再サンプリングする必要があります。これが私の解決策です
しかし実際には、numpy を使用してバイナリしきい値を実行するのは、ロジック インデックスを使用する方がはるかに簡単であり、コードをよりコンパクトにすることができます。
要約すると、SimpleITK のリサンプリングを最大限に活用したいのですが、いくつかの操作は numpy の方がうまくいくので、コードが SimpleITK と numpy の両方と少し絡み合ってしまいます。そして、それは良いことだとは思いません。