日中友好TRIセミナー

本日は朝から沖縄南部徳洲会病院で日中友好TRIセミナーを開催しました。沖縄と中国と言えば、今年は尖閣問題で対立しています。開催が危ぶまれたのですが、僕と中国とのかかわりはもっと深いため、開催することを決定しました。

沖縄南部徳洲会病院の方々には大変お世話になりましたが、お蔭様で大変良いセミナーが開催できました。医学的・科学的な交流のみならず、日中間の友好にも寄与できたと思いますし、実際に沖縄経済にも少なからず貢献できたと思います。

症例は最少から制約しましたが、そこはライブデモンストレーションです。最終症例はなかなか見ごたえがあるものだったと思います。このような困難な症例も成功裡に終えることができて嬉しく思いますし、自分自身「結構すごい」、「またまだやれる」と思いました。

今 那覇空港ラウンジです。これから羽田に戻ります。

ハフマン符号表は完成したものの

一昨日ハフマン符号表解読プログラムが完成したものの、いくつかのDICOM XA fileを解読していたらこんな符号表に出くわしました

実際の DICOM XAより抽出したハフマン符号表

あれあれ?という感じです 何故ってビット長が何と値 16まであるのです。だって、DICOM XAの1 pixelは 8bitsの深度の筈です。実際のこのファイルのBits Allocatedなどを調べても8 bitsとしてしか記載は無いのです。だとすると、その値の差分も8 bits以内に収まらねばなりません。これってどういうこと? 何で 16 bitsあるの?

誰か御存知の方 ご指導頂けませんでしょうか? 大混乱しています。

これから沖縄で日中友好TRIセミナー開催

今 羽田空港 これから那覇に飛び、当地 沖縄南部徳洲会病院を舞台に、日中友好TRIセミナーを開催します。日本とアジア近隣諸国、特に沖縄近海では、このところ国土をめぐるいさかいが続きます。その中で、開催するのはとても神経を使いますが、これで止めれば負けたことになります。強い気持ちで乗り越えるのです。
那覇まで飛びますが、一泊のみで明日の夕方には現地を飛び立ち戻ります。

そしてついにハフマン符号表が完成です

そらに改良しました。ハフマン符号と、その値の組み合わせ、つまりハフマン符号表を完成させました。もちろん実際のDICOM Viewerにおいては、こんな表をいちいち見せません。これはあくまでもプログラムのチェック用にわざわざ出力させているのです。
実際のDICOM XA fileを読み込み、DHTを解読し、ハフマン符号とそれが示す値(この値は、続く何ビットが実際の値かを示しています)のペアの表を作成することに成功しました。それが以下のものです

ハフマン符号とその値の出力結果

そうなると再び登場

そうなると、出力チェックのために 少し仕掛けが必要です。これも大分前に作成したプログラム部品です

#ifndef __OSTREAM_H_
#define __OSTREAM_H_
// 二進出力を可能とした ostream (Programmedd by Shigeru SAITO, MD on June 5th, 2009)
// modified by S. SAITO, MD on December 14th, 2010
// 使い方: このheader fileをインクルードし、名前空間ostを用いてcoutに出力する
// ost::ostream cout; とcoutを生成し、
// cout << value;
// のように使う、そして標準出力については std::cout << std::endl; のようにする
// 入力の型(BYTE, WORD, int)に応じて自動的に8桁、16桁で出力するがsetw()で出力桁数を変更できる
#include <iostream>
#include <iomanip>
#include <string>
typedef unsigned char BYTE;
typedef unsigned short WORD;

namespace ost {
	enum e_manip {bin, hex, dec, endl};
	class setw {
		int width_;
		setw() {}	// 引数無しコンストラクタ禁止
	public:
		setw(int n);
		int get_width(void) const;
	};

	class ostream {
	private:
		int width, bitWidth;
		e_manip mManip;
		bool mIsSetW;
		void setWidth(int w);
		void out(int n);
	public:
		ostream();
		ostream & operator << (const setw & sw);
		ostream & operator << (const e_manip em);
		ostream & operator << (const BYTE n);
		ostream & operator << (const WORD n);
		ostream & operator << (const int n);
		ostream & operator << (const char* s);
		ostream & operator << (const std::string str);
	};

};	// namespace ost

何と 2009年6月に作ったものなのですね。二進出力を可能とするクラスです。どうしてC++やCに二進出力が標準的に備わっていないのか不思議で仕方ありません。普段使わない八進出力なんて存在するのに・・・です。