ImageJ / Python プログラミング
ヒストグラム平坦化は、暗部などで細部が見えにくい場合、そのような細部をはっきり見せる目的で使われるアルゴリズムです。基本的な考え方は、通常山があるピクセル分布のヒストグラムをなるべく平坦に直すことで、見えやすくするということです。 ただ、こ…
ImageJ における Python は厳密に言うと、Jython と言って、Python のインターフェースから Java を操作する言語を使っています。 元々 Python は、インタープリターとして C言語で書かれたコードを実行する、言わば C 言語の複雑さをオブラートで包むような…
今まで、B チャンネル再建法補正ツール Ver. 5.5 に向けて、試作や実験を繰り返していました。この間色々と実験して気づいたことをメモっておきたいと思います。 ■一般的な写真の場合、全ての色を混ぜるとニュートラルグレーになる これは、通常の画像処理ソ…
先日公開した、ImageJ スタック形式 RGB TIFF ファイルの GIMP 読み込みプラグインに関するコード解説です。 ------------ #!/usr/bin/env python# -*- coding: utf-8 -*- # 以上2行は、GIMP上でpython プログラムを走らせる宣言と、プログラム内で UTF-8 …
先日、不均等黄変ネガ写真の追加機能の試作を色々試していたところ、突然以下のようなメッセージが出て、実行エラーになりようになりました。 java.io.IOException: Mark invalid ネットで調べると、Java の何かデータを保存しておくバッファが足りないよう…
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…