背景:
長い間発表されてきたいくつかのコラム投稿が整理されていないのは、主な理由は、以前に構築する予定だった WML サーバー計画に問題が発生したためです。当初は、DCMTK の公式ドキュメント wwwapp.txt を参照し、2 日前に構築した WAMP サーバーと組み合わせることで、WML サービスを正常に実装できると考えていました。これで、WEB PACS シリーズの 2 つのブログ投稿を完了できます。同時に Dicom WML サーバーを構築します。しかし、実際の展開過程でいくつかの重大な問題が発見され、当面は解決できませんでした。しかし、解決策を探しているときに、PHP を使用して DCMTK ツールキットをカプセル化することに関する DCMTK フォーラムに投稿された記事を偶然見つけました。したがって、このブログ投稿では、WML の構築中に遭遇した問題を記録しながら、DCMTK ツールキットをカプセル化するこの単純な PHP クラスを主に紹介し、初期段階で構築された WAMP サーバーでのデモンストレーション例を示したいと思います。 (追記: この問題の解決方法を知っているマスターがすぐに現れることも願っています)
質問:DCMTK 公式ドキュメント wwwapp.txt ファイル (http://support.dcmtk.org/docs) の指示に従ってください/file_wwwapp.html) を使用して DICOM を構築します。 Basic Worklist Management サービスの準備作業は基本的に完了しました。前述の WEB PACS プラットフォームは、HTTPD、CGI、および Perl 解析機能を正常に提供できるようになりました (詳細については、Perl を参照してください)。ブログ投稿に示されている例: http://blog.csdn.net /zssureqh/article/details/40516745)。ただし、wwwapp.txt ドキュメントの指示に従って wwwapps ディレクトリ内の実行可能ファイル (preplock、readoviw、readwlst、writwlst など) をコピーすると、それらのファイルはコンパイルされたプロジェクト内に見つからず、対応する .cc ソース コードのみが見つかりました。ファイルが見られました。
wwwapp のインストールに関する関連情報:関連情報を検索した結果、Liu Beifeng 先輩が以前にこの問題に遭遇したことがあり、OFFIS の関連保守担当者に相談したことがわかりました。上級ブログ投稿のアドレスは http://qimo601.iteye.com/blog/1701026、OFFIS フォーラムのアドレスは http://forum.dcmtk.org/viewtopic.php?f=1&t= です。 723&hilit=wwwapp.txt。
解決してみてください:上記の指示によると、DCMTK ソース コードのコンパイル プロセスのどこかに問題があり、その結果、正常に生成されたはずのいくつかの exe ファイルが失われていると考えられます。公式フォーラムでの議論は、Linux 環境での make ツールを使用したコンパイルに関するもので、この環境では、make distclean コマンドは、make を使用してインストールするときに、preplock、readoviw、readwlst、writwlst などの実行可能ファイルの削除を制御します。ただし、Windows 環境では、VS に対応する sln ファイルの生成に CMake が使用されます。DCMTK.sln ソリューションを開いた後、上記の実行可能ファイルをコンパイルして生成するための設定方法が見つかりませんでした。コンパイルが成功した場合でも、Win7 環境では preplock.exe ファイルが欠落しています。現時点では、この問題に対する解決策は終了しており、公開時点では適切な解決策は見つかっていません。
PHP DICOM クラス上記の問題の解決策を探して OFFIS フォーラムを閲覧しているときに、下の図に示すように、フォーラム内の "サードパーティ DCMTK アプリケーション" ブランチをクリックしてしまいました。このサブフォーラムでは、 DCMTK 関連のアプリケーション開発は数多くありますが、その 1 つは「PHP DICOM クラス」と呼ばれます。
作者 Vedicveko は、PHP Dicom Class クラスの当初の設計意図と詳細な使用手順を提供しました。ドキュメントの URL は、http://deanvaughan.org/wordpress/dicom-php-class/ です。
ソース コード (https://github.com/vedicveko/class_dicom.php/zipball/master) をダウンロードした後、class_dicom.php コア クラス ファイルを開くと、作成者が PHP の exec コマンドを使用していることがわかります。 DCMTK に対応するツールを構成します。パッケージは PHP 言語を利用してカプセル化されており、DCMTK をネットワーク上で簡単に適用できます。 Apache Web サーバーと PHP 間の呼び出しは、以前に構築した単純な WEB PACS プラットフォーム (PHP へのプラットフォームの呼び出しは FastCGI を通じて実装されます) を直接使用することができ、dcm ファイルに対するほとんどの操作は、PHP DICOM クラスを組み合わせることで実現できます。実装は以下の通りです。
まず、DCMTK でコンパイルされたツールキットを指定された場所に配置します。たとえば、私のローカル アドレスは c:dcmtkbin です。class_dicom.php ファイル内の次のコードを変更し、TOOLKIT_DIR を指定します。ネイティブ ツールキット ディレクトリ c:dcmtkbin。
define('TOOLKIT_DIR', 'C:/dcmtk/bin'); // DCMTK を他の場所にインストールしている場合は、これを変更してください
2 番目に、Web サイト サービスのルート ディレクトリにある前に構築した WAMP サービスを利用します (次の図に示すように、c:wampwww の下に新しい class_dicom_php ディレクトリを作成し、ダウンロードした PHP DICOM クラス ソース コード ファイルを class_dicom_php ディレクトリに直接コピーします。
3 番目に、wamp を開きます。ブラウザでサーバー サービスに http://localhost/class_dicom_php/examples/get_tags.php と入力してテストします。正常であれば、次のように dean.dcm ファイルの Tags タグ情報が出力されます。
上に示すように、ブラウザで表示された結果は、dcmdump.exe ツールを使用して表示された結果と一致しており、PHP DICOM クラスが WEB PACS プラットフォームに正常にインストールされたことがわかります。
[注意]: get_tags.php は $argv コマンドライン変数を使用して特定の dcm ファイル パスを取得するため、実際の操作中にエラーが発生する可能性がありますが、WEB PACS では GET のみを使用するか、POST を通じて php スクリプトにパラメーターを渡すことができます。 , そのため、以下に示すように、get_tags.php でパラメーターの取得方法を変更するか、テスト ファイル dean.dcm をファイル パス変数に直接書き込むことができます:
$file = (isset($ argv[1]) ? $argv [1] : 'dean.dcm');#元のコードは次のとおりです: $file = (isset($argv[1]) ? $argv[1] : ' ');
変更後、 http を入力します。ブラウザで //localhost/class_dicom_php/examples/get_tags.php を再度実行すると、上記の結果がスムーズに得られます。
例: DCM 画像データをブラウザに出力します
class_dicom.php を参照すると、dicom_convert クラスに JPEG から DCM への無料の双方向変換が含まれていることがわかります。dcmj2pnm のヘルプ ドキュメントを見ると、このツールは DCM も実装できることがわかります。 BMP ファイルの変換には、class_dicom.php の DICOM_CONVERT クラスを拡張し、DCM_TO_BMP () 関数を追加することにしました。具体的なコードは次のとおりです。 DCMJ2PNM フィンガーの部分は、DCM_TO_JPG () のメイン部分です。ただし、bmp ファイルは、dcmj2pnm 自体の特定の画像データを識別して bmp を生成することもできます。以下の図に示すように、複数の形式の画像:
2) テスト例:
DCM_TO_BMP の PHP テスト、コードは次のとおりです:
### zssure 20141104function dcm_to_bmp() {$filesize = 0;$this->jpg_file = $this->file . '.bmp';$convert_cmd = BIN_DCMJ2PNM . " +ob " . "\"" . $this->file . "\" \"" . $this->jpg_file . "\"";$out = Execute($convert_cmd);if(file_exists($this->jpg_file)) {$filesize = filesize($this->jpg_file);}return($this->jpg_file);}
DCMJ2 を使用した後PNMからDCM を BMP ファイルに変換するには、前のブログ投稿の PHP 出力イメージをブラウザのコードに直接使用して結果を出力し、ブラウザに http://localhost/class_dicom_php/examples/dcm_to_bmp.php と入力します。以下に示すように、dean.dcm テスト ファイルの画像情報を取得できました。
この時点で、PHP DICOM クラスを使用すると、dcm ファイルの画像情報をブラウザに出力する機能が迅速かつ便利に実装されます。 。
DCMTK の学習に関する情報:私は元々、DCMTK の使用中に発生したさまざまなエラーを検索するために OFFIS フォーラム (http://forum.dcmtk.org/index.php) を使用していました。OFFIS フォーラムを注意深く閲覧したことはありませんでした。今日の個人的な経験を通じて、OFFIS フォーラムの DCMTK プロジェクトの [サードパーティ DCMTK アプリケーション] セクションも知識の宝庫であることがわかりました。このセクションには、DCMTK を使用して開発されたさまざまなツールが含まれています。関連ドキュメントも非常に詳細であり、将来の主要な学習教材として使用できます。
参考として学ぶ価値があると思われるリンクをいくつか紹介します。
http://forum.dcmtk.org/viewtopic.php?f=19&t=1225、豊富な機能を備えたオープンソースの DICOM ファイル ブラウザ
http://forum.dcmtk.org/viewtopic.php?f=19&t=2919、上記の PHP DICOM クラスの作成者からの投稿、無私無欲に感謝します
oracleを使用してDICOMデータを直接操作する
C#の非同期プログラミングモデルをfo-dicomに適用する
3つのVMWareネットワーク接続モードを実際にテストする
著者: zssure@163.com
時間: 2014-11-04