O-Komeブログ

医用画像処理が主な女子日記

画像診断について学ぶ

こんにちは!ぐででです(◍ ´꒳` ◍)

最近知った、

医用画像を扱う際に、参考になったWebサイトを紹介します。

*画像診断cafe http://medicalimagecafe.com/ *

 医療画像を用いた研究や開発をする際に、画像のどこがどの体の部位なのか、などって最初はわからないですよね。。。でも、画像処理をするためには、画像を知ることはアルゴリズムよりも一番大切なんじゃないかなって思ってます

 ★このWebサイトは、マウスのカーソルをあわせるだけで、X線やCT、MRIなど様々な画像での組織名やその他名称を教えてくれます!しかも、CTやMRIなどの画像は、スクロールすればそのスライスごとの画像で、組織を教えてくれます!

 特に、工学系など今まで医用画像を見たことがないって人は、本当に参考になったので、ぜひご活用ください。

 

 

ITKで画像処理を始めよう(例:2値化のプログラム)

こんにちは!

今日はITKで画像処理を行う流れについてですヽ(・ω・´メ)

私はC++を用いていますので、今後もC++で書いていきます。

☆-----------------------------------------------------------------------☆

■大きな流れ

reader(画像の入力) ⇒ 処理 ⇒ writer(画像の出力)

となっています。

「処理」の部分に自分がやりたい処理を書きます。

 

■ITKのクラスの呼び出し

typedef itk::クラス名<テンプレート引数>  適当な名前型;

適当な名前型::Pointer  適当な変数名=適当な名前型::New();

適当な変数名 -> 関数;  ←必要な、行いたい処理

適当な変数名 -> Update();  ←ここまでの処理が実行される

 

■使ってみよう(例)2値化:固定しきい値

<入出力に必要なヘッダ>

itkImageFileReader.h
・itkImageFileWriter.h
・itkImage.h 

<2値化に必要なヘッダ>

itkBinaryThresholdImageFilter.h

f:id:gudede:20160715150947p:plain

 

// -------- 必要なヘッダをinclude --------- //

//****** ITK ******//
#include "itkImageFileReader.h"
#include "itkImageFileWriter.h"
#include "itkImage.h"
// 2値化
#include "itkBinaryThresholdImageFilter.h"

//****** C++ ******//
#include<iostream>

#include<string>

using namespace std;

 

int main(int argc,char *argv[])

{

    if( argc < 3 )
    {
        cerr << "引数が一致しません." << endl;
        return EXIT_FAILURE;
    }

    //使用するピクセルをtypedef
    typedef short InputPixelType;
    typedef short OutputPixelType;

    const unsigned int Dimensions = 3; // 次元数

 //使用する領域・画像サイズをtypedef
    typedef itk::Image< InputPixelType, Dimensions > InputImageType;
    typedef itk::Image< OutputPixelType, Dimensions > OutputImageType;


    //■□■□■□■□■□■□ 出力用 □■□■□■□■□■□■//
    typedef itk::ImageFileWriter< OutputImageType > WriterFilterType;
    WriterFilterType::Pointer writer = WriterFilterType::New();


    //■□■□■□■□■□■□ 必要な変数 □■□■□■□■□■□■//
    string inputfilename, outputfilename; // 入力・出力名
    int UThreshold = 200; //Upperしきい値の値(使用したいしきい値)
    int LThreshold  = 100; //Lowerしきい値の値(使用したいしきい値)

    /************************************/
    //■□■□■□■□■□■□ 設定 □■□■□■□■□■□■//
    inputfilename   = argv[1];
    outputfilename = argv[2];

    cout << inputfilename << " Start!" << endl;
    /************** 入力画像について **************/
    cout << "/*-------- 入力画像の読み込み ------------*/ " << endl;
    //■□■□■□ 変数 □■□■□■//
    typedef itk::ImageFileReader< InputImageType > ReaderFilterType;
    ReaderFilterType::Pointer reader = ReaderFilterType::New();

    //■□■□■□ 原画像 Reader フィルタ □■□■□■//
    cout << "Reader starts." << endl;
    reader -> SetFileName( inputfilename ); // 入力画像の名前
    try{
        reader -> Update();
    }
    catch(itk::ExceptionObject &e){  // エラー処理
        cerr << "Can't Reader." << endl;
        cerr << e << endl;
        return EXIT_FAILURE;
    }
    cout << "Reader has finishied.\n" << endl;

    /************** 2値化のフィルタ **************/
    cout << "/*-------- itkBinaryフィルタ ------------*/ " << endl;
    //■□■□■□ 変数 □■□■□■//
    typedef itk::BinaryThresholdImageFilter< InputImageType, OutputImageType >     BinaryType;
    BinaryType::Pointer binary = BinaryType::New();

    //■□■□■□ binary フィルタ □■□■□■//
    cout << "itkBinary Starts! " << endl;
    binary -> SetInput( reader ->GetOutput() ); //readerで読み込んだ画像をセット
    binary -> SetUpperThreshold( UThreshold ); //2値化の上限値
    binary -> SetLowerThreshold( LThreshold ); //2値化の下限値
    binary -> SetInsideValue( 255 ); //上限値と下限値の間の画素値
    binary -> SetOutsideValue( 0 ); //下限値以下、上限値以上のときの画素値
    try{
        binary -> Update();
    }
    catch(itk::ExceptionObject &e){ // エラー処理
        cerr << "Can't Binary Filter." << endl;
        cerr << e << endl;
        return EXIT_FAILURE;
    }

    cout << "itkBinary has finished. " << endl;

    /************** Writer **************/
    cout << "/*-------- 出力画像へ書き込み ------------*/ " << endl;
    //■□■□■□ Writer フィルタ □■□■□■//
    cout << "Writer starts." << endl;
    writer -> SetInput( binary -> GetOutput() ); // 処理後画像をセット
    writer -> SetFileName( outputfilename );
    try{
        writer -> Update();
    }
    catch(itk::ExceptionObject &e){
        cerr << "Can't Writer." << endl;
        cerr << e << endl;
        return EXIT_FAILURE;
    }

    cout << "Completion of Writing!" << endl;

    cout << "Finish!" << endl;

    return 0;
}

☆-----------------------------------------------------------------------☆

このように、入力⇒処理⇒出力、と書いていけば、自分の行いたい画像処理のプログラムを簡単に書くことが出来ますヽ(○`・v・)人(・v・´●)ノ

次回からは他のフィルタについても書いていきますヾ(=・ω・=)o

画像処理1.「デジタル画像とアナログ画像」

超初心者向けの画像処理の記事を書いていこうと思います(`・ω・。)っノ

ぐででの主観も入ってきますので、ご了承ください。

第1回は「デジタル画像とアナログ画像」です。

☆━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━☆

デジタル画像とアナログ画像について簡単に。

  • デジタル画像とは、PCやスマホなどで見ている画像のことで、各色を持った画素の集まりでできています。
  • アナログ画像とは、私たちが実際に触ることができる、絵や写真のことです。

f:id:gudede:20150221102057p:plain

↑ デジタル画像のイメージ

ものすごく簡単に書きましたが、こんな感じのイメージです(´ω`)ノでは

ITKの設定方法

こんにちは!U,,・ω・)ノ

今日は、ITK のインストールと設定について記事を書きます。

■ ITKってなに?

→ ITK( Insight Segmentation and Registantion Toolkit )とは、

  医用系画像解析のための、オープンソースソフトウェアです。2次元や3次元、もっと数の多い次元でのセグメンテーションやレジストレーションアルゴリズムなどを提供しています。(参考:ITK - Segmentation & Registration Toolkit

■ ITKを設定しよう!

<使用した環境>(。・ω・)ノ゛

  • OS :Windows7 Professional
  • ITK ( InsightToolkit-4.5.2 )
  • CMake ver. 2.8.12.2
  • Visual Studilo 2012 ( Visual Studio 11 )

1. まずはじめに、CMakeをインストール

http://www.cmake.org/download/から、CMakeをダウンロードする(現在の最新版は3.1.0)。私は、cmake-2.8.12.2-win32-x86.exeを使用しています。

インストールの際の選択肢は、すべてデフォルトでOK!

2. 次に、ITKのダウンロード

http://www.itk.org/ITK/resources/software.htmlから、ITKのInsightToolkitをダウンロードする(現在の最新版は、4.6.1)。私は、InsightToolkit-4.5.2.zipを使用しています。

3. ITKを設定しよう

① Cドライブ直下に、「ITK」という名前のフォルダを作成します。(フォルダ名は、自分がわかりやすい名前ならなんでもOKです。)

f:id:gudede:20141204095928p:plain

 

② ITKフォルダの中に、2.でダウンロードした、InsightToolkitをこのフォルダの中に展開します。

 

③ ITKフォルダの中に、もう2つ、「Projects」、「ITK_build」という名前のフォルダを作成します。(フォルダ名はなんでもいいです)

「Projects」フォルダ  :今後作成するプログラムを保存する場所

「ITK_build」フォルダ:ITKのビルド用フォルダ

f:id:gudede:20141204100513p:plain

 

④ CMakeを起動します。

スタート→すべてのプログラム→CMake2.8(自分のダウンロードしたバージョン名)→CMake(cmake-gui) で起動します。

 

⑤ CMakeを使って、ITKをビルドするためのプロジェクトを作成します。

Where is the source code: C:/ITK/InsightToolkit-4.5.2
Where to build the binaries:C:/ITK/ITK_build

と入力。

f:id:gudede:20141204101438p:plain

 入力したら、まず「Configure」のボタンをクリック!

おそらく、Visual Studioのバージョンを選択するタブが出てくるので、自分のPCに合わせて選択。私は、Visual Studio 11を使用していて(Visual Studio自体は32bit版なのですが)、PCは64bitなので、「Visual Studio 11 Win64」を選択。

f:id:gudede:20141204101819p:plain

選択したら、「Finish」を押して、”Configuring done"と表示されればOKです!

 

次に、「Generate」のボタンもクリックして、”Generating done"と表示されればCMakeの完了です。

 

⑥ ITKをビルドする

それでは、C→ITKフォルダ→ITK_buildフォルダへ移動しましょう。

「ITK.sln」というソリューションができているはずです!見つけたら、ダブルクリックして、Visual Studio 2012で開きましょう。

開いたら、「x64」になっていることを確認して、「Debug」と「Release」の両方でビルド(F7)を行えば、ビルド完了です。

f:id:gudede:20141204102802p:plain

 ※原因はわかりませんが、Visual Studio2012では、"ALL_BUILDがありません"というエラーメッセージが出ます。一応、このメッセージは、無視してもITKを使用することはできます。ビルドできない、などの問題にあたったときは、ALL_BUILD以外をビルドしてみてください。

 

以上で、ITKの設定は完了です!(○´∀`)ノ゙

ありがとうございました~

 

セキュリティ・キャンプに行ってきました

今年の8月12日~16日、セキュリティ・キャンプ全国大会2014に、参加してきました(●´∀`)ノ

「セキュリティ・キャンプ全国大会2014」:IPA 独立行政法人 情報処理推進機構

かなり遅くなってしまいましたが、感想を書きたいと思います。

書き足りないくらいに、色々なことを感じたり経験したりしたのですが、長い文章を書くのは苦手なので、すみません、変な文章になっているかと思います。

 

●・○・●・○・●・○・●・○・●・○・●・○・●・○・●・○・●・○・

セキュリティ・キャンプに応募したきっかけ

2月頃、講演に来られたIPAの方のお話の中で、セキュリティ・キャンプの存在を知りました。

このときに、楽しそう!と思ったのをきっかけに、友達と一緒にセキュリティ・キャンプを目指すために、勉強会を始めました。

勉強会では、ネットワークの基礎から勉強をしたのですが、知識がなかなか追いつかなくて、セキュキャン(セキュリティ・キャンプの略)に応募するのは、ほんとに直前まで諦めていました。

でも、今回セキュキャンのネットワーククラスに参加したかをるさんに背中を押され、ギリギリ応募することができました。ほんとに感謝です。

 

●・○・●・○・●・○・●・○・●・○・●・○・●・○・●・○・●・○・

セキュリティ・キャンプにて

今回私は、”セキュアなシステムを作ろうクラス” の “OSの見える化ゼミ” というクラスに参加してきましたヾ(*・∀・)/

 

率直に言うと、

楽しかったです!!!!!!ヽ(゚∀゚ヽ 三 ノ゚∀゚)ノ

 

セキュキャン前、

Twitterをやられている他の参加者のすごいつぶやきを見たり、事前学習を行っているときは、本当に不安で私なんかがやっていけるんだろうか、最後まで生きられるんだろうか、ってすごく心配してました・・・。

 

でも、実際にセキュキャン当日、

 参加者の皆さん、チューターの皆さん、先生の皆さん、

みんな本当に楽しくていい人ばかりだったので、大変でしたけど本当に楽しい時間を過ごすことができました!

 

●・○・●・○・●・○・●・○・●・○・●・○・●・○・●・○・●・○・

専門科目の時間にて(1日目夜~3日目)

“OSの見える化ゼミ” では、今回、先生と1対1で行いました。

先生は、熊猫さくら先生でした。

TOMOYO Linuxの開発を行った方で、とてもすごい方です。

私自身は、全然スキルも追いつかなく、事前学習の段階から落ち込んだりしていました・・。でも、そんなときに熊猫先生が励ましてくださったり、優しく教えてくださいました。そのおかげで、無事セキュキャン専門科目を終えることができました!

 

関係ないですが、

1対1ということで、向かい合って座っていたのですが、写真で見ると「警察署に相談に来ました!」みたいな構図になっていたのをイジられたのがめちゃくちゃ面白かったです。(´∀`)

 

●・○・●・○・●・○・●・○・●・○・●・○・●・○・●・○・●・○・

グループワークにて

セキュキャンでは、4人1組のグループで、ある一つのテーマについて、最終日に発表をするという時間がありました。

私の班では「セキュアな一人部屋」について、どのようにしたら一人部屋をセキュアにできるのか、ということを発表しました。

こういうテーマを、真剣に話し合うのはなんだか面白くて、今でもどうしたらセキュアな一人部屋を構築できるのか考えたりします。

●・○・●・○・●・○・●・○・●・○・●・○・●・○・●・○・●・○・

CTFにて

CTFとは、

Capture  The  Flag  の略だそうです。

(●≧艸≦)

これがいちばん楽しかったです!

理由

■ グループの絆が一番深まった瞬間!

■ 問題を解く楽しさ

です。

 

準備の段階で、みんなエナジードリンクを準備!!!

なんか、それまで緊張していた部分が、一気に抜けました。

問題を解くのも楽しかったのですが、みんなで協力してる、という充実感があったから楽しかったのかもしれません(´ω`*)

チームのみんな、ありがとうございました。

 

●・○・●・○・●・○・●・○・●・○・●・○・●・○・●・○・●・○・

環境にて

セキュキャンの生活は、普段の生活より健康的でした(`・ω・´)vイェイ!

ごはんが美味しくて、野菜もたくさん取れて、朝きちんと起きて・・・

朝、ご飯が出てくる、ってすばらしいですね。

 

●・○・●・○・●・○・●・○・●・○・●・○・●・○・●・○・●・○・

そんなこんなで

セキュリティ・キャンプ、

大変だったときもたくさんありましたけど、全国各地の参加者やチューター、先生方とお話できたのは本当に楽しく、良い経験になりました。

まずは、セキュリティ・キャンプで得た経験を自分自身の研究にも生かしていきたいです。

ありがとうございました。

 

 

 

 

 

 

はじめまして´ω`

(●・ω・)ノ------------start------------

名前:ぐでで

趣味:食べること

一言:まったりとした地方の学生です。

   ゆるっと更新していきたいので、よろしくお願いします。

(○・ω・)ノ-------------end-------------