DICOM画像とNAS その4



 1.取りあえず、こんな形になりました

    医師、レントゲン技師さんと相談の上です。

    もちろん、画像の拡大、縮小は可能です。

    特徴は、カーソルの位置を中心にして、拡大、縮小する事です。
 ->

    拡大につきましては、撮影時ドット数以上の拡大は、避けました。(拡大率<=1)

    これは、補間によって、

         本来見えるはずのないものを、作り出す事を避けたのです。

    また、SQLite3データベースへの、日本語による検索は

    半角カナ、漢字、共に可能です。




    うーん、

    本来、フォームは最大化して、見るべきなのですが、webで見てもらうために、フォームを小さくしています。

    開発の現時点でも、医師の要請により、

    フォームを改良しつつあり、自由計測ラインのボタンを付け加えています。


    右、中間のスライダーは、window_center ,window を、調整するためのものです。

    rawdataの拡大、縮小、マウスホイールの使い方等、webに掲載して下さった方々に、御礼申し上げます。

    以上、病院で実際に使ってみてもらって

    合格点をいただきました、ホッツ (^_^)

    もちろん、病院の要望に応じて、改良していきます。

    画像の表示スピードについては

    windows7 prfessinal、corei5で 10MB強のファイルを、100MBSのネットワークを介して、表示するのに、 凡そ2秒以内。

    同じプログラムで、windowsXP、Dualcoreで、同条件で、3秒半くらいでしょうか。

    うーん、これはもう、windows7で、新しいハードに移行すべきでしょうね。

    因みに、私、JOSHINさんで、windows7、core i5-2520M の、dynabook ノートを、39800で入手いたしました。(もう完売したそうです、ご連絡が遅くなり、申し訳ありません m(__)m )

    我が家の最速パソコンは、ノートパソコンになりました。

    このノートパソコンの液晶部部を外し、フルHDのディスプレイに繋げば、

    コンパクトな、デスクトップになりますね。

2..NET Framework4.0 対応にするには

    .NETが2.0とか、3.5とか、入り混じってしまいましたので

    .NET4.0に統一すべく、SQLite3, gdcm, mySQLiteModel classを、ソースファイルから、buildしました。

    cmake,swigwinも、必要です。



    SQLIte3は、スタティックLIBを作り、これを、C#のためのラッパークラスである、mySQLiteModelにリンクしました。

    スタティックライブラリは

      、新規プロジェクト->コンソールアップリケーションを選び、次のステップで、スタティックライブラリーを選びます。

    これで、うまく働くのか?

    SQLIte3、mySQLiteModelについては、OKなのですが

    gdcmはNG、つまり、ソースからbuildしたものは、buildできるのですが、エラーがでます。




    VisuaStudio 2005も、持っているので、試した所

    gdcmをbuildできません。 私は、ソースを全く触っていません!

    buildするには、VisualStudio 2005 ServicePack1が、必要らしくて

    これをinstallすると、build OK、.

    NET4.0上でも動作は OKです。

    ややこしい事に、VisualStudio 2005 ServicePack1は、windows7には、installできません。
 
    結局、windowsXP、 VisualStudio 2005 with VisualStudio 2005 ServicePack1で、buildし、windows7で使用しましたが

    GDCMのsourceforge net から、

    既にコンパイルされた dllファイルができているものも .NET4.0で、正常に作動します。

    これを使えばいいと、思います。
  
    GDCM-2.0.17-Windows-x86.exeが、既に出ています。

    とにかく、今回の要は

    C#のラッパーである、 mySQLiteModel classです。

    これは、SQLiteでおこずかいちょう の、お陰です。 改めて 御礼申し上げます。

以下は、mySQLiteModel class の一部抜粋です。

 void mySQLite::EnumRecords_Studies(System::String^ myQuery){
  if(notification_==nullptr)return;
  const char* command=(char*)Marshal::StringToHGlobalAnsi(myQuery).ToPointer();
 
  notification_(this,gcnew EnumStart());
  sqlite3_stmt* statement;
  sqlite3_prepare_v2(db_,command,100,&statement,0);

  while(sqlite3_step(statement)==SQLITE_ROW){
   Record^ rec=gcnew Record();
   //ここは char* で受けるべき
   rec->StudyInsta=const_char_to_clistr(sqlite3_column_text(statement,0));
   rec->SudyDate=const_char_to_clistr(sqlite3_column_text(statement,1));
   rec->StudyTime=const_char_to_clistr(sqlite3_column_text(statement,2));
   rec->StudyID=const_char_to_clistr(sqlite3_column_text(statement,3));
   rec->StudyDescr=const_char_to_clistr(sqlite3_column_text(statement,4));
   rec->AccessionN=const_char_to_clistr(sqlite3_column_text(statement,5));
   rec->ReferPhysi=const_char_to_clistr(sqlite3_column_text(statement,6));
   rec->PatientAg=const_char_to_clistr(sqlite3_column_text(statement,7));
   rec->PatientWe=const_char_to_clistr(sqlite3_column_text(statement,8));
   rec->StudyModal=const_char_to_clistr(sqlite3_column_text(statement,9));
   rec->PatientNam=const_char_to_clistr(sqlite3_column_text(statement,10));
   rec->PatientBir=const_char_to_clistr(sqlite3_column_text(statement,11));
   rec->PatientSex=const_char_to_clistr(sqlite3_column_text(statement,12));
   rec->PatientID=const_char_to_clistr(sqlite3_column_text(statement,13));

   rec->dSpace=const_char_to_clistr(sqlite3_column_text(statement,17));

   notification_(this,rec);
  }
  sqlite3_finalize(statement);
  notification_(this,gcnew EnumEnd());
  free_char((void*)command);
 }

 void mySQLite::SetRecordListener(EventHandler^ notif){
  notification_=notif;
 }

}

    さて、  

    これで、1枚の画像を見ることが、できましたので

    次は、CT画像を見るために、

    複数枚の画像を見ることを、試してみたいと、思っています。

H.23.10.20