RawTherapeeによる背景のぼかし

RawTherapeeがヴァージョン5.9から局所処理に使えるようになってその処理を時々使っている。今回は背景をぼかすことにつかった。

写真は蝋梅をアップで撮ったものであるが、背景のボケが甘く蝋梅がすこし沈んでいる。そこで背景のボケを少し強くしたい。ボケの処理は簡単にできるがそれを背景にのみに作用させたい。この処理をRawTherapeeの局所処理で行う。

オリジナル画像

まず処理の適用部分の切り出しをする。RawTherapeeの領域選択はアルゴリズム的である。適用部分のなかに典型的なスポットを選択する。そのスポットを参照点として各ピクセルの色空間上の距離を計算する。これが予め定めてある閾値より小さければそのピクセルは参照点と同類であるとする。そうでなければこのピクセルは処理範囲外とする。このようにして参照点と同類であるかどうかで処理領域を決める。

背景をぼかす領域の設定では画面全体を選択してぼかす処理をしたくない点を参照スポットとする。今の場合は中心にある蝋梅の花弁。

つまり背景をぼかす処理をするときにはその処理をしたくない領域をまず確定させる。次にその「リヴァース」をとる。これで領域が反転する。この反転した領域がぼかしをかけたい領域となる。

適用確認ボタン(ΔEのプレヴュー)がにオンなっていると、適用領域に半透明のマスクがかかる。適用領域が期待したものになるように閾値(実は複数個ある)を変えてみる。

このようにして得られた領域に適当なガウスぼかしを施した画像を以下に載せる:

背景ぼかしをした画像

 

xubuntuのPythonマクロにScriptForgeを使う

ScriptForgeはLibreOfficeをプログラム的に操作することを目的としたモジュール作成のためにLibreOfficeから提供される膨大なライブラリー群である。Pythonマクロ作成にはその一部であるクラスCreateScriptServiceを使う。

ScripyForgeはLibreOfficeのインストールと一緒にインストールされるがxubuntuを含むubuntuではシステムワイドなパッケージとして別個にインストールする:

sudo apt install python3-scriptfoge

またこのクラスを継承した各種ドキュメント用、インタフェース用のクラスが用意されてる。これらの説明はここにある。

ここではスプレッドシートCalcをPythonマクロで操作するために必要なそのサブクラスを使う。

このサブクラスで使える様々のメソッドの説明はここにある。

例題は「今開いているシートのセルA!に書かれている数値を読み込み、それに書かれていた数値に1を加えた数値を再度セルA1に書く出す」というものである:

# coding: utf-8
from __future__ import unicode_literals
from scriptforge import CreateScriptService
doc = CreateScriptService("Calc")
def increment_cell(args=None):
    value = doc.GetValue("~.A1")
    print(type(value))
    value += 1
    doc.SetValue("~.A1", value)
g_exportedScripts = (increment_cell, )

GetValue、SetValueが使ったメソッドで、引数の中の~はCalcで今開いているシートを指す。最後の行はこのモジュールでマクロとして登録する関数名をタプルで並べる。ここの例ではincrement_cellがそれである。

ScriptForgeなしでもマクロは書けるが、これを使った方がプログラムはすっきりする。

仙台でも梅が開花

今日(3月12日)に散歩中に近所の家の梅の花が一輪咲いているのを発見した:

咲いた梅一輪

もしかしてと思い東北大学片平キャンパスに行ってみた。そこの梅はかなりの花を付けていた:

片平キャンパスの梅

xubuntuのPython仮想環境でLibreOfficeを使う

LibreOfficeのPythonマクロ環境は前回に述べた。ここではこの環境で便利なsite-packegeを使うことについてのべる。

windowと異なり、linuxではPythonマクロのために特別なPythonインタプリタが用意されてるわけではない。LinuxではLibreOfficeを起動した環境下にあるPythonを使う。従ってそのPythonにインストールされているsite-packegeがそのまま使える。Pythonプログラミングの作法として仮想環境を使うことを以前述べたが、Pythonマクロ環境もこの仮想環境から起動したPythonを使うことが合理的である。

LibreOfficeの起動は仮想環境のターミナルエミュレータから

soffice -n

を入力する。これで新規のdocumentでLibreOfficeが立ち上がる。様々なフラグは

soffice --help

で見れる。

このLibreOfficeのマクロ作成ではプログラミングには仮想Pythonでインストール済のsite-packageが利用できる。

ここまでのシナリオでいけるかなとおもったらPython仮想環境から立ち上げたLibreOfficeではマクロのための統合環境APSOが起動でエラーになる。

xubuntuにPythonマクロ環境をつくる

前回の続きである。LibreOfficeのマクロは様々なプログラミング言語で作れるようになっていて、Pythonもその1つである。

xubuntuでは別な方法もあるようであるが、ここではwin10でも使ったAPSOというツールを使った環境を作る。このツールの登録はLibreOffice.Calcを立ち上げてツール->拡張機能と進むと登録画面が出るので予めダウンロードしておいたAPSOを登録する。オプションでプログラミングで使うテキストエディタを指定する。xubuntuではnanoやplumaなどが使えるようになっているが、nanoはそのままではダメらしい。plumaは/usr/bin/plumaで引数なしでで立ち上がる。

ユーザが作るマクロの保存場所は決まっていてlinuxでは

.config/libreoffice/4/user/Scripts/python/

である。初期状態では必要なディレクトリが存在しないので適宜に作る。

またユーザが作る汎用的なモジュール(例えばメッセージボックス)は

.config/libreoffice/4/user/Scripts/python/pythonpath

に保存する。これらのモジュールはマクロでインポートして使うことができる。

APSOの起動はLibreoffice.Calcの画面のメニュの

ツール->マクロ->Pythonスクリプトの管理

で行う。APSOの初期画面がでるのでそのメニュから作業を始める(注:APSOの最新版はAPSO1.4.4であるが、ここでは安定版のAPSO1.3.2を使う)。

APSOはよく出来ていて開発中のマクロのデバッグ実行やPythonシェルの表示(マクロの中のprint文の出力はこのシェルにでる。これもデバッグに重宝)などの機能を持っている。なおLibreOfficeのPythonのヴァージョンは3.12.3である。

これで準備は完了。

xubuntuにPython仮想環境をつくる

娘が「遅い」といって手放したlenovoに軽いOSを入れてみた。このlenovoは確かに遅くwin10では精神衛生上よくない遅さである。CPUやメモリーが貧弱な割にハードディスクは容量が1000GBと豊富であるので、軽快に動くと定評のあるxubuntuをwin10とdual bootでインストールする。

xubuntu自体のインストールは問題なく進行したがその手前でPCのBIOSの画面を出すことに苦労した。最も確実な方法はNOVOボタンを使う方法であるらしいが肝心のそのボタンの場所が見つからなかった。このPCでは向かって左の側面のSDカードの挿入口の横に小さな穴がありそれがNOVOボタンでPCの電源を落とした状態でこのボタンを楊枝などで押すとBIOSの画面が立ち上がる。

【Python環境】

xubuntuのインストールでシステムワイドのPython(3.12.4)がインストールされるがPythonプログラミングは仮想環境で行うことが作法である。これはプログラミングが実験的な操作を伴うことが多くシステムワイドなPythonをいじりたくないからである。

そこでhome直下に作業ディレクトリを作りそこをPythonプログラミングの作業領域とする。ターミナルエミュレーターでそこに入って

python3 -m venv MyEnv

と入力。MyEnv(名前は任意)というディレクトリができ必要なファイルがインストールされる。

仮想環境の活性化は以下のコマンドによる:

source MyEnv/bin/activate

これでエミュレーターのプロンプトの先頭に(MyEnv)が付き仮想環境にいることがわかる。ここのPythonは初期状態ではパッケージは何もインストールされていない。プログラミングに必要なパッケージをインストールする。因みに不活性にするには仮想環境内でi以下のコマンドを入力:

deactivate

次に総合開発環境を使えるようにする。以前かからPythonに付属して配布されている総合開発環境idleを愛用しているので仮想環境でもこれを使う。xubuntuで配布しているidleはシステムワイドなPython用でそのままでは仮想環境では使えない。そこで仮想環境下で以下のコマンドを使う:

python3 -m idlelib.idle

これで仮想環境にリンクしたidleが立ち上がる。

 

以上でPythonプログラミングの環境ができた。