RawTherapee5.9で電線を除去してみる(続)

処理の実際を述べる:

  • RawTherapee5.9の局所処理(手のロゴ)を選択してアクティブにする。
  • 処理を施す可能性のある領域(スポット)を設定する。

上図は楕円スポットを1つ設定した状態を示している。この楕円スポットには周囲に4つのハンドルと中心に1つの小円がついている。周囲の4つのハンドルはスポットの拡大・縮小・変形に使われる。中心の小円は極めて重要な小円で以下の処理の参照点となる(小円の大きさも変えられる)。上の例では電線のイメージの中心にこの小円の中心を合わせる(なぜならば電線が処理の核心だからである)。

  • このスポットの特性は以下のパラメタで決められる。

(1)「カラー機能のスコープ」:中心の小円からどの程度の距離まで実際の処理をするのか?(もちろんスポットの外にでることはない)。この値を大きくすると処理領域は大きくなる。

(2)「⊿Eースコープの閾値」:参照点と離れた点の色空間上の距離⊿Eがある閾値より小ならば実際の処理領域に入れる。そうでなければその点は処理領域にいれない。そのような閾値の値の設定である。この値を小さく設定すると参照点と極めて類似な色だけをもつ領域を処理領域として設定できる。この値が大きいと処理領域が大きくなる。

(3)スポット内とスポット外がシームレスに移行するようにスポットの境界での取り扱いを決める。そのためのパラメタとして「境界値」、「境界値の減衰」がある。この「境界値」の最大100にすると境界での移行が全く考慮されていない処理となる。

(4)以上のパラメタを調整して実際の処理領域を決める。その時点での処理領域のレヴューは「スポットの機能を追加」で最低1つの処理を選択し(今の場合は「色と明るさ」を選択)「⊿Eのレヴュー」ボタンを押すと見れる。処理領域が空色で示される。上図のスポットで電線を覆うように領域が設定されていることがわかる。

(5)「色と明るさ」で電線の周囲の明るさと色に変更すると電線は消える。

(6)このスポットが複数個設定できるので電線に沿ってスポットを重ねて行く(こまめにスポットを重ねたほうがよい)。

以上の処理で何とか電線を消せた。

RawTherapee5.9で電線を除去してみる

村田町の布袋まつりの写真を撮ったが生憎と電線がくっきりと映ってしまった。

オリジナルの写真

そこでRawTherapee5.9を使ってこの電線を除去することにする。まず結果を示す:

加工後の写真

行った詳しい操作は別に述べるが、RawTherapee5.9の局所処理は処理を加えるべき画像の領域を手作業を排してあくまでもアルゴリズム的に決めているのが特徴である。その局所処理の設定パラメタの詳しい説明はここにある。

「Vフォー・ヴェンデッタ(V for Vendetta)」を観る

「Vフォー・ヴェンデッタ(V for Vendetta)」を観た。

近未来の英国で全体主義に抑圧されている人々に異議申し立てに立ち上がることを教える仮面の謎の男V。その契機に11月5日の英国の伝統的な祭りガイ・フォークス・ナイト(Guy Fawkes Night)を選ぶ。このあたりが象徴的である。

英国では11月の祭りとしてガイ・フォークス・ナイトがあるが近年ではハロウィーンの影になっているという。元々ガイ・フォークス・ナイトはプロテスタントとカソリックの間の宗教的対立の中で即位したプロテスタント王ジェームス一世(1603年即位)が定めたものという。その前日にこの王の即位を阻止するためにガイ・フォークスは議事堂に爆弾を仕掛けたが露見していしまう。これは多少アナキーであるが異議申し立てである。

原題のvendettaはインド・ヨーロッパ語由来の言葉で「教え」を意味するという。映画の主人公のVはその教えを広めるために現れた。ヒロインのイウイーはその教えを引き継ぐ一人である。

この映画の詳しい情報はここにある。

飛行機雲二題

秋は飛行機雲がよく出る。そこで飛行機雲を撮った写真を載せる:

10月26日夕方(宮城県立工業高校グランド)
11月2日夕方(青葉区霊屋橋)

Iphoneで撮った写真

Iphoneは軽いので何時も散歩のお供である。カメラも付いているので写真も撮れる。そのカメラで撮った写真である。

パン工房シベールの前にある桂
広瀬川の対岸

pythonプログラムのexe化

Pythonで作ったMakeCaptionWithLogo.pyをPythonに不案内なユーザにも使えるようにexe化することにした。

  • exe化にはpyinstallerを使った。pyinstallerをインストール後にコマンドプロンプトで以下のようなコマンドを入力する:
@echo off 
pyinstaller --onefile --exclude-module numpy \
 --exclude-module ..... --exclude-module ..... \
--exclude-module ..... --exclude-module .....  \
 --noconsole --icon=TOMATO.ico MakeCaptionWithLogo.py

ここで–exclude-moduleオプションはexe化で排除しても無害なモジュールを書く。numpyは大きなモジュールでプログラムでnumpyを使っていないときには積極的に排除する。その他のオプションの説明はここにある。

これでdistフォルダにMakeCaptionWithLogo.exeができる。これがこのファイル1つで配布可能なexeファイルである。サイズは約10MB。排除オプションを外すとサイズは約30MB。排除オプションは有効であることがわかる。

  • この手の配布用のexeファイルを作成するときには仮想環境を使うのが普通らしい。そこでPythonの仮想環境で使う開発環境で述べた仕方で仮想環境を作りこの環境下でexe化を行った。インストールしたモジュールはプログラムに必要なものだけした。できるexeファイルのサイズは10MBを切るだろうと期待したが、この仮想環境下でできたexeファイルのサイズは期待に反して約15MBであった。

 

 

Pythonの仮想環境で使う開発環境

ごつい表題であるが、いつも使っているPythonのプログラミング開発環境を仮想環境でもそのまま使いたということである。

  • Python3.10.4がインストールされているwindows10にそれと同じヴァージョンのPythonの仮想環境を作る:

win10のコマンド・プロンプト(CMD)の窓で

python -m venv [環境を作成したいパス]

ここの[環境を作成したいパス]はユーザ領域で構わない。このpathの中にあるScriptsフォルダにあるactivate.batというバッチファイルをCMDの中で実行すると仮想環境が実現する。詳しくはここを参照。

  • いつもはPythonパッケージに付随して配布されているIDLEをプログラミング開発環境として使っている。この環境を仮想環境の下でも使う。インストールされたそのままではリンクが全て実環境を向いているので、それらのリンクを全て(と言っても2つ)を仮想環境に向ける。

そのために実環境を向いたIDELと別に仮想環境を向いたIDELを作る。まずインストールしたIDELのショートカットを新規につくりそれが仮想環境を向いていることを示す任意の名前する。そのプロパティを開き[リンク先]のpath2つを変更する。
変更前

"C:\.....\Python310\pythonw.exe" \ 
"C:\.....\Python310\Lib\idlelib\idle.pyw"

変更後

"C:.....\PythonEnv\MyEnv\Scripts\pythonw.exe" \
"C:.....\PythonEnv\MyEnv\Scripts\sample.pyw"

ここでsample.pywは以下を中身とするファイルでフォルダScriptsに保存したものでありIDLEが起動される時に実行される:

from idlelib.pyshell import main
main()

詳しくはここを参照のこと。

このIDELを使うことによって実環境の時とほぼ完全に同じ開発環境で仮想環境下でのPythonプログラミングができる。

スローシャッターの面白さ

いつもはプログラムモードで写真を撮っているがシャッター優先でシャッターを遅くして写真を撮ると面白い写真ができることがある。

お弁当の時間だ

これは20分の1秒で撮っものだ。足の部分がぼけていて動きが強調されてくる。

米ケ袋の滝

これは風景であるがスローシャッターにすることで滝の水の存在感が増す。

最後の例は動いている物体(車など)を追ってスローシャッターで写真を撮ると物体以外は線状にぼけ、物体に運動の疾走感がでる。

仙台ループルバス

スローシャッターの写真で非日常的な写真が撮れる。

tkinterでcaption自動作成

必要があって展覧会に展示する作品に添付するcaptionを自動生成するプログラムを作ってみた。問題はtkinterで作った画面を画像ファイルにして印刷する工程である。

tkinterのcanvasウイジェット上にcaptionのイメージを作成し、このイメージを画像ファイルとして保存する。canvasウイジェットには自身が作ったイメージをpostscriptファイルにする機能があるが、日本語に取り扱いができない。そこで試みたことは画面の部分スクリーンショットで、canvasの部分を切り取って画像ファイルとして保存する。この方法を使った。

この部分の処理はPILモジュールのimagegrabとwin32guiを使った。win32guiでcanvasを含むwindowを特定し、imagegrabでその窓のcanvas部分だけを切る取ることをした。

作成例

作成例(写真L版サイズ)

ユーザインタフェイスは以下のような感じ:

上段:データ入力フォーム;下段:カンヴァス

全体のプログラムはここで見れる。