省型旧形国電の残影を求めて

戦前型旧形国電および鉄道と変褪色フィルム写真を中心とした写真補正編集の話題を扱います。他のサイトでは得られない、筆者独自開発の写真補正ツールや補正技法についても情報提供しています。写真補正技法への質問はコメント欄へどうぞ

ImageJ / Python プログラミング

画像色補正や画像処理プログラミングに役立つ写真画像の一般的経験則

今まで、B チャンネル再建法補正ツール Ver. 5.5 に向けて、試作や実験を繰り返していました。この間色々と実験して気づいたことをメモっておきたいと思います。 ■一般的な写真の場合、全ての色を混ぜるとニュートラルグレーになる これは、通常の画像処理ソ…

GIMP / Python 自作プラグイン解説: ImageJ RGB ファイル読み込みプラグイン

先日公開した、ImageJ スタック形式 RGB TIFF ファイルの GIMP 読み込みプラグインに関するコード解説です。 ------------ #!/usr/bin/env python# -*- coding: utf-8 -*- # 以上2行は、GIMP上でpython プログラムを走らせる宣言と、プログラム内で UTF-8 …

ImageJ / Python プログラミング Tips: ImageJ が読み込める スクリプトコードの長さに上限行数がある

先日、不均等黄変ネガ写真の追加機能の試作を色々試していたところ、突然以下のようなメッセージが出て、実行エラーになりようになりました。 java.io.IOException: Mark invalid ネットで調べると、Java の何かデータを保存しておくバッファが足りないよう…

ImageJ / Python プログラミング Tips: 32-bit 画像で所定の閾値を超えたピクセル値をクリップする

ImageJ の 32-bit 浮動小数点画像 (FloatProcessor) は 8-bit (ByteProcessor), 16-bit 整数画像 (ShortProcessor) とは異なり、所定の値を超えてもデータがクリップすることはありませんし、負の値もとることがあります。8-bit, 16-bit 整数画像は、正負符…

ImageJ で作成した 32bit 画像を表示させると...

筆者が作成した ImageJ 用プラグインを走らせるとプレビュー用 8-bit 画像と結果として出力される 32-bit 画像の表示結果が異なることが多々あります。そこでそもそも各アプリケーションで 32-bit イメージはどう表示されるのか、確認してみました。なお、こ…

ImageJ / Python プログラミング Tips: ImageJ Ver. 1.53* → 1.54* へのバージョンアップに伴う仕様変更

先月 (2023/7) に入って ImageJ / Fiji の自動バージョンアップを適用したところ、自作のプラグインの動作が突然変わってしまい、慌てふためきました。当初はバグではないかと思いましたが、Ver. 1.54 の動作の変化を丁寧に検証してみると、バグというよりは…

ImageJ / Python プログラミング Tips: 32bit 画像のディスプレイ範囲をめぐる挙動の確認とその注意点

ImageJ の32bit 画像の処理を行う際の挙動に良く分からない点があるので引き続き追及中ですが、いくつか新たに注意すべき点を見つけましたのでメモしておきます。 まず、32bit画像を作成しようと、16bit画像を ImageJ 以外の画像処理ソフトを使って 32bit 浮…

ImageJ / Python プログラミング Tips: インターアクティブな UI 作成のポイント

ImageJ における Python (Jython) を使ったインターアクティブなダイアログボックスUIの書き方について、何となく要領が分かってきました。ここでポイントをまとめてみます。 まず説明の前提として、スライダーが一つ、数値入力ボックス (numeric field) が…

ImageJのコマンドをPythonのコードに落とす (2): bit 深度変更ほか

■ 画像の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 / Python プログラミング Tips: Channel Splitter の仕様に注意

ImageJ の ChannelSplitter ですが、ImageJ の解説書を書いておられる三浦耕太氏のサイトに、使用例が出ています。 sites.google.com この利用例を見て、Channel Splitter は、カラー画像の ImagePlus をチャンネル毎の ImagePlus に分割するのであり、てっ…

ImageJ / Python Tips: 32bit 画像を扱う時は常にディスプレイ範囲を意識せよ!

ImageJ 上で、32bit 画像を扱うプログラムを昨年末あたりから書き始めていますが、8bit, 16bit 画像とは異なり、意図した結果が得られないことが多く苦労します。そのため、その理由をいろいろ調べていましたが、結局、ImageJ 上で 32bit 画像を扱うには、8b…

ImageJ / Python プログラミング Tips: プログラミング用テンプレート update

ImageJ において Python スクリプトを作成するためのテンプレートコードを公表します。このコードは、以前公表したテンプレートのバージョンアップにあたります。ポイントとしては、8, 16, 32-bit の様々なビット深度の画像が読み込まれることを想定して、Bi…

ImageJ / Python プログラミング Tips: ImageJ グレースケール画像の構造 + 輝度画像作成計算方法

先日、ImageJ のプログラミングをしていてグレースケールの ImagePlusを Duplicator や ImegePlus の Dupulicate() メソッドを使って複写しようとすると、エラーになってしまうのに気づきました。なぜこうなってしまうのかを色々調べている過程で、ImageJ の…

ImageJ / Python プログラミング Tips: ColorProcessor 塗潰し色の指定

ネット上の ImageJ スクリプトプログラミングのサンプルプログラムでは単チャンネル・モノクロ画像における塗潰し色の指定の方法は、よく見かけますが、24bit (3 x 8bit) の ColorProcessor における、塗潰し色を指定するサンプルプログラムはほとんど見かけ…

ImageJ / Python プログラミング Tips: ImageConverter でグレースケール画像に変換する際の注意

ImageConverter を使ってRGB画像をグレースケール画像に変換する際に注意があります。それは 3 スタック形式の RGB 画像に適用することができないという点です。 例えば、いま R, G, B のチャンネルが3つのスタックに収容されている imp という ImagePlus …

ImageJ / Python プログラミング Tips: 8bitカラー画像のビット深度取得の注意点

今まで私自身も誤解していましたが、ImageJ 上で 8bit カラー画像のビット深度取得に注意が必要です。 ImagePlus にビット深度を取得する、getBitDepth() メソッドがあります。今まで、8bit カラー画像は、8bit と判断されるのかと誤解していましたが、実は …

ImageJ / Python Tips: 32bit 画像における setThreshold メソッド使用の際の注意点

ImageJにおける、32bit 浮動小数点画像の閾値の設定ではまりました。一旦、 setThreshold メソッドで閾値を指定し、それをもとに roi 設定→ roi 塗りつぶしで、二値画像を作成しようとしています。そして、8bit, 16bit 整数正負記号なし画像の場合、ImagePro…

ImageJ / Python プログラミング Tips: Slider で取得できる値に注意!

以前、ImageJ のプログラムを作っていて、GenericDaialog で設置できる Slider からは、整数値しか取得できないとこちらの記事に書いたことがありました。 しかし、API リファレンスを見ると addSlider メソッドでは、double 変数を引数として取ることができ…

ImageJ / Python Tips: ImageJに32bitフルカラーTIFF画像を読み込む

ImageJでは、8bit フルカラー画像はネイティブで対応していますが、16bit フルカラー画像は bio-format プラグイン経由で読み込むようになっています。さらに 通常のTIFF形式の32bit フルカラー画像については、bio-format プラグインも非対応のため、直接読…

ImageJ / Python プログラミング Tips: 画像 bit 深度・最大値変換サンプルプログラム

先日、ImageJ上における 32bit 画像の扱いについて記事を書きましたが、それを基に、画像の bit 深度を変換したり、32bit画像の場合、最大値を変更したりするサンプルプログラムを書いてみました。意図通りちゃんと変換してくれます。 --------------- # Con…

ImageJ / Python プログラミング Tips: ImageJ Fiji 独自の API があった

ImageJ の Generil Dialog の書き方の情報を色々検索しているうちに、ImageJ には Fiji ディストリビューション独自の API が存在することに気づきました。Fiji で使われている ImageJ は実は ImageJ そのものではなく、ImageJ2 というプログラムです。Image…

ImageJ / Python プログラミング Tips: ImageJにおける32bit画像の扱い

今まで ImageJ上で32bit画像を扱うことがなかったのでよく分からなかったのですが、プログラミング上の必要があり、今回いろいろと調べてみました。 まず、以前にも書きましたが、16bit以上の画像の場合、1枚のImageProsessorには1チャンネルの画像しか収容…

ImageJ / Python プログラミング Tips: 開いたウィンドウを取得する

今まで、ImageJ上で、画像を表示させたウィンドウを一番前に表示させるために、 IJ.selectWindow というのを使っていました。これは、 IJ.selectWindow("ウィンドウタイトル") を指定すると、指定したウィンドウをアクティブにして一番前に表示させるという…

ImageJ対応 相対RGB色マスク画像作成ツール UI プレビュー アルゴリズムメモ (2)

今回は相対RGB色マスク作成ツール中、輝度マスク作成時のプレビュー画像表示のアルゴリズムです。相対色マスクを作るよりも輝度マスクの方が単純なので、単一の class にまとめました。但し、明度範囲閾値用2値マスク画像、輝度マスクのグレースケール画像…

ImageJ対応 相対RGB色マスク画像作成ツール UI プレビュー アルゴリズムメモ (1)

先日相対RGB色マスク画像作成ツールをアップデートしました。これで一応この夏前から考えていた、ユーザインターフェースの改善については一通り実装したことになります。 ただ、結構複雑なことをやっているので、自分の備忘録という意味で、また、もしImage…

ImageJ / Python Tips: ImageJ UI用プレビュー・プログラミングを行う際の盲点

今回はかなりニッチで個人的なプログラミング用の備忘録です。 Python (Jython) で、ImageJ用 プラグインをプログラミングをしていたときのことです。ユーザインターフェースのプログラミングを行っていて、パラメータ入力用ダイアログボックスから、色々パ…

ImageJ / Python プログラミング Tips: 画像読み込みテンプレート改定

以前、以下の記事でImageJ用画像読み込みテンプレートを公開しました。 yasuo-ssi.hatenablog.com ところが、plugin メニューのコントロールパネルからプラグインとして起動すると、問題が起こることに気が付きました*1。というのは、コントロールパネルを開…

Python書きのための Visual Studio Codeの拡張機能

現在 Visual Studio Code を活用して、自分のPythonプログラムを書いていますが、下記のサイトで推薦されている拡張機能が有益でしたので、自分の備忘録としてリンクを載せておきます。 qiita.com なお、こちらで紹介されている拡張機能は下記です。 1. Erro…

ImageJのコマンドをPythonのコードに落とす (1)

とりあえず自分にとってよく使いそうなコードに関するメモです。 ImageCalculator (画像計算機) Process > ImageCalculator Image Calculator コード 操作対象はImagePlusです。 from ij import ImagePlus, plugin ic = plugin.ImageCalculator()imp2 = ic.r…

ImageJ / Python プログラミング Tips: イベントリスナーにおいてイベントを区分する (2)

では、次に複数の同じアイテム(部品)が並んだ場合、イベントが発生したときにそれらを区別するにはどうしたら良いのでしょうか? 例えば数値入力ボックスが複数並んだケースを考えます。この数値入力ボックスに値を入れたり、変更すると、メッセージボックス…