ImageJ / Python プログラミング
先日、ImageJ上における 32bit 画像の扱いについて記事を書きましたが、それを基に、画像の bit 深度を変換したり、32bit画像の場合、最大値を変更したりするサンプルプログラムを書いてみました。意図通りちゃんと変換してくれます。 --------------- # Con…
ImageJ の Generil Dialog の書き方の情報を色々検索しているうちに、ImageJ には Fiji ディストリビューション独自の API が存在することに気づきました。Fiji で使われている ImageJ は実は ImageJ そのものではなく、ImageJ2 というプログラムです。Image…
今まで ImageJ上で32bit画像を扱うことがなかったのでよく分からなかったのですが、プログラミング上の必要があり、今回いろいろと調べてみました。 まず、以前にも書きましたが、16bit以上の画像の場合、1枚のImageProsessorには1チャンネルの画像しか収容…
今まで、ImageJ上で、画像を表示させたウィンドウを一番前に表示させるために、 IJ.selectWindow というのを使っていました。これは、 IJ.selectWindow("ウィンドウタイトル") を指定すると、指定したウィンドウをアクティブにして一番前に表示させるという…
今回は相対RGB色マスク作成ツール中、輝度マスク作成時のプレビュー画像表示のアルゴリズムです。相対色マスクを作るよりも輝度マスクの方が単純なので、単一の class にまとめました。但し、明度範囲閾値用2値マスク画像、輝度マスクのグレースケール画像…
先日相対RGB色マスク画像作成ツールをアップデートしました。これで一応この夏前から考えていた、ユーザインターフェースの改善については一通り実装したことになります。 ただ、結構複雑なことをやっているので、自分の備忘録という意味で、また、もしImage…
今回はかなりニッチで個人的なプログラミング用の備忘録です。 Python (Jython) で、ImageJ用 プラグインをプログラミングをしていたときのことです。ユーザインターフェースのプログラミングを行っていて、パラメータ入力用ダイアログボックスから、色々パ…
以前、以下の記事でImageJ用画像読み込みテンプレートを公開しました。 yasuo-ssi.hatenablog.com ところが、plugin メニューのコントロールパネルからプラグインとして起動すると、問題が起こることに気が付きました*1。というのは、コントロールパネルを開…
現在 Visual Studio Code を活用して、自分のPythonプログラムを書いていますが、下記のサイトで推薦されている拡張機能が有益でしたので、自分の備忘録としてリンクを載せておきます。 qiita.com なお、こちらで紹介されている拡張機能は下記です。 1. Erro…
とりあえず自分にとってよく使いそうなコードに関するメモです。 ImageCalculator (画像計算機) Process > ImageCalculator Image Calculator コード 操作対象はImagePlusです。 from ij import ImagePlus, plugin ic = plugin.ImageCalculator()imp2 = ic.r…
では、次に複数の同じアイテム(部品)が並んだ場合、イベントが発生したときにそれらを区別するにはどうしたら良いのでしょうか? 例えば数値入力ボックスが複数並んだケースを考えます。この数値入力ボックスに値を入れたり、変更すると、メッセージボックス…
インターアクティブなユーザインターフェースを作るにはイベントリスナーの設置が必須ですが、イベントリスナーに発生するイベントにたくさん種類があるわけではありません。 例えば、以前公開した以下のサンプルプログラムですが... yasuo-ssi.hatenablog.c…
以下、開かれてる画像があればその画像の情報を取得し、開かれている画像がなければ、ファイル選択ダイアログを開いてファイルを読み込む、ImageJ の Python を使ったプログラミングサンプルをお示しします。 プログラミング初心者でも、書きたいプログラム…
以前、以下のページで、イギリスのMRC分子生物学研究所で公開している、ROIを対話的に設定するサンプルプログラムの解説を載せました。 yasuo-ssi.hatenablog.com ただ、このサンプル、結構凝っていて、初学者には分かりにくいです。そこで、このサンプルプ…
ImageJWM.getActiveWindow()で複数の画像を開いているときに、現在アクティブなウィンドウの画像を ImagePlus画像として取得するには、下記のように行います。 from ij import IJ, ImagePlusimp = IJ.getImage() この他 WindowManagerを使うとアクティブウィ…
当サイトで開発・公開している写真補正用ツールでは、画像計算をフル活用していますが、最近、陥りやすい錯覚に気づきました。 ・画像全体の値を20%下げるのと20%ポイント下げるのでは異なる まず下にサンプル画像を示します。 オリジナル画像 このオリジナ…
高階関数とは、引数に関数を取る関数のことです。MRC分子生物学研究所のImageJチュートリアルで、forループを使う代わりに高階関数を使ってピクセルの反復処理を行う事例を紹介しています。高階関数の説明自体は例えば下記のサイトをご覧ください。 utokyo-i…
ImageJ / Python プラグイン・ユーザインターフェース作成のお勉強として、イベントリスナーを使った双方向型ダイアログのサンプルプログラムを作ってみました。下記のように、ダイアログにスライドバー、チェックボックス、数値入力ボックス、ドロップダウ…
ImageProcessorには以下の記事に書いたように、8bit、256種類の区分(0-255の整数)しかない ByteProcessor, 16bit、65536種類の区分(0-65535の整数)のある ShortProcessor、32bitフルに使う FloatProcessor、RGBを1チャンネル当たり8bit x 3で表し、24bit使う…
先日、ImageJ用のPython (Jython)プラグインスクリプトの開発を、ImageJのスクリプトエディタ上で行っていたら、突然以下のようなエラーが出てちゃんと動作しません。 java.lang.IllegalArgumentException: Cannot create PyString with non-byte value 今ま…
Pythonでは辞書型変数を関数の引数に使用することができます。 例えば、次のような関数を設定します def routine1(x, dic1): 中身 return a.... この時、dic1 は辞書型変数だとします。 これをメインでdic1の中身を定義し(例えば dic1 = {"Key1":1, "Key2":2…
ImageJ / Fiji cookbook と並んで ImageJプログラミングの重要な参考サイトである、イギリス MRC分子生物学研究所サイトで公開している A Fiji Scripting Tutorial に関しても、インデックスを翻訳しておきます。 Index 始めよう スクリプト・エディタを開く…
ImageJでPythonを使ったときにプログラミングを行う際に、非常に役立つサンプル集であり、neubias (network of european bioimage analysts) によって維持されていると思われる、Python - ImageJ/Fiji Cookbook ですが、サンプルへのリンクの翻訳を作ってお…
久しぶりの ImageJ Pythonプログラミング Tipsです。最近引っかかったのですが、ImagePlusオブジェクトを Duplicateしたものに対して、各ピクセルへの反復処理を行っていたところ、どうも配列の範囲を超えてしまうようなのです。 おかしいなと思って探ってみ…
いままで、ImageJにおける、ImagePlus, ImageProcessor, ImageStackの関係の理解が不十分でした(個人的に)。今回この関係を整理したいと思います。 まずImagePlusですが、これはImageJ上における、ほぼファイルに相当する概念です。GIMPで言えば、Image概念…
ImageJの画像の型はImagePlusのgetTypeメソッドで取得できます。その種類は、 現状では、GRAY8, GRAY16, GRAY32, COLOR_RGB, 及び COLOR_256です。GRAY8はグレースケール(もしくは色チャンネル単独)で8bit (0-255の値を取る)、GRAY16はグレースケール(もしく…
ImageJのAPIリファレンスはアメリカ国立衛生研究所 (National Institute of Health: NIH)のサイトにあります。なお、最近当ブログで書いたようにAPIドキュメントのURLがこの3月下旬に微妙に変わっています。 NIH ImageJトップサイト imagej.nih.govImageJ De…
今までImageJにおけるPythonプログラミングをやってきて、Threshold(閾値)設定関連で気づいたことをまとめてみます。ImageJはまだ8bit画像を前提としているところがあって、16bit (あるいはそれ以上のbit深度) 画像を扱うには注意しなければならない点が結構…
前回修正したものを公開した、ImageJ対応 汎用色チャンネルマスク画像作成ツールのバグですが、以下のようなものでした。 二値化マスク作成の際クリップされる範囲 要は、左端と上端に、ROIが一切かからない x または y の範囲が存在すると、その部分が二値…
ImageJの機能に、Look up table(略称LUT)というものがあります。これは画像データの値自体を変えなくても、表示だけを変える、いわば画像表示のためのフィルター機能のようなものです。 Look up tableは基本はグレースケール画像、または単チャンネルの画像…