DICOM ファイルを TIFF に変換

2017-10-16 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
前(2017-10-13)の記事「MRIConvert 使って DICOM から TIFF に変換」では、
  ・・・・・
  ・・・・・
  .dcmファイルを入力して、
  .niiファイル経由で、
  16bit .tifファイルに変換する。

  条件としては:
  ・・・・・
  ・・・・・
  ・・・・・

と云うことで、一応のモノが出来た。

だが、
先月(2017-09-13)の記事「DICOM 学習:ファイル読み込み
で書いたコードを流用すれば、.niiファイル経由もイラナイ?

と云うことで、作ってみた:
----- DICOM_to_TIFF.gsl -----
require'pl'; require'cv2_a'; SF = string.format
int16 = |x| ffi.cast( 'int16_t*', x )
uint16 = |x| ffi.cast( 'uint16_t*', x )
uint32 = |x| ffi.cast( 'uint32_t*', x )

ReadUInt16 = || uint16( IN:read(2) )[0]
ReadUInt32 = || uint32( IN:read(4) )[0]
ReadChars = |n| IN:read(n)

Fname = 'x.dcm'; IN = io.open( Fname, 'rb' ) -- サンプルデータ --

-- 先頭 128 バイトは Preamble ( all ゼロ )
-- 次の4バイトは:'DICM'

zzz = IN:read(128); fid = IN:read(4)
if fid ~= 'DICM' then
print( 'Not a DICM' ); _=io.read(1); os.exit()
end

------------------ 参考サイトの C# コードから・・・
g = ReadUInt16()
while g == 2 do
e = ReadUInt16();
vr = ReadChars(2)
if vr == 'AE' or vr == 'AS' or vr == 'AT' or vr == 'CS' or
vr == 'DA' or vr == 'DS' or vr == 'DT' or vr == 'FL' or
vr == 'FD' or vr == 'IS' or vr == 'LO' or vr == 'PN' or
vr == 'SH' or vr == 'SL' or vr == 'SS' or vr == 'ST' or
vr == 'TM' or vr == 'UI' or vr == 'UL' or vr == 'US'
then
length = ReadUInt16()
else -- Read the reserved byte
_ = ReadUInt16()
length = ReadUInt32()
end
----- print( g, e, vr, length, SF('%X',IN:seek()) ) -- デバッグ用
val = ReadChars(length)
g = ReadUInt16()
end

------------------- 以下部分を追加/流用

while g==8 or g==16 or g==24 or g==32 or g==40 or g==64 or g==28677 do
e = ReadUInt16();
length = ReadUInt32()
----- print( g, e, vr, length, SF('%X',IN:seek()) ) -- デバッグ用
val = ReadChars(length)

----------------
if g==40 then
if e==0x0010 then xx = uint16(val)[0] end
if e==0x0011 then yy = uint16(val)[0] end
if e==0x0100 then bpp= uint16(val)[0] end
end
----------------

g = ReadUInt16()
end

IN:close()

if bpp ~= 16 then print( 'Not 16bits' ); _=io.read(1); os.exit() end

-----------------------------------------------
_=path.currentdir() -- 'pl' で 'lfs' を使う為の準備
SZ = lfs.attributes( Fname, 'size' ) -- ファイルサイズ

IN = io.open( Fname, 'rb' )
zzz = IN:read( SZ - xx*yy*2 )
AT = uint16( IN:read('*a') ) -- Read xx*yy*2
IN:close()

require'cv2_a'
tif = cv2.cvCreateMat( yy, xx, CV_16UC1 )
BT = ffi.cast( 'uint16_t*', tif.Byte )

for n=0,xx*yy-1 do
BT[n] = AT[n] + 0x8000 ------------------
end

if string.find( Fname, 'dcm' ) ~= nil then
FN = string.gsub( Fname, '.dcm', '.tif' )
else
FN = Fname..'.tif'
end
cv2.cvSaveImage( 'o-'..FN , tif, 0 )
これで、・・・・・

これで、
.dcmファイルを 16 bit TIFFファイルに変換。
そこそこ汎用で???


本日はここまで。


DICOM 学習は続く?


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


170822,1005
スポンサーサイト

MRIConvert 使って DICOM から TIFF に変換

2017-10-13 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
前々回(2017-10-09)の記事「MRIConvert files / mcverter」で書いた如く、
  ・・・・・
  ・・・・・
  結論としては、<紙>的には
  .dcmファイルを、.niiファイルに変換するのなら、
  “MRIConvert”のmcverter.exeで決まりでしょうか。
  ・・・・・
  ・・・・・

と云うことで、

.dcmファイルを入力して、
.niiファイル経由で、
16bit .tifファイルに変換する。

条件としては:

入力 DICOM 画像は、
16ビットで、リトルエンディアン(little-endian)
そして、(多分)無圧縮

画像サイズは、(多分)任意
そして、カレントに「mcverter.exe」と、
対象の“.dcm”ファイルを置く。


テストデータとして、例の 'x.dcm' を入力し、
結果は 'x.tif' とする。
中間に 'x.nii' を作る。

そう云うことで、出来たコードは:
----- dcm_nii_tiff16.gsl -----
in_DICOM, out_TIFF = 'x.dcm', 'x.tif'
tmpF, tmp_nii = 'x', 'x.nii'
--============================================
require'pl'; require'cv2_a'

Byte = |x| ffi.cast( 'uint8_t*', x )
uint16 = |x| ffi.cast( 'uint16_t*', x )

ppp = string.format( '/o . /F %s /f nifti /n %s', tmpF, in_DICOM )
os.execute( 'mcverter.exe ' .. ppp )

_=path.currentdir() -- 'pl' で 'lfs' を使う為の準備
SZ = lfs.attributes( tmp_nii, 'size' ) -- ファイルサイズ

IN = io.open( tmp_nii, 'rb' )
ptr = Byte( IN:read(SZ) ); IN:close()

H = uint16( ptr ); xx, yy = H[21], H[22]

-------------------------------------------
AT = uint16( ptr + SZ - xx*yy*2 )

require'cv2_a'
tif = cv2.cvCreateMat( yy, xx, CV_16UC1 )
BT = ffi.cast( 'uint16_t*', tif.Byte )

for n=0,xx*yy-1 do
BT[n] = AT[n] + 0x8000 --------------
end

cv2.cvSaveImage( out_TIFF , tif, 0 )

file.delete( tmp_nii )
file.delete( tmpF..'_info.txt' )
と云うことで良さそう。

備考:
(1) コードの途中で:
   _=path.currentdir() -- 'pl' で 'lfs' を使う為の準備
  とあるが、・・・
  コメントの通り、
  requireするのは、plだけだが、
  LFSを使いたい為、pl.pathを(ダミーで)使う。
  ( pl.path モジュールは、LFS を使っている )

(2) 配列 AT は、
  読み込んだファイルの後ろから必要数としている。

(3) 画像データ値は、
  符号付の -2048~1965 じゃなくて、
  符号無しの 30720~34733 となる。


本日はここまで。


DICOM 学習は続く?


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


170925

nii ファイルとは何?

2017-10-11 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
このところ、“DICOM 学習”を行っている???

そこには、拡張子が“.nii”のファイルが出てくる。

ここで、
改めて“.nii”ファイルについて学習した。


以前(2017-09-25)の記事:
… XMedCon:The project stands for Medical Image ・・・」で、
変換先のフォーマットとして、
“nifti”即ち、NIfTI Analyze を指定すると
.niiファイルが出来た。


それで、手始めに
DICOM NifTI format」で検索してみた。

最初のページでは、・・・

 ・DICOM to NIfTI converter, NIfTI tool and viewer - File Exchange ...
 ・Siemens DICOM sort and convert to NIfTI - File Exchange - MATLAB ...
 ・dcm2nii DICOM to NIfTI conversion - Center for Advanced Brain ...
 ・SPM/DICOM - Wikibooks, open books for an open world
 ・NIfTI-1 FAQ - Neuroimaging Informatics Technology Initiative - NIH
 ・The NIFTI file format | Brainder.
 ・dcm2nii DICOM to NIfTI conversion
 ・Tutorial 2: Converting and preparing data - MRI-TUTORIAL.COM
 ・dicomnifti - converts DICOM files into the NIfTI format - Debian ...
 ・How can one convert Nifti to DICOM for DTI images? - ResearchGate

と云ったように、
“DICOM”から“NIfTI”への変換に関するモノが多い?


ならばと、
NIFTI file format」で検索してみた。

最初のページでは、・・・

 ・NIfTI-1 Data Format - Neuroimaging Informatics Technology Initiative
 ・NIfTI-1 header file - NIH
 ・NIfTI-1 FAQ - Neuroimaging Informatics Technology Initiative - NIH
 ・NIfTI: - Neuroimaging Informatics Technology Initiative
 ・NIfTI-1 File Format - NIH
 ・NIfTI-1 Test Data Sets - Neuroimaging Informatics Technology ...
 ・The NIFTI file format | Brainder.
 ・The NIFTI-2 file format | Brainder.
 ・the nifti-1 data format - NITRC
 ・NIfTI conversion (volumetric files) - BrainVoyager Support

と云ったようなページが見つかる。

中から適当に
The NIFTI file format | Brainder.」を選んで見てみた。

  The Neuroimaging Informatics Technology Initiative (nifti) file format
 was envisioned about a decade ago as a replacement to the then widespread,
 yet problematic, analyze 7.5 file format.
  The main problem with the previous format was perhaps the lack of
 adequate information about orientation in space,
 such that the stored data could not be unambiguously interpreted.
  Although the file was used by many different imaging software,
 the lack of adequate information on orientation obliged some,
 most notably spm, to include, for every analyze file,
 an accompanying file describing the orientation,
 such as a file with extension .mat.
  The new format was defined in two meetings of the so called
 Data Format Working Group (dfwg) at the National Institutes of Health (nih),
 one in 31 March and another in 02 September of 2003.
  Representatives of some of the most popular neuroimaging software agreed
 upon a format that would include new information, and upon using the new
 format, either natively, or have it as an option to import and export.
=== Google 翻訳
  Neuroimaging Informatics Technology Initiative(nifti)ファイル
 フォーマットは、10年ほど前に広まっているがまだ問題の多い7.5の
 ファイルフォーマットの代わりに考えられていた。
  以前の形式の主な問題は、おそらく、宇宙での向きに関する適切な情報が
 不足していて、記憶されたデータを明確に解釈できないことでした。
  ファイルは多くの異なるイメージングソフトウェアで使用されていましたが、
 オリエンテーションについての適切な情報が不足しているため、
 分析ファイルごとに、拡張子.matのファイルなど、
 オリエンテーションを記述する添付ファイルを含める必要がありました。
  新しいフォーマットは、2003年3月31日、9月2日に国立保健研究所(NIH)で
 開催されたいわゆるデータフォーマットワーキンググループ(dfwg)の
 2回の会議で定義されました。
  最も人気のあるニューロイメージングソフトウェア新しい情報を
 含むフォーマットと、新しいフォーマットを使用したときにネイティブに、
 あるいはインポートとエクスポートのオプションとして
 持っていることに合意しました。


イマイチ<紙>には理解できない点もあるが、

NIfTI とは、
“Neuroimaging Informatics Technology Initiative”
のことですか。


そして、少し下の方に、

 Overview of the header structure
  In order to keep compatibility with the analyze format,
 the size of the nifti header was maintained at 348 bytes
 as in the old format.
  Some fields were reused, some were preserved, but ignored,
 and some were entirely overwritten.
  The table below shows each of the fields, their sizes,
 and a brief description.
  More details on how each field should be interpreted
 are provided further below.
=== Google 翻訳
  分析フォーマットとの互換性を維持するために、古いフォーマットのように、
 niftiヘッダーのサイズは348バイトに維持されていました。
  一部のフィールドは再利用され、一部は保存されましたが無視され、
 一部は完全に上書きされました。
  下の表は、各フィールド、そのサイズ、
 および簡単な説明を示しています。
  各フィールドの解釈方法の詳細については、
 後で詳しく説明します。


<紙>が(ファイルダンプ)を見るに、
348バイトの後に、4バイトの未使用?領域があるようだ。

つまり、先頭から 352バイトのヘッダーに続いて
16ビット・データがあると見てとれる。


ヘッダー情報で欲しいのは、・・・・・

  TYPE  NAME   OFFSET SIZE  DESCRIPTION

  short  dim[8]  40B  16B   Data array dimensions.


ここの、次元数、サイズ(次元分) ですネ。
例えば、 3   512、512、1、・・・


本日はここまで。


DICOM 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


170917

MRIConvert files / mcverter

2017-10-09 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
前(2017-10-06)の記事「dcm2niix:DICOM to NIfTI conversion」では、
  ・・・・・
  ・・・・・
  Important note: dcm2nii is obsolete.
  While I hope it is generally robust and useful,
  active development has moved to dcm2niix.
  ・・・・・
  ・・・・・
などと書いていた。


dcm2nii:MainPage」をよくよく見ていたら、

9 Alternatives

7番目に、
 ・ Jolinda Smith's mcverter is written in C++,
    and has great support for various vendors.
   It attempts to preserve diffusion gradient information.
とある。

この“mcverter”とは?
MRIConvert files

取り敢えず、
MRIConvert-2.1.0-win32.zip
をダウンロードしてみた。

  2016-02-05 付  2.91MB

中には、
2つの .exe ファイル「mcverter.exe」「MRIConvert.exe」と
「~.txt」ファイル2つのみ。

即実行可ダ。

で、<紙>的には「mcverter.exe」1つあれば十分。


例えば、
カレントにある“x.dcm”を入力して、
カレント dir に、NIfTI 形式の“.nii”ファイルを作る
コマンドは
mcverter.exe  /o .  /f nifti  /n  x.dcm
または、
mcverter.exe  --output="."  --format="nifti"  --nii  x.dcm
で出来る。
正確には、
“KH16-6_St6_Sb4-10R_s_20170313_011_002___Vol_0_5_Vol.nii”
“KH16-6_St6_Sb4-10R_s_20170313_011_002___Vol_0_5_Vol_info.txt”
が出来る。

“.nii”は“NIfTI”形式で、

画素の値は:-2048(=30720)~1965(=34733)
と、“dcm2niix”と同じく真の値。
( XMedCon より good )

Y軸上下は、“XMedCon”と同じく見た目通り
( dcm2niix の様に 逆じゃない )

そして、“.exe”1つで済む。


なお、
“.txt”は、画像の情報で、
“dcm2niix”より多い。



結論としては、<紙>的には
.dcmファイルを、.niiファイルに変換するのなら、
“MRIConvert”のmcverter.exeで決まりでしょうか。



本日はここまで。


DICOM 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


170821

dcm2niix:DICOM to NIfTI conversion

2017-10-06 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
前(2017-10-04)の記事「DICOM 学習:参考サイト」の最後に載せたサイト:
DICOM introduction and free software

の(ほぼ)最終段に、

  Links to DICOM image conversion
  ・ dcm2nii can convert DICOM images to the popular NIfTI file format
   (other excellent converters are also listed on the dcm2nii page).

が載っている ( この段落、最初に列挙されているリンクには載っていない? )


それで、飛んでみた。

 dcm2nii DICOM to NIfTI conversion

 Introduction

 Important note: dcm2nii is obsolete.
 While I hope it is generally robust and useful,
 active development has moved to dcm2niix.
 In general, dcm2niix is typically better suited for modern DICOM images.
 On the other hand, dcm2nii is useful for archival studies with
 legacy proprietary format that predated DICOM.
 This software is provided under the BSD 2-Clause license.

 ・・・・・
 ・・・・・

つまり、
dcm2niiは古いモノで、今ならdcm2niixを使う。


これは如何か?


ダウンロードした:
 「dcm2niix_19-Aug-2017_win.zip」 2017-08-19 付 609KB
  中身は実質 dcm2niix.exe 1つ。

これ、即実行可能ダ。

試しに、
カレントに“dcm2niix.exe”と、(例の)“x.dcm”を置いて、

dcm2niix.exe  .
と打ち込むと、
2つのファイルが出来た:
“___Vol_0.5_Vol._20170313150941_2.json”
“___Vol_0.5_Vol._20170313150941_2.nii”

“.json”はテキスト・ファイルで、“.dcm”の情報
“.nii”は、以前(2017-09-25)の記事:
… XMedCon:The project stands for Medical Image ・・・
で書いている“.nii”ファイルとは若干異なる。

画素の値は:-2048(=30720)~1965(=34733)
と、真の値。

だが、上下が反転している!

でも、「.exe」1つのみで済むのは good

二者択一だと、悩むナ。


因みに、コマンドusageは、
usage: dcm2niix.exe [options] 
Options :
-1..-9 : gz compression level (1=fastest..9=smallest, default -1)
-b : BIDS sidecar (y/n/o(o=only: no NIfTI), default y)
-ba : anonymize BIDS (y/n, default y)
-f : filename (%a=antenna (coil) number, %c=comments, %d=description, %e echo number, %f=folder name, %i ID of patient, %j seriesInstanceUID, %k studyInstanceUID, %m=manufacturer, %n=name of patient, %p=protocol, %s=series number, %t=time, %u=acquisition number, %v=vendor, %x=study ID; %z sequence name; default '%f_%p_%t_%s')
-h : show help
-i : ignore derived, localizer and 2D images (y/n, default n)
-m : merge 2D slices from same series regardless of study time, echo, coil, orientation, etc. (y/n, default n)
-o : output directory (omit to save to input folder)
-p : Philips precise float (not display) scaling (y/n, default y)
-s : single file mode, do not convert other images in folder (y/n, default n)
-t : text notes includes private patient details (y/n, default n)
-v : verbose (n/y or 0/1/2 [no, yes, logorrheic], default 0)
-x : crop (y/n, default n)
-z : gz compress images (y/i/n, default n) [y=pigz, i=internal, n=no]
Defaults stored in Windows registry
Examples :
dcm2niix.exe c:\DICOM\dir
dcm2niix.exe -o c:\out\dir c:\DICOM\dir
dcm2niix.exe -f mystudy%s c:\DICOM\dir
dcm2niix.exe -o "c:\dir with spaces\dir" c:\dicomdir
でしょうか?


本日はここまで。


DICOM 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


170821

DICOM 学習:参考サイト

2017-10-04 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
備忘録として、DICOM 学習用参考サイトの幾つかを列挙。


DICOM ファイル(Photoshop Extended)

  DICOM(Digital Imaging and Communications in Medicine の略)は、
 医療用スキャンを受信するための最もよく使用される標準です。
  Photoshop Extended を使用すると、DICOM(.dc3、.dcm、.dic または
 拡張子なし)ファイルを開いて使用できます。
  DICOM ファイルには、あるスキャンの各レイヤーを表す複数の
 スライスまたはフレームを含めることができます。

  Photoshop は、DICOM ファイルからすべてのフレームを読み取り、
 Photoshop のレイヤーに変換します。
  また、Photoshop ではすべての DICOM フレームを 1 つのレイヤーの
 グリッドに配置して、3D 空間で回転できる 3D ボリュームとして
 フレームを開くことができます。
  Photoshop では、8、10、12 または 16 ビットの DICOM ファイルを
 読み取ることができます (Photoshop では、10 ビットファイルと
 12 ビットファイルが 16 ビットファイルに変換されます)。

  Photoshop で DICOM ファイルを開くと、Photoshop のツールを使用して、
 ファイルを調整したり、ファイルにマークや注釈を付けることができます。
  例えば、ファイルにコメントを追加するには注釈ツール、
 特定のスキャン領域にマークを付けるには鉛筆ツール、スキャン画像から
 ダストやスクラッチを除去するにはダスト&スクラッチフィルターを使用します。
  ものさしツールまたは選択ツールを使用して画像コンテンツを測定します。

 ・・・・・
 ・・・・・



Viewing DICOM images with GIMP

   I have the latest version if GIMP
  which is able to open up the DICOM images,
  but the images are not clear and not reconstructed properly.
   Is there any specific plugin which can help me?

 →

  You might want to use MicroDicom, it does the reconstruction properly.
  You even have a windowing function.

 ・・・・・
 ・・・・・



Read & convert DICOM image - ImageMagick

   Is it possible to read and convert a DICOM to jpg?
  Although I have successfully installed latest version supporting
  the PHP interface, MagickReadImage() fails to read a dcm file
   (in other formats such as jpg, bmp function works fine).
  ・・・ (ImageMagick 6.4.1 05/16/08 Q16)
  ・・・・・・・・・・

 →

   ImageMagick reads DICOM images.
  There have been enhancements and bug fixes to the DICOM reader
  since your release of ImageMagick.
   The current release is ImageMagick 6.6.0-5.
  If you post a URL to one of your images,
  we will download it and determine if the latest release can
  read it properly or if there is a bug in the DICOM reader.

 ・・・・・
 ・・・・・



DICOM introduction and free software

  The DICOM Standard
   This guide gives is a brief description of the DICOM standard,
  which is commonly used for the transfer and storage of medical images.
  ・ An introduction to the DICOM single-file format
  ・ The DICOM header
  ・ Window center and window width (aka brightness and contrast)
  ・ Links to free DICOM viewers
  ・ Links to free DICOM servers/clients
  ・ Links to sample DICOM images
  ・ Links to DICOM resources

 ・・・・・
 ・・・・・



本日はここまで。


DICOM 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


170821

YAKAMI DICOM ツール集 ( フリーの DICOM Viewer/・・・ )

2017-10-02 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
前(2017-09-29)の記事「DICOM 学習:ApolloView Lite」では、
些か失望したので、
Free DICOM Viewer」検索の続き。

YAKAMI DICOM ツール集(フリーの DICOM Viewer/Converter/etc.)
はどうか?

 紹介
  「八上 DICOM ツール集 / YAKAMI DICOM Tools」は、フリーウェアで、
 研究用に DICOM ファイルを扱うためのツール集です。無料でご利用になれます。
 診療用には使用しないでください。

  このパッケージは、以下のアプリケーションと文書を含んでいます。

 アプリケーション
  DICOM Viewer
  DICOM Converter
  File Mover
  Folder Renamer
  DICOM Counter
  Shortcut Maker
  Index Maker
  Table Maker
  PACS Client
  WL/WW Editor
  Gamma Editor
  CLUT Editor
  Combi Editor
  Command-Line Converter
  Conveyer
  共通設定
  レジストリ設定

 文書:
  ・・・・・
  ・・・・・


ダウンロードした:
 「YAKAMI_DICOM_Tools_x86-1.4.5.0.ja.zip」 2014-01-21 付 5.05MB
  中身は実質 YAKAMI_DICOM_Tools.ja.msi 1つ。

インストールした:
  D:/TOOL/YAKAMI_Tools_x86/ 以下に。
   8 Dir と、84 ファイル で、20.9MB
  Path 登録は無し


“DICOM Viewer”は、
その名の通り
 親子ウィンドウ式(MDI)高速 DICOM ビューワープログラム

“DICOM Converter”では、
 TIFF 画像ファイルで出力できるが、8bit

拡張子「.dcm」「.nii」が“DICOM Viewer”に対応付けられた!!!


これも、
<紙>的には、イラナイ な。


本日はここまで。


DICOM 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


170821

DICOM 学習:ApolloView Lite

2017-09-29 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
改めて「Free DICOM Viewer」で検索してみた。

“NAVER まとめ”の
無料でつかえるWindowsのDICOMビューアー」が見つかる。

 通常のビューアー
 病院などからもらってきたCD-RにはいったX線検査や超音波検査の画像や
 画像検査施設や大学病院でもらってきたCTやMRIの画像を見ることができます。
 個人的には、X線検査や超音波検査のデータはAppllo View liteを使用して、
 CTたMRIにはYAMAKI DICOMツールを使用しています。
 無料である割には性能もちゃんとしています。

 ApolloView Lite
  操作性は一番だと思います。MPR※はできません。
 通常のDRやCR、超音波検査(フォーマットによっては静止画のみ)ならば問題なし。
 ※ MPRとはmulti planar reconstructionのことで、
  CTなどのボリュームデータから3方向での断面を同時に表示する方法のことです。


とあるので、

 ソフト名: ApolloView Lite 4.16.8.2
 ファイル: ApolloViewLite4160802Setup.zip / 1,653,856Bytes / 2016.08.04

をダウンロードした。

書庫の中身は?
実質インストーラ:“ApolloViewLiteSetup.exe” 1.70MB 1つ。

早速実行(インストール):
(例によって) D:/TOOL/ApolloViewLite/ に。

 ApolloViewLite.exe 他 数ファイル&数フォルダ。

 Path 登録は無し。


実行してみた。

ほぼ表示のみ?

「その他」メニューに、
  「タグリスト表示」
  「ヒストグラム表示」
が有。


出力では、

ほぼ「.dcm」フォーマットのみ?


<紙>的には、イラナイ な。


本日はここまで。


DICOM 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


170821

DICOM 学習:GraphicsMagick

2017-09-27 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
前々回(2017-09-22)の記事「DICOM 学習:ImageMagick」に続いて、・・・・・

昨年4月(2016-04-06)の記事「GraphicsMagick って?」では、

  GraphicsMagick は、2002年11月に ImageMagick 5.5.2 から派生した。
  その後は、完全に別なプロジェクトである。
  ImageMagick から派生して以来、多くの機能強化がなされている。(NEWS 参照)
  ただし、API やユーティリティ操作に関する変更は無い。

  最近の<紙>は、“ImageMagick”をあまり使わなくなっている。
  なので、この“GraphicsMagick”はとりあえず保留ダ。

で終わっていたが、

その後、
12月に入って、ImageMagickの“display.exe”が動かなかったので、
思い出して、GraphicsMagickを導入していた。
( Path には、先頭に登録された )
本家サイト:GraphicsMagick Image Processing System


それで、ImageMagickに対抗して、
GraphicsMagickで DICOM はどうなのか?

確認してみた。

インストールしたときに、デスクトップに出来たショートカット:
“GraphicsMagick Display (32-bit)”
に ドラッグ&ドロップで、表示出来た。


それから、・・・・・

対応フォーマット:GraphicsMagick Supported Formats

コマンド仕様:GraphicsMagick GM Utility

を参考に、
形式変換をしてみた。

最初は
gm  convert  x.dcm  gm_convert_x.tif
としたら、
RGB 形式に変換されたので、
gm  convert  x.dcm  -channel Gray  gm_convert_x.tif
とした。
これで、16bit GrayScale で出力された。

XnView では、16bit なので、8bit に変換するゾ とでた。

ですが、
ImageJ で読み込んで表示、ヒストグラムを見ると、
値は
  0~1965 が 0~47597 となっている???

これは、どういうこと?


本日はここまで。


DICOM 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


170820

… XMedCon:The project stands for Medical Image ・・・

2017-09-25 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
前々回(2017-09-20)の記事:
AMIDE:Free tool for viewing,・・・medical imaging data sets
で参照したサイト:
Free DICOM Viewer
  RTstudents.com
   Radiology for Students and Professionals

この中から、
  Medcon and Xmedcon - (DOS, Windows and Unix) Some PR-talk here.
  The project stands for Medical Image Conversion.
  Released under the (L) GPL licence, it comes with the full C-source code
   of the library, a flexible command-line utility and
   a neat graphical front-end using the Gtk+ toolkit.
  The supported formats are: Acr/Nema 2.0, Analyze (SPM), Concorde/uPET,
   DICOM 3.0, CTI ECAT 6/7, InterFile3.3 and PNG or Gif87a/89a.
  ・・・・・
  ・・・・・

はどうか?

行ってみた:

  (X)MedCon
   - description -
  an open source toolkit for medical image conversion



左ペインの、Download
の、

  package

  windows  zip  xmedcon-0.14.1-mswin.zip  README.WIN

から、
「xmedcon-0.14.1-mswin.zip」 2015-12-27 付  10.3MB
をダウンロード。

中身は、実質「setup.exe」 10.4MB 1つ。


早速実行(セットアップ)

  Path は登録されない様ダ。

インストール先は:(固定) C:\Program Files\XMedCon



左ペインの、Documentation
の、

 3. Program - CLI

で学習:
medcon [options] -f  ...

オプションは 出力用?

  -b16, --signed-short
  -big, --big-endian
  -c, --convert ...
     meaning
    acr Acr/Nema 2.0
    anlz Analyze (SPM)
    conc Concorde/microPET
    dicom DICOM 3.0 (NM)
    ecat6 CTI ECAT 6.4
    ecat7 CTI ECAT 7.2
    gif Gif89a
    intf InterFile 3.3
    inw INW (RUG)
    nifti NIfTI Analyze
    png PNG
    bin Raw binary
    ascii Raw ascii
と云うことで、

2パターン:

1:"C:\Program Files\XMedCon\bin\medcon.exe" -b16 -c bin -f x.dcm
  これで、「m000-x.bin」が出来る。

2:"C:\Program Files\XMedCon\bin\medcon.exe" -b16 -c nifti -f x.dcm
  これで、「m000-x.nii」が出来る。


ここで、
「.nii」とは???
  ImageJ で読める:データの値は、0~1965
  ファイル内容は、
  「.bin」の先頭に 0x160(352) バイトの情報が付加されているだけ?


これ XMedCon はなかなか good

 ( .niiについても学習かナ? )


本日はここまで。


DICOM 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


170819

DICOM 学習:ImageMagick

2017-09-22 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
前々回(2017-09-18)の記事「DICOM 学習:.dcm ビューアー」に続いて、・・・・・

導入済みのツール:ImageMagick
ではどうなのか?

参考サイト:Image file formats and compression
で学習して、・・・

バッチ変換ツールconvertを使って変換してみた:
convert  x.dcm  -depth 16  -compress "none"  IM_out16.tif
これで、
x.dcm を入力として、無圧縮の 16bit TIFF IM_out16.tif で出力。

出来ますね。

結果の TIFF ファイルは?
ImageJで読める:
符号無し16bit: 0 ~ 65535!

データの値では、
入力の周辺部分:-2048=30720 が、-1=65535 になる?


だが、
XnViewでは、・・・読み込めたのか? 警告無しで真っ黒!
OpenCVの読み込みコーディングでは、アボート???


本日はここまで。


DICOM 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


170819

AMIDE:Free tool for viewing,・・・medical imaging data sets

2017-09-20 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
「DICOM C library」で検索してみた。

“Stack Overflow”の
Reading a dicom file in C」が見つかった。

これの 回答 0 の最初の here ( 2番目の here は リンク切れ )

Free DICOM Viewer
  RTstudents.com
   Radiology for Students and Professionals
に沢山のツールが載っている。

この中から、最初?のモノ:
 AMIDE - (DOS, Macintosh, Windows and Unix) Free tool for viewing,・・・
はどうか?

  AMIDE: Amide's a Medical Imaging Data Examiner


左の
 Installation
   Windows

の、
 Binaries
   amide-VERSION_NUM_install.exe

の最初?の行のDownload amide-1.0.4-1_win32_install.exe (17.9 MB)

つまり、
   1.0.4 2012-11-20

即ち:
「amide-1.0.4-1_win32_install.exe」 17.0MB
を ダウンロードした。

そして、インストール: D:/TOOL/amide/ に。
60.9MBだった。
Path への登録は無し。


立ち上げて、

[File]→[Import File](どっちでも)→<場所>&<ファイル名.dcm>
で、読み込み&表示


[File]→[Export data Set]→[Raw data]→<場所>&<ファイル名.dat>
で、4byte Float バイナリファイル

[File]→[Save As XIF Directory]→<場所>&<ディレクトリ名>
で、中に 2byte UInt ( little endian )のバイナリファイル


これだけ?
些かショボイ・・・(古いことでもあるし)イラナイか?


本日はここまで。


DICOM 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


170818

DICOM 学習:.dcm ビューアー

2017-09-18 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
.dcm ファイルを読み込めるツールを探してみた。


ImageJ

  DICOM ファイルを開くには、
 「File」→「Open」→ <ファイル選択>
   拡張子(.dcm)は付いていなくても可
  ※ ドラッグ&ドロップでも開ける

 TIFF で書き出せる:
 「File」→「Save As」→「Tiff...」→ <ファイル名入力>
 ※ 16bit の DICOM ファイルなら、16bit TIFF で保存される。
  little エンディアン でも読めて、big エンディアンで出力。
  ( 無圧縮 )
  このTIFFは、OpenCV で読める(変換してくれている?)


XnView

 読み込み、表示出来る。(“16bit を 8bit 化する”警告表示無し )

 TIFF で書き出せるが、8bit 。
  ( 無圧縮 )


OpenCV

  「DICOM and OpenCV
  →
  C++ and dicom? I would recommend DCMTK.
  Efficient, solid, raliable and open source.



本日はここまで。


DICOM 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


170817

DICOM 学習:Pydicom

2017-09-15 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
「DICOM Python」と検索してみたら、・・・

“Qiita”のPythonでDICOM画像をなんとかする
とか
“XTREME ~”の[Pydicom] Pythonで医用画像(DICOM)を簡単に扱う(1)
が見つかる。

なので、“Pydicom”を使ってみようと思った。

Gohlkeさんのページ」にあった。


「pydicom-0.9.9-py2-none-any.whl」 2014-11-23 付  456KB
をダウンロードした。

“.whl”ファイルは単なる ZIP アーカイブですネ。

なので、Explzhで開いて「dicom」フォルダ以下を、
~/WinPython32_2763/python-2.7.6/Lib/site-packages/ に格納した。


これで、
“XTREME ~”のページにある如く。

  うまくインストールできたか、pythonの対話モードで試してみます。
   >>> import dicom
  とし、エラーが出なければOKです。

やってみた
DOS 窓で、

 > python

 >>> import dicom

OKですね。


で、ドキュメントは:
pydicom documentation
でしょうか?


1本作ってみた:
##### test_DICOM_read.py
# coding: UTF-8
import dicom

ds=dicom.read_file( 'x.dcm' )
M=ds.pixel_array

for y in range(512):
for x in range(512):
if M[y,x]==1965:
print y,x ##### 484 310
これで、
一応使えた。


これは簡単/シンプルですネ。


本日はここまで。


DICOM 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


170817

DICOM 学習:ファイル読み込み

2017-09-13 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
前(2017-09-11)の記事「DICOM 学習:初め?」で書いた、
c#: how to read parts of a file? (DICOM)」の
回答 11 のコードを真似て
何とか読み込みできるものを作った:
----- DICOM_Read.gsl -----
SF = string.format
int16 = |x| ffi.cast( 'int16_t*', x )
uint16 = |x| ffi.cast( 'uint16_t*', x )
uint32 = |x| ffi.cast( 'uint32_t*', x )

ReadUInt16 = || uint16( IN:read(2) )[0]
ReadUInt32 = || uint32( IN:read(4) )[0]
ReadChars = |n| IN:read(n)

IN = io.open( 'x.dcm', 'rb' ) ----- サンプルデータ -----

-- 先頭 128 バイトは Preamble ( all ゼロ )
-- 次の4バイトは:'DICM'

zzz = IN:read(128); fid = IN:read(4)
if fid ~= 'DICM' then
print( 'Not a DICM' ); _=io.read(1); os.exit()
end

----------------------- 参考サイトの C# コードから・・・・・
g = ReadUInt16()
while g == 2 do
e = ReadUInt16();
vr = ReadChars(2)
if vr == 'AE' or vr == 'AS' or vr == 'AT' or vr == 'CS' or
vr == 'DA' or vr == 'DS' or vr == 'DT' or vr == 'FL' or
vr == 'FD' or vr == 'IS' or vr == 'LO' or vr == 'PN' or
vr == 'SH' or vr == 'SL' or vr == 'SS' or vr == 'ST' or
vr == 'TM' or vr == 'UI' or vr == 'UL' or vr == 'US'
then
length = ReadUInt16()
else -- Read the reserved byte
_ = ReadUInt16()
length = ReadUInt32()
end
----- print( g, e, vr, length, SF('%X',IN:seek()) ) -- デバッグ用
val = ReadChars(length)
g = ReadUInt16()
end

----------------------- 以下部分を追加

while g==8 or g==16 or g==24 or g==32 or g==40 or g==64 or g==28677 do
e = ReadUInt16();
length = ReadUInt32()
----- print( g, e, vr, length, SF('%X',IN:seek()) ) -- デバッグ用
val = ReadChars(length)

--------------------
if g==40 then
if e== 16 then print( uint16(val)[0], '=xx' ) end -- 512
if e== 17 then print( uint16(val)[0], '=yy' ) end -- 512
if e==256 then print( uint16(val)[0], '=bpp' ) end -- 16
if e==257 then print( uint16(val)[0], '=msb' ) end -- 16
if e==258 then print( uint16(val)[0], '=hib' ) end -- 15
end
--------------------

g = ReadUInt16()
end


val = ReadChars(6) ----- この6バイト分は不明?

----------
print( SF('%X',IN:seek()) ) ----- 0x09A2 = 2466

----------
val = IN:read(512*512*2)
D = int16( val )

Mx, Mn = 0, 256*256
for n=0,512*512-1 do v=D[n]
if v>Mx then Mx=v end
if vend

print( Mx, Mn ) ----- 1965, -2048
これで、・・・・・


これで、.dcmファイルを読み込める???
そこそこ汎用で???


補足:
  値データは、符号付き16ビット?
  「DICOM ファイルからのイメージ データの読み取り

  .dcm ファイルのデフォルトは、リトルエンディアン?
  「DICOMファイルフォーマットの概要
  タグからは、エンディアンの判定は不能?



本日はここまで。


DICOM 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


170817
おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
09 | 2017/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク