データ構造 | 列挙型 | 関数
ネームスペース mist::dicom

DICOMファイルを操作する関数・クラスを含む名前空間 [詳細]

データ構造

class  dicom_element
 DICOMのタグとその要素を管理するクラス [詳細]
class  dicom_tag_container
 DICOMタグのデータを管理するコンテナ [詳細]
class  dicom_image_info
 DICOMの画像情報を管理する [詳細]
class  dicom_info
 DICOMの全情報を管理する [詳細]
class  dicom_tag
 DICOMタグ(DICOMデータの内容を表すもの) [詳細]
class  dicom_uid
 DICOMのUIDを扱うクラス [詳細]
class  dicom_tag_table
 MISTで扱うことができるDICOMタグの一覧を登録するクラス [詳細]
class  dicom_uid_table
 DICOMが扱う UID の一覧を管理するクラス [詳細]

列挙型

enum  compress_type {
  RAW, JPEG, JPEGLS, JPEG2000,
  RLE
}
 DICOMデータの圧縮タイプ [詳細]
enum  photometric_interpretation_type { ,
  MONOCHROME1, MONOCHROME2, RGB, PALETTE_COLOR,
  YBR_FULL_422, YBR_FULL
}
 DICOMデータの画素の表現タイプ [詳細]
enum  dicom_vr {
  UNKNOWN, AE, AS, AT,
  CS, DA, DS, DT,
  FL, FD, IS, LO,
  LT, OB, OF, OW,
  PN, SH, SL, SQ,
  SS, ST, TM, UI,
  UL, UN, US, UT
}
 DICOMのVRタグの種類 [詳細]

関数

unsigned char * check_dicom_file (unsigned char *p, unsigned char *e)
 指定したメモリ領域がDICOM画像を現しているかどうかをチェックする
bool is_sequence_separate_tag (const unsigned char *p, const unsigned char *e)
 シーケンスタグかどうかを判定する
bool is_sequence_element_end (const unsigned char *p, const unsigned char *e)
 シーケンス要素終了タグかどうか
bool is_sequence_tag_end (const unsigned char *p, const unsigned char *e)
 シーケンス終了タグかどうか
unsigned char * read_dicom_tag (unsigned char *p, unsigned char *e, dicom_tag &tag, difference_type &numBytes, bool from_little_endian=true)
 DICOMのタグを読み込み,テーブルに登録されているものと照合する
bool process_dicom_tag (const dicom_tag &tag, unsigned char *byte, difference_type num_bytes, bool from_little_endian=true)
 DICOMのタグに対し,各VRごとの処理を行う
unsigned char * process_dicom_tag (dicom_tag_container &dicm, unsigned char *pointer, unsigned char *end_pointer, bool from_little_endian=true, bool is_in_sequence_tag=false)
 DICOMのタグを処理する
bool read_dicom_tags (dicom_tag_container &dicm, unsigned char *buff, size_type numBytes, bool is_little_endian=true)
 DICOMファイルを読み込んで,全てのDICOMタグを処理しテーブルに登録する
bool read_dicom_tags (dicom_tag_container &dicm, const std::string &filename)
 DICOMファイルを読み込んで,全てのDICOMタグを処理しテーブルに登録する
bool write_dicom_tag_explicit_vr (unsigned short group, unsigned short element, dicom_vr vr, const unsigned char *data, size_t num_bytes, FILE *fp, bool to_little_endian=true)
 DICOMのタグ集合を Explicit VR 形式でファイルに書き出す
bool write_dicom_tag_implicit_vr (unsigned short group, unsigned short element, dicom_vr vr, const unsigned char *data, size_t num_bytes, FILE *fp, bool to_little_endian=true)
 DICOMのタグ集合を Implicit VR 形式でファイルに書き出す
bool write_dicom_tag_explicit_vr (const dicom_element &e, FILE *fp, bool to_little_endian=true)
 DICOMのタグ集合を Explicit VR 形式でファイルに書き出す
bool write_dicom_tag_implicit_vr (const dicom_element &e, FILE *fp, bool to_little_endian=true)
 DICOMのタグ集合を Implicit VR 形式でファイルに書き出す
size_t get_write_dicom_tag_size (const dicom_element &e, bool implicitVR)
 DICOMのタグを出力する際に各タグが必要とするバイト数を計算する
void compute_group_length (dicom_tag_container &dicm, bool implicitVR)
 DICOMの Group Length を計算し,タグに設定する
bool write_dicom_tags (const dicom_tag_container &dicom, const std::string &filename)
 DICOMのタグ集合をファイルに書き出す
dicom_uid_tableget_dicom_uid_table ()
 DICOMのUIDに変換する
dicom_uid get_uid (const std::string &uid)
 DICOMのUIDに変換する
bool is_dicom_class_uid (const std::string &uid)
 DICOMのUIDテーブルに存在するかどうかを調べる
dicom_uid get_uid (const unsigned char *str, difference_type numBytes)
 DICOMのUIDに変換する
compress_type get_compress_type (const std::string &uid)
 UIDを元に圧縮タイプを取得する
double find_tag (const dicom_tag_container &dicm, unsigned short group, unsigned short element, double default_value)
 dicmコンテナ内に (group, element)のデータが存在するか調査してその値を返す(見つからない時は default_value を返す)
float find_tag (const dicom_tag_container &dicm, unsigned short group, unsigned short element, float default_value)
 dicmコンテナ内に (group, element)のデータが存在するか調査してその値を返す(見つからない時は default_value を返す)
signed int find_tag (const dicom_tag_container &dicm, unsigned short group, unsigned short element, signed int default_value)
 dicmコンテナ内に (group, element)のデータが存在するか調査してその値を返す(見つからない時は default_value を返す)
unsigned int find_tag (const dicom_tag_container &dicm, unsigned short group, unsigned short element, unsigned int default_value)
 dicmコンテナ内に (group, element)のデータが存在するか調査してその値を返す(見つからない時は default_value を返す)
signed short find_tag (const dicom_tag_container &dicm, unsigned short group, unsigned short element, signed short default_value)
 dicmコンテナ内に (group, element)のデータが存在するか調査してその値を返す(見つからない時は default_value を返す)
unsigned short find_tag (const dicom_tag_container &dicm, unsigned short group, unsigned short element, unsigned short default_value)
 dicmコンテナ内に (group, element)のデータが存在するか調査してその値を返す(見つからない時は default_value を返す)
std::string find_tag (const dicom_tag_container &dicm, unsigned short group, unsigned short element, const std::string &default_value)
 dicmコンテナ内に (group, element)のデータが存在するか調査してその値を返す(見つからない時は default_value を返す)
std::string find_tag (const dicom_tag_container &dicm, unsigned short group, unsigned short element, const char *default_value)
 dicmコンテナ内に (group, element)のデータが存在するか調査してその値を返す(見つからない時は default_value を返す)
bool get_dicom_info (const dicom_tag_container &dicm, dicom_info &info)
 DICOMコンテナからDICOMの情報を取得する
bool is_element_begin (const unsigned char *p, const unsigned char *e)
 要素タグの開始位置かどうか
bool is_element_end (const unsigned char *p, const unsigned char *e)
 要素タグの終了位置かどうか
unsigned char * decode_RLE (unsigned char *psrc, unsigned char *psrc_end, unsigned char *pdst, unsigned char *pdst_end, bool from_little_endian=true)
 RLE圧縮ファイルのデコーダ
unsigned char * decode_JPEG (unsigned char *psrc, unsigned char *psrc_end, unsigned char *pdst, unsigned char *pdst_end)
 JPEG圧縮ファイルのデコーダ
bool decode (dicom_element &element, const dicom_info &info)
 圧縮ファイルのデコーダ
unsigned int construct_dicom_tag (unsigned short group, unsigned short element)
 (group, element) のDICOMタグ識別子を作成する
unsigned short get_dicom_group (unsigned int group_element)
 (group, element) のDICOMタグ識別子を作成する
unsigned short get_dicom_element (unsigned int group_element)
 (group, element) のDICOMタグ識別子を作成する
dicom_vr get_dicom_vr (const std::string &vr)
 文字列からVRタグを作成する
std::string get_dicom_vr (const dicom_vr &vr)
 VRタグを文字列に直す

説明

DICOMファイルを操作する関数・クラスを含む名前空間

列挙型

DICOMデータの圧縮タイプ

列挙型の値:
RAW 

無圧縮

JPEG 

JPEG圧縮

JPEGLS 

ロスレスJPEG圧縮

JPEG2000 

JPEG2000圧縮

RLE 

ランレングス(RLE)圧縮

DICOMのVRタグの種類

列挙型の値:
UNKNOWN 

不明なVR

AE 

応用エンティティ 16バイト以下

AS 

年齢       4バイト固定

AT 

属性タグ     4バイト固定

CS 

コード列     16バイト以下

DA 

日付       8バイト固定

DS 

10進数(文字列) 16バイト以下

DT 

日時       26バイト以下

FL 

4バイト実数   4バイト固定

FD 

8バイト実数   8バイト固定

IS 

整数(文字列)  16バイト以下

LO 

長列       64バイト以下

LT 

テキスト     1024バイト以下

OB 

バイト列     無制限

OF 

浮動小数点文字列 232-4 maximum

OW 

ワード列     無制限

PN 

患者名      64バイト以下

SH 

短列       16バイト以下

SL 

符号つき長    4バイト固定

SQ 

項目シーケンス  無制限

SS 

符号つき短    2バイト固定

ST 

短テキスト    1024バイト以下

TM 

時間       16バイト以下

UI 

UID      64バイト以下

UL 

符号なし長    4バイト固定

UN 

未知       不明

US 

符号なし短    2バイト固定

UT 

無制限テキスト

DICOMデータの画素の表現タイプ

列挙型の値:
MONOCHROME1 

背景白のグレースケール

MONOCHROME2 

背景黒のグレースケール

RGB 

RGBの並び

PALETTE_COLOR 

カラーテーブル

YBR_FULL_422 

YBR_FULL 

関数

unsigned char* mist::dicom::check_dicom_file ( unsigned char *  p,
unsigned char *  e 
)
inline

指定したメモリ領域がDICOM画像を現しているかどうかをチェックする

注意
メモリ領域は 132 バイト以上なくてはならない
引数
[in]p… 先頭メモリ位置
[in]e… 末尾メモリ位置
戻り値
DICOMのプリアンブルの次を指すポインタ

参照元 read_dicom_tags().

void mist::dicom::compute_group_length ( dicom_tag_container &  dicm,
bool  implicitVR 
)
inline

DICOMの Group Length を計算し,タグに設定する

引数
[in,out]dicm… DICOMタグ毎にデータを登録するテーブル
[in]implicitVR… Implicit VR 形式かどうか

参照先 mist::dicom::dicom_element::data, mist::dicom::dicom_tag::enable, mist::byte_array< T >::get_bytes(), mist::dicom::dicom_tag::get_element(), mist::dicom::dicom_tag::get_group(), get_write_dicom_tag_size(), と mist::dicom::dicom_element::num_bytes.

参照元 write_dicom_tags().

bool mist::dicom::decode ( dicom_element &  element,
const dicom_info &  info 
)
inline
unsigned char* mist::dicom::decode_JPEG ( unsigned char *  psrc,
unsigned char *  psrc_end,
unsigned char *  pdst,
unsigned char *  pdst_end 
)
inline

JPEG圧縮ファイルのデコーダ

引数
[in]psrc… 入力データの先頭ポインタ
[in]psrc_end… 入力データの末尾ポインタ
[in]pdst… 出力データの先頭ポインタ
[in]pdst_end… 出力データの末尾ポインタ
戻り値
出力データ中のデコード終了位置
unsigned char* mist::dicom::decode_RLE ( unsigned char *  psrc,
unsigned char *  psrc_end,
unsigned char *  pdst,
unsigned char *  pdst_end,
bool  from_little_endian = true 
)
inline

RLE圧縮ファイルのデコーダ

引数
[in]psrc… 入力データの先頭ポインタ
[in]psrc_end… 入力データの末尾ポインタ
[in]pdst… 出力データの先頭ポインタ
[in]pdst_end… 出力データの末尾ポインタ
[in]from_little_endian… 入力データがリトルエンディアンかどうか
戻り値
出力データ中のデコード終了位置

参照先 mist::to_current_endian().

参照元 decode().

size_t mist::dicom::get_write_dicom_tag_size ( const dicom_element &  e,
bool  implicitVR 
)
inline

DICOMのタグを出力する際に各タグが必要とするバイト数を計算する

引数
[in]e… DICOMタグ
[in]implicitVR… Implicit VR 形式かどうか
戻り値
タグのバイト数

参照先 AT, FD, FL, mist::dicom::dicom_element::num_bytes, OB, OF, OW, SL, SQ, SS, UL, UN, UNKNOWN, US, UT, と mist::dicom::dicom_tag::vr.

参照元 compute_group_length().

bool mist::dicom::is_element_begin ( const unsigned char *  p,
const unsigned char *  e 
)
inline

要素タグの開始位置かどうか

引数
[in]p… 先頭ポインタ
[in]e… 末尾ポインタ
戻り値
true… 要素タグの場合
false… それ以外

参照元 decode().

bool mist::dicom::is_element_end ( const unsigned char *  p,
const unsigned char *  e 
)
inline

要素タグの終了位置かどうか

引数
[in]p… 先頭ポインタ
[in]e… 末尾ポインタ
戻り値
true… 要素終了タグの場合
false… それ以外
bool mist::dicom::is_sequence_element_end ( const unsigned char *  p,
const unsigned char *  e 
)
inline

シーケンス要素終了タグかどうか

引数
[in]p… 先頭ポインタ
[in]e… 末尾ポインタ
戻り値
true… シーケンス要素終了タグの場合
false… それ以外

参照元 process_dicom_tag().

bool mist::dicom::is_sequence_separate_tag ( const unsigned char *  p,
const unsigned char *  e 
)
inline

シーケンスタグかどうかを判定する

引数
[in]p… 先頭ポインタ
[in]e… 末尾ポインタ
戻り値
true… シーケンスタグの場合
false… それ以外

参照元 process_dicom_tag(), read_dicom_tag(), write_dicom_tag_explicit_vr(), と write_dicom_tag_implicit_vr().

bool mist::dicom::is_sequence_tag_end ( const unsigned char *  p,
const unsigned char *  e 
)
inline

シーケンス終了タグかどうか

引数
[in]p… 先頭ポインタ
[in]e… 末尾ポインタ
戻り値
true… シーケンス終了タグの場合
false… それ以外

参照元 process_dicom_tag(), write_dicom_tag_explicit_vr(), と write_dicom_tag_implicit_vr().

bool mist::dicom::process_dicom_tag ( const dicom_tag &  tag,
unsigned char *  byte,
difference_type  num_bytes,
bool  from_little_endian = true 
)
inline

DICOMのタグに対し,各VRごとの処理を行う

引数
[in]tag… 処理するDICOMタグ
[in,out]byte… 処理されるバイト列
[in]num_bytes… バイト列の長さ
[in]from_little_endian… 入力データがリトルエンディアンかどうか
戻り値
登録されていないタグの場合は false をかえし,正しく処理された場合のみ true を返す

参照先 mist::_is_little_endian_(), AE, AS, AT, CS, DA, DS, DT, FD, FL, IS, LO, LT, OB, OF, OW, PN, SH, SL, SQ, SS, ST, TM, mist::to_current_endian(), UI, UL, UN, US, UT, mist::dicom::dicom_tag::vm, と mist::dicom::dicom_tag::vr.

参照元 process_dicom_tag(), と read_dicom_tags().

unsigned char* mist::dicom::process_dicom_tag ( dicom_tag_container &  dicm,
unsigned char *  pointer,
unsigned char *  end_pointer,
bool  from_little_endian = true,
bool  is_in_sequence_tag = false 
)
inline

DICOMのタグを処理する

シーケンスを表すDICOMタグが見つかった場合は,再帰的に本関数が適用される

引数
[out]dicm… DICOMデータの出力先
[in]pointer… 先頭ポインタ
[in]end_pointer… 末尾先頭ポインタ
[in]from_little_endian… 入力データがリトルエンディアンかどうか
[in]is_in_sequence_tag… VRがSQ内のタグであるかどうか(SQタグは一つにまとめる)
戻り値
次のタグを指すポインタ

参照先 mist::dicom::dicom_tag_container::append(), is_sequence_element_end(), is_sequence_separate_tag(), is_sequence_tag_end(), OB, OW, process_dicom_tag(), read_dicom_tag(), SQ, mist::to_current_endian(), UNKNOWN, と mist::dicom::dicom_tag::vr.

unsigned char* mist::dicom::read_dicom_tag ( unsigned char *  p,
unsigned char *  e,
dicom_tag &  tag,
difference_type &  numBytes,
bool  from_little_endian = true 
)
inline

DICOMのタグを読み込み,テーブルに登録されているものと照合する

テーブルに登録されていない場合は,読み飛ばす. もし,適切なDICOMファイルでない場合は-2を返し,データの終端もしくはファイルの読み込みに失敗した場合は-1を返す. そして,読み飛ばした場合は0を返し,テーブルに登録されている場合は次に存在するデータのバイト数を返す. データを処理する先頭のポインタ 'p' と,データの最後+1をさすポインタ 'e' を与える

引数
[in]p… 先頭メモリ位置
[in]e… 末尾メモリ位置
[out]tag… 取得されたDICOMのタグ
[out]numBytes… DICOMタグが使用しているメモリのバイト数
[in]from_little_endian… 入力データがリトルエンディアンかどうか
戻り値
タグが示すデータ内容を指す先頭ポインタ

参照先 AE, AS, AT, construct_dicom_tag(), CS, DA, DS, DT, FD, FL, get_dicom_vr(), mist::dicom::dicom_tag_table::get_tag(), IS, is_sequence_separate_tag(), LO, LT, OB, OF, OW, PN, SH, SL, SQ, SS, ST, mist::dicom::dicom_tag::tag, TM, mist::to_current_endian(), UI, UL, UN, UNKNOWN, US, UT, と mist::dicom::dicom_tag::vr.

参照元 process_dicom_tag().

bool mist::dicom::read_dicom_tags ( dicom_tag_container &  dicm,
unsigned char *  buff,
size_type  numBytes,
bool  is_little_endian = true 
)
inline

DICOMファイルを読み込んで,全てのDICOMタグを処理しテーブルに登録する

引数
[out]dicm… DICOMタグ毎にデータを登録するテーブル
[in]buff… DICOMのデータが入ったバッファの先頭ポインタ
[in]numBytes… バッファ内のデータのバイト数
[in]is_little_endian… データの中身をリトルエンディアンとして処理するかどうか
戻り値
true… DICOMファイルの処理に成功
false… DICOMファイルではないか,処理できないタグ・データが存在する場合

参照先 check_dicom_file(), mist::dicom::dicom_tag_container::contain(), find_tag(), と process_dicom_tag().

参照元 mist::read_dicom(), と read_dicom_tags().

bool mist::dicom::read_dicom_tags ( dicom_tag_container &  dicm,
const std::string &  filename 
)
inline

DICOMファイルを読み込んで,全てのDICOMタグを処理しテーブルに登録する

引数
[out]dicm… DICOMタグ毎にデータを登録するテーブル
[in]filename… 入力DICOM]ファイル名
戻り値
true… DICOMファイルの処理に成功
false… DICOMファイルではないか,処理できないタグ・データが存在する場合

参照先 read_dicom_tags().

bool mist::dicom::write_dicom_tag_explicit_vr ( unsigned short  group,
unsigned short  element,
dicom_vr  vr,
const unsigned char *  data,
size_t  num_bytes,
FILE *  fp,
bool  to_little_endian = true 
)
inline

DICOMのタグ集合を Explicit VR 形式でファイルに書き出す

引数
[in]group… グループID
[in]element… エレメントID
[in]vr… VRタグ
[in]data… データ
[in]num_bytes… データのバイト数
[out]fp… 出力ファイルストリーム
[in]to_little_endian… 出力データの形式をリトルエンディアンにするかどうか
戻り値
true… DICOMファイルの処理に成功
false… DICOMファイルではないか,処理できないタグ・データが存在する場合

参照先 mist::_is_little_endian_(), AT, FD, FL, mist::from_current_endian(), get_dicom_vr(), is_sequence_separate_tag(), is_sequence_tag_end(), OB, OF, OW, SL, SQ, SS, UL, UN, UNKNOWN, US, と UT.

参照元 write_dicom_tag_explicit_vr(), と write_dicom_tags().

bool mist::dicom::write_dicom_tag_explicit_vr ( const dicom_element &  e,
FILE *  fp,
bool  to_little_endian = true 
)
inline

DICOMのタグ集合を Explicit VR 形式でファイルに書き出す

引数
[in]e… ファイルに出力するDICOMタグ
[out]fp… 出力ファイルストリーム
[in]to_little_endian… 出力データの形式をリトルエンディアンにするかどうか
戻り値
true… DICOMファイルの処理に成功
false… DICOMファイルではないか,処理できないタグ・データが存在する場合

参照先 mist::dicom::dicom_element::data, mist::dicom::dicom_tag::get_element(), mist::dicom::dicom_tag::get_group(), mist::dicom::dicom_element::num_bytes, mist::dicom::dicom_tag::vr, と write_dicom_tag_explicit_vr().

bool mist::dicom::write_dicom_tag_implicit_vr ( unsigned short  group,
unsigned short  element,
dicom_vr  vr,
const unsigned char *  data,
size_t  num_bytes,
FILE *  fp,
bool  to_little_endian = true 
)
inline

DICOMのタグ集合を Implicit VR 形式でファイルに書き出す

引数
[in]group… グループID
[in]element… エレメントID
[in]vr… VRタグ
[in]data… データ
[in]num_bytes… データのバイト数
[out]fp… 出力ファイルストリーム
[in]to_little_endian… 出力データの形式をリトルエンディアンにするかどうか
戻り値
true… DICOMファイルの処理に成功
false… DICOMファイルではないか,処理できないタグ・データが存在する場合

参照先 mist::from_current_endian(), is_sequence_separate_tag(), is_sequence_tag_end(), OB, SQ, UN, と UT.

参照元 write_dicom_tag_implicit_vr(), と write_dicom_tags().

bool mist::dicom::write_dicom_tag_implicit_vr ( const dicom_element &  e,
FILE *  fp,
bool  to_little_endian = true 
)
inline

DICOMのタグ集合を Implicit VR 形式でファイルに書き出す

引数
[in]e… ファイルに出力するDICOMタグ
[out]fp… 出力ファイルストリーム
[in]to_little_endian… 出力データの形式をリトルエンディアンにするかどうか
戻り値
true… DICOMファイルの処理に成功
false… DICOMファイルではないか,処理できないタグ・データが存在する場合

参照先 mist::dicom::dicom_element::data, mist::dicom::dicom_tag::get_element(), mist::dicom::dicom_tag::get_group(), mist::dicom::dicom_element::num_bytes, mist::dicom::dicom_tag::vr, と write_dicom_tag_implicit_vr().

bool mist::dicom::write_dicom_tags ( const dicom_tag_container &  dicom,
const std::string &  filename 
)
inline

DICOMのタグ集合をファイルに書き出す

引数
[out]dicom… DICOMタグ毎にデータを登録するテーブル
[in]filename… 出力DICOMファイル名
戻り値
true… DICOMファイルの処理に成功
false… DICOMファイルではないか,処理できないタグ・データが存在する場合

参照先 mist::dicom::dicom_tag_container::append(), compute_group_length(), mist::dicom::dicom_tag_container::contain(), find_tag(), mist::byte_array< T >::get_bytes(), get_compress_type(), mist::byte_array< T >::length(), RAW, mist::dicom::dicom_tag_container::update(), write_dicom_tag_explicit_vr(), と write_dicom_tag_implicit_vr().


Generated on Wed Nov 12 2014 19:44:29 for MIST by doxygen 1.8.1.2