iview: ヘルプ

● 名前

   iview : 画像ビューア (image viewer)

● 形式

   prompt% java [options] -jar iview.jar [-u] [-signedType +1|0|-1] [-suffix SUFFIX] [-r min max] [-ws xsize ysize] [-wp xposition yposition] [-editON] [-dicomPathPattern pattern] image1 image2 ...

● 機能説明

   画像ファイルの読み込み,表示,書き出しなどを行う画像ビューア.
   
   -suffix によって画像フォーマットを明示的に指定することができる.-uオ
   プションは入力画像の各画素のビットイメージを符号なし整数として解釈す
   る.-r min maxによって画素値を線形補間する.-ws xsize ysize によって,
   ウインドウの初期サイズを与える.-wp xposition yposition によって,ウ
   インドウの初期位置を与える.

● コンポーネントなどの説明

   画像名の表示

      画像名を表示する(表示形式の切り替え可能).

   画素値の表示

      マウスポイントした画素の (x,y,z) と画素値を表示する(表示形式の切
      り替え可能).

   open

      mi, mi.gz(miz), bmp, png, jpg, gif, pnm, eps, cvl, parl, xlsx, mhd, dicom(dcm), mpeg(mpg), mp4, wmv, avi, flv, VOB, ... 

	 ファイルを読みこむ.

	 DICOM ファイルの読み込みに関して.あるディレクトリの直下に
	 1スキャンの DICOM 画像ファイル群が格納されているとする.また,
	 それらのファイルのフルパスはパターン「(?i).*.di?co?m」
	 にマッチしているものとする.その中の一つ(どれでも良い)を指
	 定すると,それらのファイル群を読み込み,1つの3次元画像にま
	 とめて表示する.(フルパスのパターンは,-dicomPathPattern オ
	 プションで変更できる.)DICOM のヘッダ情報は csv 形式データに
	 まとめられ,コメントに保存される.コメントは,file->info で,
	 Information ウィンドウを開くことで表示でき,そのウィンドウの
	 save->comment で保存できる.

	 映像(動画)ファイル mpg, mp4, wmv, flv などを開くには JavaCV
	 や Webcam の設定が必要.映像ファイルはメモリスワップモードで
	 開くので,実行時間はかかるが大きな映像ファイルもオープン可能.
	 (スワップファイルは,File.createTempFile() で生成する.)

	 「hvideopixels_device_?.txt」という名前のファイル(? は
	 0,1,2,...)を開くと,デバイス番号 ? 番の USB カメラをオープン
	 し,映像を表示する.カメラをオープンするためには JavaCV や
	 Webcam の設定が必要.

	 拡張子が csv もしくはfcsvの場合は侯補点の特徴量データを記述し
	 た FCsv データと仮定して読みこむ.

      mi, ... : large file

	 容量の大きな画像を読み込むときに使うオープンモード.zスライ
	 ス毎にメモリスワップするので実行時間はかかるが大きな画像ファ
	 イルも読み込める.

      screen shot

	 スクリーンショットから読み込む.

      camera

	 カメラから読み込む.ただし,JavaCV や Webcam の設定が必要.

      clipboard

	 クリップボードから読み込む.

      share

	 HIViewJFrame の共有ファイル( /tmp/sharedImageFile_for_HIViewJFrame.mi )から読み込む.

   save

      mi, mi.gz(miz), bmp, png, jpg, gif, pnm, eps, cvl, parl, xlsx, mhd, ... 

	 ファイルを保存する.指定されたファイル名の拡張子に従って,保存
	 する形式を決定する.display はディスプレイバッファを,memoryは
	 メモリバッファを保存する.

      mi, ... : large file

	 容量の大きな画像を書き出すときに使う保存モード.zスライス毎
	 にメモリスワップするので実行時間はかかるが大きな画像ファイル
	 も書き出せる.

      mi : cropped area

	 指定した範囲を mi 画像に保存する.

      named raw

	 raw 形式で保存する.ヘッダ情報はファイル名に埋め込まれる.

      sequential bmp

	 スライス画像を連番の bmp 形式画像として保存する.

      animation gif

	 アニメーション GIF 画像として保存する.

      clipboard

	 クリップボードに保存する.
	 
      share

	 HIViewJFrame の共有ファイル( /tmp/sharedImageFile_for_HIViewJFrame.mi )へ保存する.

   info

      画像情報を表示する.

   print

      画像を印刷する.

   contrl panel

      コントロールパネルの表示/非表示.

   sync{On,Off} / syncAll

      スライス移動などの操作を同期させる.

   resize

      ウインドウサイズを変更する.

   align

      指定されたウインドウ以降のウインドウを,ウインドウ番号順に整列する.

   image name

      画像名を表示する.

   to front

      ウインドウを前面に移動させる.ウインドウ番号の一番若いウインドウ
      を最前面にする.

   setup

      {0,1} 番目以降のフレームに sync,toFront, resize, align を順番に実行する.   

   pixel value

      画素値を表示する.
      rXXX, gXXX, bXXX -> 画素のビットイメージをA青緑赤とみなし,各バンド値を表示する.
      XXX              -> (接頭子なし)画素のビットイメージを整数型とみなし,その値を表示する.
      fXXX             -> 画素のビットイメージを float 型とみなし,その値を表示する.

   coloring

      通常表示0/疑似カラー表示(1,2,3,...)の変更.Ctrl-d で変更可能.

   set min/max

      gray の最小値と最大値をセットする.

   crop/uncrop

      拡大表示する./元に戻す.

   set cursor

      カーソルをセットする.

   describe pixel

      カーソル位置の画素の情報を表示する.

   inverse

      濃淡画像の画素値を反転させる.

   threshold

      2値化する.

   convert

      signed {byte, short, int} -> signed short

	 表示画像の各画素のビットイメージを符号あり byte, short, int と
	 みなし,その画像を符号あり short 画像に変換する.

      signed {byte, short, int} -> signed int
      unsigned {byte, short, int} -> signed short
      unsigned {byte, short, int} -> signed int

	 同上

      double -> int

	 表示画像の各画素のビットイメージを符号あり float とみなし,そ
	 の画像を符号あり int 画像に変換する.

      BGR 32bit -> Y (in YIQ), signed short

	 表示画像の各画素のビットイメージを ABGR とみなし,YIQ の Y 成
	 分の画像(濃淡画像)を生成する.
   
      BGR 32bit -> Y (in YIQ), unsigned byte

	 表示画像の各画素のビットイメージを ABGR とみなし,YIQ の Y 成
	 分の画像(濃淡画像)を生成する.
   
   look&feel

      Look&Feel を変更する.

   overlay mask

      マスクをオーバーレイ表示する.

   evaluate segmentation

      正解画像に対する抽出結果画像の評価を行う.   

   mark

      マークを表示する.詳しくは下記参照.

   help

      ヘルプメッセージの表示.

   z = ?  <|>

      三次元画像の場合のスライス移動.

   gray/red/green/blue <|> <|>

      コントラストを調整する.

   crop roi <|>

      最後にクリックした位置を中心とする指定された大きさの関心領域を抽出する.

   uncrop

      クロップした画像を元に戻す.


   ctrl + {UP_ALLOW, DOWN_ALLOW}

      スライス移動.

   ctrl + mouseWheel

      画像の拡大縮小.

   ctrl + mouseDrag

      画像の並行移動.

   ctrl + d

      coloring の変更.

   shift + {>, <}

      ウインドウ拡大と縮小.

● mark 表示

読みこんだ FCsv 侯補点データのうち,フィールド「id」(小文字)に対応する
文字列が,現在読みこんでいる画像ファイル名の中に含まれている場合(例えば,
idが hhc001 で画像ファイル名が hhc001.parl の場合),その侯補点データ行の
「x」「y」「z」(いずれも小文字)座標に侯補点マークを描く.侯補点マークを
右クリック するとその点の特徴量ベクトルを表示する.フィールド一覧は下記
を参照.

	id	画像ファイル名
	x	x座標(整数値)
	y	y座標(整数値)
	z	z座標(整数値)
	mark_color	マークの色 BGR を整数で指定する(例えば赤は 0x0000ff).
	mark_type	マークの形を指定する.中抜き十字形:cross,丸形:circle
	mark_size	マークの大きさを整数値で指定する


例)画像 ct.mi にマークを表示させる FCsv ファイル.
>>> ここから <<<
id,x,y,z,mark_color,mark_type,mark_size
ct.mi,50,50,0,0x0000ff,cross,5
ct.mi,100,100,1,0xff0000,circle,5
>>> ここまで <<<

● ImageJ によるボリュームレンダリング

1)「sequential bmp」で「save」し,連番ファイル名の bmp ファイルを作成する.

2)ImageJ を起動し,「File」->「Import」->「ImageSequence...」で,作成
した連番ファイルの最初のファイルを開く.「Sequence Options」の「Number
of images」などを確認し,「OK」を押下する.

3)「Plugins」->「3D」->「Volume Viewer」で,「Volume Viewer 2.0」を起動する.

4)(左上のプルダウンメニューで,デフォルト「Slice」を)「Projection」
や「Volume」にする.

5)「Rotation:」などを調整すると角度などを変更できる.

● Windows(64bit版) で JavaCV(1.5) を使用して,映像ファイルの読
み込みとカメラ起動を実行する方法

あるフォルダ(デスクトップでも良い)に iview.jar をコピーする.下記の
バッチファイル iview.bat を作成し,同じフォルダにコピーする.さらに同
じフォルダに,新たにサブフォルダ「supplemental_packages_win64」を作成
する.JavaCV パッケージ(下記参照)をダウンロードし,(a1)-(a6) の jar
ファイルを抽出し,supplemental_packages_win64 フォルダにコピーする.環
境変数「HVIDEO_PIXELS」に「JAVACV」を設定する.(デフォルトは JAVACVな
ので,この環境変数は設定しなくても良い.) そのバッチファイルを使って
iview.jarを起動すると,映像ファイルの読み込みと,カメラ起動が可能とな
る.

あるフォルダ
 |
 +-- iview.jar
 +-- iview.bat
 +-- supplemental_packages_win64
      |
      +-- (a1) javacpp.jar
          (a2) javacv.jar
          (a3) opencv.jar
          (a4) opencv-windows-x86_64.jar
          (a5) ffmpeg.jar
          (a6) ffmpeg-windows-x86_64.jar
  
>>> バッチファイル iview.bat : ここから <<<
rem Wrapper BAT for iview.jar
setlocal
if not "%~0"=="%~dp0.\%~nx0" (
	start /min cmd /c,"%~dp0.\%~nx0" %*
	exit /b %ERRORLEVEL%
)
set BASE_PKG=.\iview.jar
rem set BASE_PKG=%~f0
set SUPP_PKG=.\supplemental_packages_win64\*
java -mx2048m -cp "%BASE_PKG%;%SUPP_PKG%;%CLASSPATH%" iview %1 %2 %3 %4 %5 %6 %7 %8 %9
exit /b %ERRORLEVEL%
endlocal
rem EOF
>>> バッチファイル iview.bat : ここまで <<<

上記のバッチファイルの代わりに,コマンドプロンプト(DOS窓)で次のコマ
ンドを直接実行しても良い.(同じことをしています.)

prompt> java -cp "iview.jar;supplemental_packages_win64\*" iview

他の起動方法もありますので,色々試してみて下さい.また,Linux や
MacOSX 等でも同様な方法で映像ファイルの読み込みとカメラ起動が可能です.

◎ JavaCV(1.5) パッケージ

JavaCV 関連の Web ページ

http://www.pr.cs.tsukuba.ac.jp/~takizawa/softwares/softwaresIIP/softwaresIIP/java_binaries/
http://bytedeco.org/
https://github.com/bytedeco/javacv

などから,javacv-platform-1.5-bin.zip(もしくはそれ以降のバージョン)
をダウンロードし,(a1)-(a6) jar のファイルを抽出し,
supplemental_packages_win64 にコピーする.

● Windows で Webcam(0.3.10) を使用して,カメラ起動をする方法

あるフォルダ(デスクトップでも良い)に iview.jar をコピーする.バッチ
ファイル iview.bat (上記と同じで良い)を作成し,同じフォルダに置く.
同じフォルダにサブフォルダ「supplemental_packages_win64」を作成する.
Webcamパッケージ(下記参照)をダウンロードし,(b1)-(b3) の jar ファイ
ルを抽出し,supplemental_packages_win64 フォルダにコピーする.環境変数
「HVIDEO_PIXELS」に「WEBCAM」を設定する.(こちらは設定する必要があ
る.)バッチファイルを経由して iview.jar を起動すると,カメラ起動が可能
となる.

あるフォルダ
 |
 +-- iview.jar
 +-- iview.bat
 +-- supplemental_packages_win64
      |
      +-- (b1) webcam-capture-0.3.10.jar
          (b2) bridj-0.6.2.jar
          (b3) slf4j-api-1.7.2.jar 

他の起動方法もありますので,色々試してみて下さい.また,Linux や
MacOSX 等でも同様な方法で映像ファイルの読み込みとカメラ起動が可能です.

◎ Webcam パッケージ

Webcam 関連の Web ページ

http://www.pr.cs.tsukuba.ac.jp/~takizawa/softwares/softwaresIIP/softwaresIIP/java_binaries/
http://webcam-capture.sarxos.pl/

などから,webcam-capture-0.3.10-dist.zip (もしくはそれ以降のバージョ
ン)をダウンロードし,(b1)-(b3) の jar ファイルを抽出し,
supplemental_packages_win64 にコピーする.

● カメラ起動

JavaCV か Webcam を設定した後,「hvideo_pixels_device_?.txt」という形
式のファイルを読み込むと ? 番目のカメラを起動し,ウインドウに表示する.
ただし,? は 0,1,2,... などの数値である.例えば,
「hvideo_pixels_device_0.txt」.

● 画像形式

◎ mi 画像形式

  mi 画像形式@筑波大学 知的画像処理研究室
  
  ○ mi 形式の画像は下記のように「MIエレメント」のリストとしてファ
  イルに保存される:
  
     1つ目のMIエレメント + 2つ目のMIエレメント + ...
  
  ○ MI エレメント
  
     1つの MI エレメントは下記のように3つの要素から構成される:
  
        MIキー(short 型) + データ長(int 型) + データ本体(byte の列)
  
     ※ MIキーは1つの画像ではユニークとする.また,MI キーの -1023〜1023 はシステム予約とする.
  
     ※ データ長はデータ本体の長さを表し,その単位はバイトとする.
  
     ※ 「画像タグ」,「画像サイズ」,「画像バッファ」,「コメント」
     は下記に示す MI エレメントとしてファイルに保存される:
  
        名称:        MIキー      データ長          データ本体
        画像タグ:     MIK_TAG     10                MI_TAG(byte 列)
        画像サイズ:   MIK_SIZE    画像次元数*4+4    xsize(int型) ysize(int型) ... depth(int型)
        画像バッファ: MIK_BUFF    画像データ長      画像データ(byte か short か int の列)
        コメント:     MIK_CMNT    コメント長        コメントデータ(byte 列)
  
        ただし,
  
        MIK_TAG  = 0
        MI_TAG   = MIFormat00
        MIK_SIZE = 1
        MIK_BUFF = 2
        MIK_CMNT = 3
  
        * 「画像タグ」エレメントは最初に配置する.また,「画像サ
        イズ」エレメントは「画像バッファ」エレメントより先に配置する.
  
        * 画像次元数は2次元画像の場合 xsize, ysize の2,3次元画
        像の場合 xsize, ysize, zsize の3とする.(4次元以上の画像も定義
        できるが未実装.)
  
        * depth は「bit per pixel」を表す.bit 画像は 1,byte 画
        像は 8, short 画像は 16, int もしくは float 画像は 32 とする
        (int と float は,現在の mi 形式では区別していない).byte,
        short, int は全て signed である.
  
        * 画像バッファにおける画素の並び順
  
           (x,y,z) 番目の画素値は,画像バッファの xsize*ysize*z+xsize*y+x 番目に格納される.
  
  ○ バイトオーダはネットワークバイトオーダー(ビッグエンディアン).
  
  ○ 画像ファイルの拡張子は「mi」を推奨.
  
  ○ クラス HMIElement のサブクラスのオブジェクトを
  addElement(HMIElement) で登録すれば,任意の MI エレメントを取り扱えるよ
  うに拡張できる.
  
  ○ 参照:hpkg.fund.mi.HMappedImage など.


◎ named raw 画像形式

  名前付き raw 画像形式@筑波大学 知的画像処理研究室
  
  ○ ファイル名にヘッダ情報が埋め込まれた Raw 型の画像形式.
  
  ○ ファイル名の形式:
  
  任意文字列_整数値X_整数値Y_整数値Z_文字列PT_文字列EN_整数値OF_任意文字列.raw
  
  最初の3つの整数値{XYZ} は,x,y,z サイズを表す.文字列 PT はピクセルタ
  イプを表し,b,s,i,ub,us,ui とし,それぞれ符号付 8,16,32 画像,符号なし
  8,16,32 画像を表す.文字列 EN はエンディアンを表し,B もしくは L とす
  る.整数値 OF はファイル先頭から最初の画素までのオフセット値(単位はバ
  イト)を表す.この部分は無視されるので,コメント領域等に使用できる.
  
  ○ raw は推奨拡張子を表す.
  
  ○ 画素の並び順は hpkg.fund.mi.HMappedImage 形式と同じとする.
  
  ○ 参照:hpkg.fund.nraw.HNamedRaw など.


◎ mhd 画像形式

  MHD 画像形式
  
  ○ 一つの画像が,ヘッダ情報ファイルと画像データファイルの2つか
  ら構成される画像形式.
  
  ※ ヘッダ情報ファイル(テキスト形式.拡張子は .mhd)
  
     DimSize = xsize ysize (zsize)
  
        画像のサイズを指定する.1次元画像と4次元以上の画像には対応して
        いません.また2次元画像の場合は zsize は不要です.
  
     ElementType = type
  
        画像のタイプを指定する.
        type = {MET_CHAR, MET_UCHAR, MET_SHORT, MET_USHORT, MET_INT, MET_UINT}.
  
     ElementDataFile = rawFileName.raw
  
        画像データファイルのファイル名を指定する.
  
     これら以外のタグは無視されます.      
     
  ※ 画像データファイル(バイナリ形式.拡張子は .raw)
  
     ElementType で指定されたプリミティブデータが格納されている RAW 形式
     の画像データ.画素の並び順は hpkg.fund.nraw.HRaw 形式と同じ.ネット
     ワークバイトオーダーとする.ファイルはカレントディレクトリに保存さ
     れる.
  
  ○ 参照:hpkg.fund.mhd.HMhdRaw など.


◎ その他の画像形式

cvl  : CV研究室@CMU, CV研究室@大阪大学
parl : PaRL研究室@豊橋技術科学大学

● 不具合など

- 本ヘルプメッセージにおける起動方法や使用方法,設定方法に関する説明は,
  jar 形式ファイルを使って本プログラムを起動する際のためのものです.
  bat 形式や exe 形式の場合は該当しない場合があります.

- ImageProcessorCaller などで画素値の最大最小値が変わっても,
   コントロールパネルの(min, max)が変更されない.

   view->set min/max で手動セットして下さい.

- MaskProduce, MaskOverlay と window->direction, rotation との
   相性が悪いです.

   マスク画像を保存して,iview で読み込んで,direction, rotation
   すると良いかもしれません.

- DICOM 画像の読み込みは(一応)できます.

- 複数のカメラを同時起動するとフリーズします.

- ファイルの読み書きなどで SwingWorker していない部分があり,
   読み書き中にフレームがロックしますが,お待ち下さい.

- 例外処理はきちんとできていません.

- その他にも不便な点や,不具合,バグなどあります.
   すみません,順次修正していきます.

● Version: $Id: HIViewJFrame.java,v 1.49 2020/01/28 04:18:55 takizawa Exp $

● Java.Properties
  java.io.tmpdir = /tmp

● item-mark order = ● ◎ ○ ※ * + ー ・ 

---
---
Hotaka TAKIZAWA
data.takix3@gmail.com

このソフトウェアには不具合や不便な点があります.また,電子署名はしてお
りません.これらの不具合,不便な点,改竄の有無などに起因する如何なる損
害等にも,当方は一切の責任を持ちません.全て使用者ご自身の責任でご利用
頂きますようお願い致します.

This software would have bugs and inconvenience. An electronic
signature has not been obtained. The software developer (H.T.) is not
responsible for any disadvantages and damages caused by the
software. Please use the software at your own risk.

Copyright (c) 1998-2020, Hotaka TAKIZAWA, All Rights Reserved.

Copyright © , Hotaka TAKIZAWA, All Rights Reserved.