<   2006年 07月 ( 6 )   > この月の画像一覧
Lenna
最も有名な標準画像であるLennaお姉さまに捧げた詩を見つけた.
http://www.hacksaw.org/~thomasc/old_mit/stories/lena.html
Your silky hair contains a thousand lines
Hard to match with sums of discrete cosines.

http://www.cs.cmu.edu/~chuck/lennapg/playboy_backups/lena.html

"I would ask who she was and they would say, 'She's Lena.' And I would say, 'Who's Lena?' And they'd say, 'I don't know. Just Lena.'"
[PR]
by edogawadai_bio | 2006-07-28 01:11 | img
ImageJ/Jythonを試す
PythonでImageJをインタラクティブに操作したり,プラグインをPythonで書いたりできると素敵だろうなと思い,JythonをWindowsマシンに導入し,ImageJから使ってみた.試した環境はWindows XP,SunのJVM 1.5.0_01-b08,ImageJ 1.37f.
方法やダウンロードすべきファイルへのリンクは
http://www.pensament.net/java/other_plugins.html#interpreter
にあった.また,
http://marcora.caltech.edu/jython_imagej_howto.htm
はWindows環境向けに手順が丁寧に書かれている.

Jythonの導入
http://www.jython.org/Project/index.html
から jython_21.class をもってきて,コマンドプロンプトから起動.
> java -cp . jython-21
これでGUIインストーラが動く.全部導入しても10MB程度.
以降は導入したディレクトリで,
> jython (.bat)
でJythonインタプリタが動く.
>>> import java.awt.Point
等ができることを確認.

ImageJにclasspath追加
ImageJ起動時のclasspathにjython.jarを加える.つまりjavaの-cpオプションに追加.Windowsで最近のImageJではC:\Program Files\ImageJ\ImageJ.cfg中の-cp後にC:\OPT\jython-2.1\jython.jarなどと追加.

便利なImageJ/Jythonプラグイン導入
http://www.pensament.net/java/Jython.zip
をImageJ/plugins/Jythonに展開.このディレクトリに置いた*.pyファイルは,ImageJメニューのPlugins - Jython - Refresh Jython Listによって,同メニュー階層中に登録され,プラグインとして実行可能になる.
また, ImageJ/macros/StartupMacros.txt に macro "AutoRun" { run("Refresh Jython List"); } と加えることで,ImageJ起動時に*.pyファイルのメニュー登録は自動的に行なわれるようになる.なお,このStartupMacros.txtはautoexec.batのような使われ方をする特別扱いのマクロファイルで,ImageJのツールバー設定なども行なっている.

Jythonは遅い印象だったが,インタプリタから簡単な文字列やリストの処理をするだけではとくに問題を感じなかった.そこで1024*1024の8bpsグレイスケール画像に対して,getPixelValue()とputPixelValue()を使った画素単位の反転処理を行なったところ,Java版が0.5秒以下なのに対し,Jython版では10秒以上を要した.やはり画像自体の処理は苦しそうだ.遅くてもいいメタなレベルの処理や,その場限りのマクロ書き(ImageJメニューのPlugins - Jython - Jython interpreterが便利そうだ)には向いていると思う.

JNI経由でImageJ/CPythonの方が実行速度は数倍良さそうだが,ImageJのクラス群を簡単にCPythonから利用できるようにする仕組みが思い浮かばない.ImageJは開発が活発なので手書きでインタフェイスを作るのは避けたい.JavaのことだからC/C++とのインタフェイスの自動生成ツールなどは多いにありそうだが,未調査.

ただ,「プラグイン」と呼んでいるものには,基本機能を組み合わせたマクロ的なものと,新たな画像処理アルゴリズムを提供する下請け的なもの,という両方の方向性がImageJではあるようなので,前者はJython等で密に結合させ,後者は簡素なインタフェイスを介して別プロセスとして動かす,という使い分けをするのが現実的かもしれない.
[PR]
by edogawadai_bio | 2006-07-26 04:28 | img
OCaml関係
日本語で書かれたチュートリアル等
Objective Caml 入門. 詳しくて丁寧.
http://www.sato.kuis.kyoto-u.ac.jp/~igarashi/class/isle4/mltext/ocaml.html
OCaml入門.簡潔.
http://ocaml.jp/archive/document/intro1.html
情報科学実験I ML演習.講義資料としてPowerPointファイルやソースが公開されている.MiniMLインタプリタ作成.
http://www.yl.is.s.u-tokyo.ac.jp/~kohei/lecture/caml-enshu/
プログラミングの基本 - Ocaml編. はいぱーワークブックという教育資料の17章4節でOCamlが使われている.
http://hwb.ecc.u-tokyo.ac.jp/
超特急: 一時間でわかるML超入門.MinCamlコンパイラ作者による.簡潔.
http://min-caml.sourceforge.net/index2.html
OCaml プログラミング入門.
http://www.i.kyushu-u.ac.jp/~bannai/ocaml-intro/
Ocamlについて.Functorやocamllex, ocamlyaccについても書かれている.
http://web.yl.is.s.u-tokyo.ac.jp/~ganat/ocaml/ocaml.html
初心者が書いた OCaml 入門.CやRubyとの比較.
http://jijixi.azito.com/cgi-bin/diary/index.rb?date=19700102
本家のマニュアルの和訳.ありがたい.
http://ocaml.jp/archive/ocaml-manual-3.06-ja/

英語で書かれた解説等
本家のDocumentationページ.
http://caml.inria.fr/resources/doc/index.en.html
Developing Applications With Objective Caml.700頁くらい.PDFとHTMLで読める.もとはフランス語の本らしい.α-β探索によるゲームやネットワークプログラミングなど実例が載っている.
http://caml.inria.fr/pub/docs/oreilly-book/html/index.html
Introduction to the Objective Caml Programming Language.100頁くらいのチュートリアル.
http://www.cs.caltech.edu/courses/cs134/cs134b/book.pdf
Objective CAML Tutorial.Cとの比較を通じての紹介.
http://www.ocaml-tutorial.org/

他言語とのインタフェイス
SWIG.OCamlもサポートしていた.
http://www.swig.org/
Pycaml.Pythonとのインタフェイス.OCamlからPython C/APIがタプルをとる関数に見えるようだ.
http://pycaml.sourceforge.net/
perl4caml.Perlとのインタフェイス.
http://merjis.com/developers/perl4caml/
CamlJava.Cを介したJavaとのインタフェイス.JNIのthin wrapperっぽい.
http://pauillac.inria.fr/~xleroy/software.html#camljava
O'Jacare.OCamlからJava,JavaからOCamlが使えるらしい.上のCamlJavaが必要.
http://www.pps.jussieu.fr/~henry/ojacare/index.en.html

その他
ExtLib.本家に含まれていないが基本的なモジュール群.データ構造,入出力,文字列等.
http://ocaml-lib.sourceforge.net/
annexlib.ExtLibと同様のコンセプト.
http://raevnos.pennmush.org/code/annexlib/index.html
The Caml Hump.ラクダのコブ.OCamlで書かれたアプリやモジュールのリスト.
http://caml.inria.fr//cgi-bin/hump.en.cgi
CamlImages.画像ファイルの入出力と基本的な画像処理のモジュール.FloatのTIFFファイル等は残念ながら未対応.
http://pauillac.inria.fr/camlimages/
cairo-ocaml.ベクター描画ライブラリCairoへのインタフェイス.
http://www.cairographics.org/cairo_2docaml
GD4O.ラスター描画や画像ファイル入出力のライブラリGDへのインタフェイス.
http://gushee.net/matt/software/gd4o/
ImageMagick Binding for OCaml.ラスター描画や画像ファイル入出力のライブラリImageMagickへのインタフェイス.
http://www.linux-nantes.org/~fmonnier/OCaml/ImageMagick.php
OCamlplot.GNU plotutilsへのインタフェイス.
http://ocamlplot.sourceforge.net/
OcamlSDL.SDLへのインタフェイス.
http://ocamlsdl.sourceforge.net/home.html
PsiLAB.各種数値計算ライブラリへのインタフェイス等.NumPyやSciPyみたいなもの?
http://psilab.sourceforge.net/
FFTW, BLAS, LAPACK, Gnuplot等へのインタフェイス.
http://math.umh.ac.be/an/software.php
mod_caml,wiki,perl4caml,postgreSQL,CSV入出力等のモジュールやツール.
http://merjis.com/developers
hhl.Hidden Markov Modelsライブラリ.OCamlネイティブらしい.
http://connex.lip6.fr/~binsztok/hhld.html
BioCaml.
http://www.biocaml.org/

モジュールの多くは一人か少数で開発されているようで,中には何年もアップデートされてない状態のものや,完全ではないものもある.他の言語・ライブラリとのインタフェイスは時間の経過とともに動かなくなっている可能性も多いにある.また,PostScript出力やBLASへのインタフェイス等,重複してモジュールが存在するものもあった.
[PR]
by edogawadai_bio | 2006-07-23 02:27 | comp
ImageJプラグイン等メモ
Colour Deconvolution.明視野での多重染色像(減色混合された画像)の各色素成分への分解を行なう.
http://www.dentistry.bham.ac.uk/landinig/software/cdeconv/cdeconv.html
3D Toolkit Plugins.VTKとMetaImageのファイル読み書き.
http://ij-plugins.sourceforge.net/ij-3D-toolkit.html
Visible Human Projectでの前処理プラグインと,ディレクトリの全画像ファイルへのバッチ処理プラグイン.
http://ciar.rcm.upr.edu/projects/imageJ
Spectral Unmixing Plugins.JAMA利用.
http://rsb.info.nih.gov/ij/plugins/spectral-unmixing.html
100以上のLUT.
http://rsb.info.nih.gov/ij/download/luts/luts.zip
Handle Extra File Types.主に顕微鏡や画像処理ソフトウェアの画像フォーマットの入力プラグイン.
http://rsb.info.nih.gov/ij/plugins/file-handler.html
PDF Viewer.PDFを読み込む.JPedal利用.
http://www.pensament.net/java/other_plugins.html#pdf_viewer
bilevel/grayscale morphologyや色処理.
http://www.dentistry.bham.ac.uk/landinig/software/software.html
k-meansによる色画像のmulti-level segment,maximum entropy threshold.
http://ij-plugins.sourceforge.net/plugins/clustering/index.html
Image I/O.LZWのTIFFや16bit PNGの入出力プラグイン.
http://ij-plugins.sourceforge.net/plugins/imageio/
joglを介したOpenGL利用例.
http://www.ulfdittmer.com/imagej/index.html
Gif Stack Writer.RGBと8bpsのアニメーションGIF出力.
http://rsb.info.nih.gov/ij/plugins/gif-stack-writer.html
SplineSnake.SNAKEによるsegment.
http://ip.beckman.uiuc.edu/Software/SplineSnake/
Daniel SageのBiomedical Imaging Groupのプラグイン群.焦点合成, 点の追跡, Matlab binding, SNR測定など.
http://bigwww.epfl.ch/sage/bioimaging.html
輝度補正や二値化など.
http://helios.univ-reims.fr/Labos/INSERM514/ImageJ/
OrtView.インタラクティブなstackデータのorthogonal viewer.
http://www.disi.unige.it/person/BerteroM/MedNuc/OrtView/OrtView.html
LOCI 4D Data Browser Plugin.XYZTデータのviewer.
http://www.loci.wisc.edu/4d/
LOCI Bio-Formats package.主に顕微鏡制御ソフトの画像フォーマットの入出力ライブラリとImageJ用プラグイン.
http://www.loci.wisc.edu/ome/formats.html
Radial Profile Plot.2Dフーリエ変換像等を扱う際に便利.
http://rsb.info.nih.gov/ij/plugins/radial-profile.html
stackデータの手動アラインメント補助や斜め切りをする.
http://www.med.harvard.edu/JPNM/ij/plugins/
NeuronJ.神経軸索の顕微鏡像を手動~自動で抽出する大規模なプラグイン.
http://imagescience.bigr.nl/meijering/software/neuronj/
Yet Another Wand for ImageJ 2D.2次元画像の手動領域抽出のためのマジックワンド.
http://yawi3d.sourceforge.net/
SurfCharJ.いくつかのテクスチャ特徴を計測する.
http://www.gcsca.net/IJ/SurfCharJ.html
基本的な形状特徴(CompactnessやRoundness)を計測する.
http://www.gcsca.net/IJ/Shapes.html
TrakEM2.連続切片画像のアラインメントや輪郭線手動抽出,立体構築などの統合的なプラグイン.
http://www.ini.unizh.ch/~acardona/trakem2.html
ImageJのDebianパッケージ.最新ではないが新しい.
http://www.personalweb.unito.it/paolo.ariano/imagej.html
UNIX環境用のImageJ起動スクリプト.画像ファイルをコマンドラインから開いたりできる.
http://rsb.info.nih.gov/ij/download/linux/unix-script.txt

* ImageJと関係ないライブラリ

Colt.Javaの幅広い数値計算パッケージ.
http://dsd.lbl.gov/~hoschek/colt/
JAMA: A Java Matrix Package.Javaの行列計算パッケージ.
http://math.nist.gov/javanumerics/jama/
Jampack(JAva Matrix PACKage).Javaの行列計算パッケージ.
ftp://math.nist.gov/pub/Jampack/Jampack/AboutJampack.html
ITK.National Library of Medicine Insight Segmentation and Registration Toolkit (ITK).2~高次元データのsegment等のオープンソースライブラリ.Visible Human Projectの一環.
http://www.itk.org/index.htm
jogl.java bindings for OpenGL.
https://jogl.dev.java.net/
ij-VTK.
http://ij-plugins.sourceforge.net/ij-vtk/index.html
JPedal.Java PDF development tools.
http://www.jpedal.org/
VisBio.Javaによる3~高次元画像処理ソフトウェア.
http://www.loci.wisc.edu/visbio/
VolPack.C/C++用のvolume rendering library.
http://www-graphics.stanford.edu/software/volpack/
JDEE:Java Development Environment for Emacs.Java開発用Emacsマクロ.
http://jdee.sunsite.dk/
http://www.02.246.ne.jp/~torutk/jdee/jdee.html

* プラグイン作成メモ

ウインドウの絶対座標を指定する.
WindowManager.getFrame("Window Title").setLocation(x, y)

"Save changes?"ダイアログを出さずにwindowを閉じる.
imp.changes = false;
imp.close();

LUT適用.
at macro: run("Fire");

raw bytesデータからToolkitを介してImagePlus化.
Image img = Toolkit.getDefaultToolkit().createImage(bytes);
new ImagePlus("title", img).show();
ただしRGBデータのみ.

* 論文

Hiraoka Y, Sedat JW, Agard DA (?) Determination of three-dimensional imaging properties of a light microscope system. Partial confocal behavior in epifluorescence microscopy. Biophys J 57: 325-333.

Ruifrok AC, Johnston DA (2001) Quantification of histological staining by color deconvolution. Anal Quant Cytol Histol 23: 291-299.

Howard, Reed () Unbiased Stereology
Peter Mouton () Principles and Practices of Unbiased Stereology
Stereologyの本.2枚の切片や1枚の厚い切片から定量的な立体解析を行なう.

Camp et al (2002) Nature Medicine 8: 1323-1328.
RESA (rapid exponential subtraction algorithm) によるouf-of-focus像の除去.

Sezgin M, Sankur B (2004) Survey over image thresholding techniques
and quantitative performance evaluation. J Electronic Imaging 13: 146-165.
http://www.busim.ee.boun.edu.tr/~sankur/SankurFolder/Threshold_survey.pdf
数十種類のthresholding法の紹介と比較

Della Mea V, Viel F, Beltrami CA (2005) A pixel-based autofocusing technique for digital histologic and cytologic slides. Computerized
Medical Imaging and Graphics 29(5): 333-341.

各種基本アルゴリズムの論文紹介.Cソースも少し.
http://emre.uta.edu/ImageProcessingComputerVisionSoftware.htm
[PR]
by edogawadai_bio | 2006-07-20 20:06 | img
ImageJ/Jython
ImageJからJytyonを動かし,PythonでImageJを操作するためのプラグイン.
http://www.pensament.net/java/other_plugins.html#jython

以前,JNIとPython用C拡張をあわせてImageJ用プラグインの類をPythonで書こうとしたがリンクがうまくうかないので放置し,結局現在はImageJからPythonインタプリタを起動してファイル経由で画像やパラメタを入出力するという面白くない状態なので,折を見てImageJ/Jythonを試したい.JythonはCPythonやJavaに輪をかけて遅い印象があるが,プラグインを組み合わせるような高次な部分で使うぶんには問題にならないことを期待.
[PR]
by edogawadai_bio | 2006-07-20 19:10 | img
ImageJプラグインを作る会社
ImageJプラグインをオーダーメイドで作ってくれる会社を見つけた.
http://www.optinav.com/imagej.html
解析画像のサンプルと欲しい機能についての記述をemailで送り,費用や開発期間の見積もりをしてから(Short, Tall, Grandeというランク分けでそれぞれ$200, $1000, $2000.なぜか喫茶店みたいな名前),プラグインを作ってもらうようだ.サポート期間は30日で,ソフトウェアはBSDライセンスらしい.フリーのプラグインも公開している.既存のプラグインを例にして,それがShortなのかGrandeなのかを示してあると,注文を考える際にいいなと思う.
[PR]
by edogawadai_bio | 2006-07-20 18:54 | img