ImageJ / Python プログラミング
ImageJ の 32-bit 浮動小数点画像 (FloatProcessor) は 8-bit (ByteProcessor), 16-bit 整数画像 (ShortProcessor) とは異なり、所定の値を超えてもデータがクリップすることはありませんし、負の値もとることがあります。8-bit, 16-bit 整数画像は、正負符…
筆者が作成した ImageJ 用プラグインを走らせるとプレビュー用 8-bit 画像と結果として出力される 32-bit 画像の表示結果が異なることが多々あります。そこでそもそも各アプリケーションで 32-bit イメージはどう表示されるのか、確認してみました。なお、こ…
先月 (2023/7) に入って ImageJ / Fiji の自動バージョンアップを適用したところ、自作のプラグインの動作が突然変わってしまい、慌てふためきました。当初はバグではないかと思いましたが、Ver. 1.54 の動作の変化を丁寧に検証してみると、バグというよりは…
ImageJ の32bit 画像の処理を行う際の挙動に良く分からない点があるので引き続き追及中ですが、いくつか新たに注意すべき点を見つけましたのでメモしておきます。 まず、32bit画像を作成しようと、16bit画像を ImageJ 以外の画像処理ソフトを使って 32bit 浮…
ImageJ における Python (Jython) を使ったインターアクティブなダイアログボックスUIの書き方について、何となく要領が分かってきました。ここでポイントをまとめてみます。 まず説明の前提として、スライダーが一つ、数値入力ボックス (numeric field) が…
■ 画像のBit 深度、型変換 [Image] →[Type] メニュー ・8-bit へ変換 IJ.run(imp, "8-bit", "") 最後の、「 ,"" 」 が要注意です。 ・16-bit へ変換 IJ.run(imp, "16-bit", "") ・32-bit へ変換 IJ.run(imp, "32-bit", "") ・24bit (8bit x 3) RGB Color (Co…
ImageJ の ChannelSplitter ですが、ImageJ の解説書を書いておられる三浦耕太氏のサイトに、使用例が出ています。 sites.google.com この利用例を見て、Channel Splitter は、カラー画像の ImagePlus をチャンネル毎の ImagePlus に分割するのであり、てっ…
ImageJ 上で、32bit 画像を扱うプログラムを昨年末あたりから書き始めていますが、8bit, 16bit 画像とは異なり、意図した結果が得られないことが多く苦労します。そのため、その理由をいろいろ調べていましたが、結局、ImageJ 上で 32bit 画像を扱うには、8b…
ImageJ において Python スクリプトを作成するためのテンプレートコードを公表します。このコードは、以前公表したテンプレートのバージョンアップにあたります。ポイントとしては、8, 16, 32-bit の様々なビット深度の画像が読み込まれることを想定して、Bi…
先日、ImageJ のプログラミングをしていてグレースケールの ImagePlusを Duplicator や ImegePlus の Dupulicate() メソッドを使って複写しようとすると、エラーになってしまうのに気づきました。なぜこうなってしまうのかを色々調べている過程で、ImageJ の…
ネット上の ImageJ スクリプトプログラミングのサンプルプログラムでは単チャンネル・モノクロ画像における塗潰し色の指定の方法は、よく見かけますが、24bit (3 x 8bit) の ColorProcessor における、塗潰し色を指定するサンプルプログラムはほとんど見かけ…
ImageConverter を使ってRGB画像をグレースケール画像に変換する際に注意があります。それは 3 スタック形式の RGB 画像に適用することができないという点です。 例えば、いま R, G, B のチャンネルが3つのスタックに収容されている imp という ImagePlus …
今まで私自身も誤解していましたが、ImageJ 上で 8bit カラー画像のビット深度取得に注意が必要です。 ImagePlus にビット深度を取得する、getBitDepth() メソッドがあります。今まで、8bit カラー画像は、8bit と判断されるのかと誤解していましたが、実は …
ImageJにおける、32bit 浮動小数点画像の閾値の設定ではまりました。一旦、 setThreshold メソッドで閾値を指定し、それをもとに roi 設定→ roi 塗りつぶしで、二値画像を作成しようとしています。そして、8bit, 16bit 整数正負記号なし画像の場合、ImagePro…
以前、ImageJ のプログラムを作っていて、GenericDaialog で設置できる Slider からは、整数値しか取得できないとこちらの記事に書いたことがありました。 しかし、API リファレンスを見ると addSlider メソッドでは、double 変数を引数として取ることができ…
ImageJでは、8bit フルカラー画像はネイティブで対応していますが、16bit フルカラー画像は bio-format プラグイン経由で読み込むようになっています。さらに 通常のTIFF形式の32bit フルカラー画像については、bio-format プラグインも非対応のため、直接読…
先日、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 ただ、このサンプル、結構凝っていて、初学者には分かりにくいです。そこで、このサンプルプ…