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

DICOM 学習:初め?

2017-09-11 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
ひょんなことから、拡張子が '.dcm' なるファイルを扱うことになった。

これって、
.DCM ファイル拡張子

  読めない、または表示できない dcm ファイルはありませんか?
  dcm の開き方については下記の手順を参照してください。
  dcm ファイルの表示できる・または開けるソフトが利用可能な場合、
  対応ソフトのセクションで検索ができます。
  その後 DICOM Image File を開くフリープログラムの・・・

  .DCMはDICOMの略で、
  正式にはDigital Imaging and Communications in Medicineという。
  この画像ファイル形式はNEMAに開発された。
  NEMAはNational Electrical Manufacturers Associationのこと。

ですね。


詳しいことは別にして、
<紙>流でぶつかってみた。


取り敢えず、1枚(1ファイル):512x512画像。

先ずは、バイナリエディタで開いてみた。

先頭 0x09A2 = 2466 バイトの(ヘッダ?)情報があって、
512x512x2 バイトでデータがある。

“リトルエンディアン”としてみる。

符号付きと見ると、
0xF800 = -2048 から、0x07AD = 1965
の間の値の様ダ。


でも、
多分先頭の情報部分のサイズはモノによる?
また、
“ビッグエンディアン”のモノもある?


何か汎用のものは無いか?探してみた。

C# だけど、
c#: how to read parts of a file? (DICOM)
が見つかった。

回答 11 に、
  Something like this should read the file,
  its basic and doesn't handle all cases,
  but it would be a starting point:
=== Google 翻訳:
  このようなものは、基本的なファイルを読み、
  すべてのケースを処理するわけではありませんが、
  出発点になります。


これで、
<紙>流コーディングか?


さらに、フォーマット説明では:
DICOM Specification Overview: Table of Contents
でしょうか?


頑張って学習ダ。


本日はここまで。


DICOM 学習は続く。


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


170815

OpenCV 学習:cvSolve

2017-09-08 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
Tech Noteサイトの
OpenCV - 数学演算」を見つけた。

  ここでは,画像処理に必
  内容を載せていきます.

  ・ 行列演算 (Matrix op
    ・ &color(blue){Cv
    ・ 行列の生成
    ・ 行列演算
  ・ 幾何学変換 (Geometr
    ・ 拡大・縮小
    ・ 回転
    ・ 平行移動
    ・ アフィン変換 (A
  ・ 統計 (Statistics)
    ・ 最小・最大値
    ・ 平均・標準偏差

と云うことで、若干学習した。


昨年2月(2016-02-02)の記事「GSL Shell 学習:matrix.solve( A, b )
で書いた、3変数の連立方程式を解いてみた。

----- test_cvSolve.gsl -----
require'cv2_a'

----------- 係数行列 と、右辺ベクトル データ:
A = matrix.def{ { 0, 3, 6 }, { 1, 4, 7 }, { 2, 5, 9 } }
b = matrix.vec{ 1, 0, -2 }

---------- OpenCV の CvMat 型
M = cv2.cvCreateMatHeader( 3, 3, CV_64FC1 )
cv2.cvSetData( M, A.data, 3*8 ) -- 第3引数: step -

B = cv2.cvCreateMatHeader( 3, 1, CV_64FC1 )
cv2.cvSetData( B, b.data, 1*8 ) -- 第3引数: Full row length in bytes

X = cv2.cvCreateMat( 3, 1, CV_64FC1 ) -- 答え(解)ベクトル

-------------------------------------------------------------
Ret = cv2.cvSolve( M, B, X, 0 ) -- 第3引数: method

for r=0,2 do print( X.Dbl[r] ) end -- 確認
これで?

以前のブログと同じ値が得られた。


なお、solution (matrix inversion) method
については、
・ DECOMP_LU     0
・ DECOMP_SVD     1
・ DECOMP_EIG     2
・ DECOMP_CHOLESKY 3
・ DECOMP_QR     4
・ DECOMP_NORMAL  16
ですね。


本日はここまで。


Lua ( GSL Shell ) / OpenCV 学習は続く。


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


170813

OpenCV 学習:CvMat 型のヒストグラム機能は無し

2017-09-06 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
ヒストグラムについては、7月(2017-07-03)の記事:
GSL Shell 学習:ヒストグラム(改)
で纏めているが、・・・・・

これに対抗して、
OpenCV でもやりたい。

OpenCV 2.4.13.3 documentationの、
OpenCV API Reference」を、histogramで検索してみた。

結果:「histogram

で、

C function では、

void cvCalcHist( IplImage** image, CvHistogram* hist, ・・・ )

でしょうか?

CvMat 型は、見つからない。

しかも、二重ポインタ指定!


残念ながら、IplImage 型のみならば却下。


ヒストグラム処理については、
GSL - GNU Scientific Library
で対処する。


本日はここまで。


Lua ( GSL Shell ) / OpenCV 学習は続く。


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


170724

画像ファイルじゃない gif ファイル

2017-09-04 :  理科部 部活
Python、C言語、Perl、グルコサミン、Firefox
ひょんなことから、拡張子が.gifなるファイルを知った。

普通(?)だと、
 Graphics Interchange Format
  Graphics Interchange Format(グラフィックス・インターチェンジ・
  フォーマット、略称GIF)はCompuServeのPICSフォーラムで提唱された
  画像ファイルフォーマットの一つである。
  LZW特許を使用した画像圧縮が可能。一般的に用いられている拡張子は.gif。
  ・・・・・
  ・・・・・
ですよネ???

だが、
今回のファイルは、実体はテキストファイルで、
どうも、分子構造を表現するもの?


探してみたら、
“bioinformatics”→“タンパク質科学”→“構造解析”→“Gaussian”の
ファイルフォーマット」が見つかった。

  Gaussian で利用されるファイルの形式。

  拡張子

  .gif  Gaussian Input File の形式です。
     GaussianView で作成した分子構造を保存するとき、
     拡張子を .gif として保存される。
     中身は普通のテキストファイルである。
  .log  Gaussian で最適化計算を行うときのログ情報や・・・
  ・・・
  .pdb  PDB ファイル
  ・・・・・
  ・・・・・

と云うことですか。

“GaussianView”ですね。


フリーソフトで何か無いか?
探してみた。
こんなページが見つかった。
分子構造を表示できるフリーソフトでGaussian ・・・
 分子構造を表示できるフリーソフトでGaussian input ファイル
 (エンコードが .gjf)が開けるものを知りませんか?

で、その回答は:

 TEXT編集するだけであれば、そのままnotepadやtextエディタなどで開けますよ。
 GaussViewのようにグラフィックを使いたいのであれば、アカデミックであれば、
 Winmostar ( ***このURLはリンク切れ*** )があります。
 以前は完全にフリーでしたが、今ではアカデミック使用で無料です。
 日本のソフトなので色々と分かりやすいかもしれません。
 後は海外のソフトなどでありますよ。


確かに、Winmostar で扱える。
だが、
 ・商用版(有償)
 ・トライアル版(3か月間)
 ・無償版
とある。

調べてみると、
Winmostarの導入
 「無償版」は、以前に比べると機能が大幅に制限され、
 原子数が制限された組み込みのMOPAC Ver.6以外は利用できません。
 フル機能が利用できる「トライアル版」は利用期間が3か月間となっています。
だそうな。

また、
OpenBabel」では、変換出力のみで、
入力は非対応。


更に探してみた。

こんなツールが見つかった:
MolStat
 Gaussian Input/Output File Viewer
 MD Simulation Visualizer/Animator

  概要

   MolStatはGaussianの入力ファイル・出力ファイル中の分子構造、
  振動計算結果を可視化するためのソフトで、Ball&Stick、Space Filling、
  Wireといった3D分子モデルの表示と分子振動のアニメーション、
  赤外・ラマンスペクトル(JCAMP-DX形式)の読み込み、分子動力学計算結果から
  動画アニメーションを書き出す等の機能があります。

  このソフトウェアは開発中のものです。
  一部未実装、バグなどありますので自己責任での使用をお願いします。
  また、作者はソフトウェアの使用により生じた一切の損害に対する
  責任は持たないものとします。

  実行環境

  Windows95R2/98/Me/NT/2000/XPに対応と思われます。

そして、

  Ver.0.921, 1149KB, 2008/09/17

だそうな。


古すぎるけど、完全フリーなので、ダウンロードしてみた。

  MolStat-0.921.zip 1.12MB


D:/TOOL/MolStat-0.921/

に展開。


一応、読み込み・表示できた。
但し、ファイルの拡張子は '.gif' ではダメで '.gjf'でした。


本日はここまで。


理科部 部活動 も、思い出したように続いている???


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


170721

GSL Shell 学習:LuaJIT は2つのみで可

2017-09-01 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
インタプリタ系言語の中で、
<紙>が心酔しているのは、GSL Shell だが、・・・

インストール(展開)場所: D:/TOOL/Lua/gsl-shell/
には、
luajit.exe と、lua51.dll がある。

この2つダケで、
GSL の機能は含まれないが FFI 機能を含んでいる、
基本 Lua の JIT インタプリタと成る
のではないか?
と思った。


常用のマシンで隔離した環境、
つまり VM マシンで、
何処かに、この2つのファイルを格納し、
その場所で、コマンドプロンプトで
  luajit -v
と打ち込めば、
立ち上がり
  LuaJIT 2.0.2 -- ・・・
と表示される。


何某かの Lua プログラム( a.lua )を作って、
  luajit a.lua
とすれば実行された。

つまり、LuaJIT は2つのみで可ダ。


本日はここまで。


Lua ( GSL Shell ) 学習は続く。


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


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



おきてがみ

最新記事
カレンダー
08 | 2017/09 | 10
- - - - - 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
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

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

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


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

Google Analytics
ブックマーク