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

戦前型旧型国電および鉄道と変褪色フィルム写真を中心とした写真補正編集の話題を扱います。写真補正技法への質問はコメント欄へどうぞ

レイヤーマスク編集モード切替プラグイン - GIMPを便利に! プロジェクト

 さて、GIMPを便利に! プロジェクトの第2弾です。PhotoshopからGIMPに移行したときに、結構ストレスだった一つは、レイヤーマスク編集モードをオンにしても、レイヤーマスクの表示が伴わない点でした。編集モードをオンにして、さらにマスク表示をオンにしないとマスクが表示されません。もちろん編集モードと表示モードが不一致なほうが便利な時もあります。しかし、同時に切り替えられたほうが便利な時が多いです。Photoshopは、一旦編集モードに入るとマスクも表示されます。そのあと編集モードと表示モードをばらばらにすることもできますが、編集モードに入るときは表示モードの変更も伴っていたほうが便利な時が多く、そのあたりPhotoshopはよく考えられていました。

 というわけで、GIMP上でレイヤーマスク編集モードと表示モードを同時に切り替えるプラグインを作ってみました。プラグインが表示される場所は下記の通りです。

f:id:yasuo_ssi:20210227140128j:plain

レイヤーマスク編集モード切替プラグイン表示位置

 このプラグインは基本的にトグル動作となっており、マスクを編集したいレイヤーをアクティブにして、このプラグインを動かすと、マスク編集モードでないときは、マスク編集モードに入るとともに、マスクも表示し、マスク編集&表示モードの時は、マスク編集モードを抜け、マスク表示も停止します。

 もしマスク編集モードと表示モードのオン/オフが揃っていない場合は、マスク編集モードに合わせ、マスク表示を変更します。

 コンテキストメニューに表示させることができないのは残念ですが、これでGIMPでのマスク編集のストレスがだいぶ減ります。

 プラグインのダウンロードはこちらから。ダウンロードして解凍したファイルを、GIMPのブラグインフォルダにコピーしてください。それで利用できます。

 

 GIMPを便利に! プロジェクトは一旦ネタ切れですが、また何か思いついたらツールを作るかもしれません。

 

 

蔵出し画像 福塩線 クモハ51067 (1977年3月)

 福塩線と言えば、旧国鉄で初めて1M方式で設計された新性能電車105系が、当線用に初めて配置され、それから40年近く活躍している、いわば1M方式新性能電車の原点と言えます。しかしその前に、全国唯一、新幹線ブルー(青色20号)単色に塗られた旧型国電が活躍して異彩を放っていたことを知る方はどれほどいるでしょうか。今回はその新幹線ブルー一色で活躍していた旧型国電の写真を紹介します。

f:id:yasuo_ssi:20210216203920j:plain

クモハ51067 (岡フチ) 福山駅 1977.3

 本車は、クモハ51067で、福塩線で活躍していたクモハ51の中で最も末尾の番号を持つ車両でした。本車は生粋のクモハ51ではなく、もともとは、大阪城東線用に投入されたモハ41でしたが、戦時中に、モハ43の台車と振り替えられ、モハ51の仲間に編入されたグループです。今回この写真は初めて公開しますが、実はオリジナルの写真は次のような状態でした。

f:id:yasuo_ssi:20210216204347j:plain

オリジナル
続きを読む

Bチャンネル再建法 追加補正サポート用マスク作成ツール

 このサイトで公開している不均等黄変写真のBチャンネル再建法補正マニュアルの中に、Bチャンネル補正法で一通り補正しただけでは不十分で、追加補正が必要なケースがあると記しています。一つは、Bチャンネル再建法でただ補正しただけでは黄色味が十分とり切れないケース (これは先日、2月1日にアップした写真がまさにこのケースです)、もう一つはこの補正法だとGとBのチャンネルの値が近づいてしまうので、もっと青い部分のチャンネルの値を離す必要がある場合です。前者の場合、画面の黄色味のある部分のB値を引き上げる、後者の場合、画面の青い部分のB値を引き上げる必要があります。

 青味の部分と黄色味の部分の補正量が同一であれば、グローバルに全体的にトーンカーブ補正等でBチャンネルの値を引き上げればよいのですが、どちらか一方だけ補正する、あるいは青みの部分と黄色味の部分で補正値が異なるという場合は、グローバルな補正は不適切です。

 そこで、マニュアルの中では、フォトレタッチソフトの色域指定機能を使って、その部分を個別に色補正するように書きました。

 もちろんそれで正解なのですが、色域指定機能を使うよりはパラメータを調整して補正マスクを作成し、それを掛けて色補正したほうがやりやすい場合もあるのではないかと考えました。そこで、ImageJに対応した追加補正サポート用マスク作成ツールを作ってみました。

続きを読む

GIMP / Python Tips: ファイルが読み込まれていないときにプラグインを無効にするには... ?

 GIMPにおいて Python-fu を使ってプラグインを作成する際に、プラグインをファイルが読み込まれているときのみ有効にしたい場合があります。つまり、ファイルが読み込まれていないときは薄く表示され無効にしておきたい場合です。

 これはどのように実現したらよいでしょうか? 以下、以前お示しした、基本的なプラグインのひな型を再掲します。

 

 

基本的なひな型

#!/usr/bin/python Pythonインタープリターを起動
# -*- coding: codename -*- ←必要に応じてスクリプトで使う文字コードを宣言
            必要なければこの行自体不要
            メニューに日本語を表示したい場合 codenameutf-8にする
            同時にプラグインファイル全体をuft-8で保存しておく

from gimpfu import * PythonGIMPライブラリを呼び出す                   他のライブラリも呼び出す必要があれば適宜ここで宣言
def  plugin_name( 引数 ): プラグインの本体を以下定義

 

 ここにプラグインの具体的処理内容をインデントをつけて記述


register(   →以下GIMPプラグインとして登録する際の情報を記述
     "proc_name", プラグインコマンド名
     "blurb",  →プロシジャーブラウザに表示するプラグインの説明
     "help",  プラグインのhelpで表示する説明 blurbと同一で可
     "author", プラグイン著者名
     "copyright", プラグイン著作権者名 通常はauthorと同一
     "date", →著作年等
     "label", →メニューの中で表示されるプラグインのラベル
    例えば、"Resize to max..." 等
     "imagetypes", プラグインが処理対象とする画像のタイプ
 具体的には RGB, RGB*, GRAY*, INDEXEDなど
 指定しないなら "" で良い。また2つ以上指定するならカンマで区切り
 "RGB*,GRAY*" などと記述

     [parms],  プラグインに与えるパラメーター
   もしプラグイン起動時に入力ダイアログを表示する場合はここに記述※
   入力ダイアログがなければ のまま
    
,  プラグインの結果 通常は [] のままでよい
     plugin_name,
        Plugin_nameは、Pythonコードで呼び出す際のメソッドの名前
           def で、定義した名前を使用。
           def で plugin_main としたら
           ここでも、それと同じく plugin_main と書く。

    menu = "menuexpresson")
        →また、menuexpression は、プラグインGIMPのメニューの
         どこに表示するかを指示する。
         
main() プラグイン本体を呼び出し

続きを読む

GIMP用 可視レイヤー直接エクスポートプラグイン - GIMPを便利に! プロジェクト

 自分の画像編集作業用に、GIMP用の可視レイヤーを直接ファイルにエクスポートするプラグインを作ってみました。レイヤー編集を頻繁に行う方には結構便利だと思いますのでこれも公開します。

 GIMPで編集中の可視レイヤーを xcf 形式以外の形式で出力する場合、一旦画像ファイルを統合してからエクスポートを掛けなくてはいけません。しかし、再編集する可能性がある場合、ファイルを1枚のレイヤーに統合してしまうと困る場合もあります。

 そこで、レイヤーの可視部分を統合したイメージを別の画像としてコピーし、それを別形式のファイルにエクスポートするプラグインを作成しました。元画像には手を加えません。ファイルはこちらからダウンロードしてください。

 このファイルをダウンロードしたら、GIMPプラグインフォルダにコピーしてください。ファイルは2本あり、1本は、実行するといきなりTIFFファイルに出力するもの、もう一本は実行すると保存するファイル名を聞いてきますので、そこで指定された拡張子に応じて変換して出力します。いきなりTIFFに出力するプラグインは、元のファイル名に "_visible.tif" を付加したファイル名で出力します。また無条件にdeflateで圧縮して保存します。すでに同名のファイル名があるばあいはそのまま上書きしますので注意してください。

 また、プラグイン実行後可視レイヤーを統合した画像をそのまま出力後もGIMP内で表示させておきたい場合は、ファイル名をつけて出力するプラグインを選んでください。すると画像を保持するか、しないかを選ぶダイアログが出て、そこで指定することができます。なお、こちらの方は、TIFFを圧縮して保存することはできません。というのは、TIFFでいきなり保存プラグインは file_tiff_save() というプロシジャーをつかっており、TIFF保存の際のオプションを指定できるのに対し、名前を付けて保存プラグインの方は、gimp_file_save() を使っていますが、こちらは保存の際のオプションを指定できません。

※この点は改善し、TIFFであればこちらも無条件にDeflateで保存するようにしました。

 これ以外に、GIMP2.8以降に gimp_export_image() というプロシジャーも準備されているようです。これだと、エクスポートの際にいろいろ指定できそうなのですが、こちらは Python-fu からアクセスできません*1Python-fu からはアクセスできないAPIも結構あるということです。

 

f:id:yasuo_ssi:20210225160031j:plain

プラグインの位置

 プラグインは、上図のように、GIMPのメニュー→[ファイル]のエクスポートの下に、[可視レイヤーのエクスポート]という名前のメニューで出てきます。

 

------------

 

 ところで、ふと気づきましたが、GIMPの使い勝手がいまいちなところはこのような簡単なプラグインを作っていけばかなり改善されるのではないでしょうか? コードもそんなに長いわけではありませんので。というわけで、始めませんか、GIMPを便利に! プロジェクト。

 

 

*1:以下の議論を参照。

www.gimpusers.com

ガンマ理解補正メモ(5) - RawTherapeeにおけるガンマ補正の扱いは... ?

 前回GIMPにおけるガンマ補正の扱いを考察しましたが、ではフリーの現像ソフト、RawTherapeeにおけるガンマ補正の扱いはどうなのでしょうか? ポジの褪色フィルムのマニュアル補正を試みた時は、リニアに保存してある画像に対しては、そのままリニアに処理を行っているように見えましたが、実のところどうなのでしょう?

 で、実はRawTherapeeの公式レファレンスマニュアルサイト、RawPediaでは完全に矛盾した記述がみられます。

・RawPedia「カラーマネジメント」ページにおける記述

作業プロファイル 

「デフォルトの作業プロファイルはProPhotoです。普通にプログラムを使うのであれば、これを変更する必要はないでしょう。

    (中略)

 注意:作業プロファイルによって特定されるのは、レッド、グリーン、ブルーの構成要素だけです。これはRawTherapeeの処理パイプラインが、ガンマ符号のない(この場合、ガンマ=1.0)浮動小数点演算で行われているからです。但し、幾つかの機能(カーブやヒストグラムなど)は、作業プロファイルの如何に関わらず、ハードコードされているガンマ(通常はsRGBのガンマ)を使って表示されます」

 

 この記述から読み取れることは、RawTherapeeの作業プロファイルは、デフォルトでは、ProPhoto色空間を使うが、ガンマ=1.0のリニアな画像で扱っている、ということです (ProPhotoは通常はガンマ1.8で扱う)。

 一方こんな記述も見られます。

・RawPedia「カラーマネジメント補足」ページにおける記述

R、G、Bデータを RGB変換するための作業色空間 “作業プロファイル”   

「7つの作業色空間を用意しました(十分だと思います、むしろ多過ぎるかもしれません):sRGB, AdobeRGB, Prophoto, Widegamut, BruceRGB, BetaRGB, BestRGB。この中の4つは色空間が広いものです:BetaRGB (B.Lindbllomのオリジナル), BestRGB, WideGamut、そして Prophoto。 

 RGB変換の際に、RawTherapeeの中で使われるガンマは、常にsRGBの、ガンマ=2.4、勾配=12.92ですLightroomも同じ)。

 備考:他の現像ソフトは異なる作業色空間の選択肢を持ちます:

  • AdobeのACR の選択肢は4つ (AdobeRGB, ColorMatch, Prophoto、そしてsRGB)。
  • AdobeLightroomには選択肢がなく、sRGBのガンマで調節したProphoto(Melissa)を使います。
  • DxOにも選択肢はありません、Adobeの色空間を使います。
  • NX2は出力色空間には幾つか選択肢を持っています。」

 

 この記述からは、作業色空間は7つから選べるものの、いずれもsRGB式ガンマ補正カーブを使う、ということが読み取れます。

 つまり、矛盾した説明が混在しています。この矛盾は英語版 RawPedia でも同じです (ここでは誤訳はありません)。 

続きを読む

GIMP / Pyhon tips: drawableとは何か?

f:id:yasuo_ssi:20210223175431j:plain


 GIMPでプログラミングを行っていると、drawable という言葉が出てきます (例えば上の図です)。これと image オブジェクト との違いが分かりにくいのですが、GIMP Developer Resourcesに以下のように説明されています。

 

A GIMP image is a structure that contains, among others, guides, layers, layer masks, and any data associated to the image. The word "drawable" is often used in GIMP internal structures. A "drawable" is an object where you can get, and sometimes modify, raw data. So : layers, layer masks, selections are all "drawables".

 

 (画像の)データ自体 (raw data) を取得したり、変更できるオブジェクト、だというのですが、イメージ的には、image オブジェクトが、画像データやメタデータ(例えば Exif情報や、iccプロファイル等)を含んだ、ほぼ画像ファイル (GIMPの[画像] メニューに対応) 概念に等しいのに対し、drawableは、画像ファイルのうち、画像データそれ自体を含む部分と理解したらよいのではないでしょうか。具体的には、レイヤーやマスクを指すポインタを drawable と言うようです。そしてそれらの集合が、drawables になるようです。

 

 ですので、drawable の所属を表す特徴(プロパティ)として、imageオブジェクトがありえます (drawable.image) *1

 

 

*1:

www.gimp.orgこのページの drawable members の項を参照。