会社の人から「何やってんの、Rawtherapee使えばそんなの楽勝っすよ」と言われたので試してみた。rawtherapee hdriでぐぐると、日本語ではその人のページと2chのログくらいしか検索されないんですけど… さっそくインストールして使ってみた。Windows版にはgtk+のライブラリやら何やらも詰め合わされて入っている。Linuxアプリをgtk+ライブラリ詰め合わせにしてWindows版、Windowsアプリをwine詰め合わせにしてLinux版、で両方配布するのが今後は主流になるのかもね。言語ファイルのenglishをjapaneseという名前にコピーして、自分で翻訳していけばUIも日本語が出るようになるので便利だ(?)。私はこういう技術に疎いので妥当な訳語が分からないですが。 rawのデコードにはdcrawを使っているような雰囲気。機能がありすぎてどれを使えばいいのかよくわからないが、「Color Boost」で最高にブーストすると(?)、不自然に色が強調された、それっぽい絵になった。jpegでもColor Boostすれば、それっぽくなるなぁ。 今までいじっていたufraw(こちらはdcrawのフロントエンドか?)でも似たような感じにまではできる。機能はRawTherapeeのほうが多そうです。 それで、RawTherapeeを使って、jpeg1枚とraw1枚でどういう差が出るのか、対決してみようかと思いました。 このシリーズで初めて画像を出してみよう。元の絵はさきほど撮った室内の様子です。自宅の写真はちょっと恥ずかしいですけど。キャプションをそれっぽくするために、無駄にポラロイド風にして傾けてしまった(笑)。RawTherapeeの設定は、以下のようなもの。操作としては普通に読み込んで、ColorBoostでめいっぱい効果が出るようにしてみただけです。
VMWare経由で使っているFedora 8をx86_64版にしてみた。ホストOSが32bitでもゲストOSを64bitにできるようです。えらいです。
VMを生成するときに警告が出てIntel VTが有効になってないとか言われたので、BIOSを眺めて有効にした。今まで有効だと思って「さすがに速いな…」とか呟いていたのだけど、間抜けでした。VMWareはコードのロード時にバイナリを書き換えて実行するときのオーバーヘッドを減らしているので、無効でもそこそこ速いはずです、というのは言い訳です。
確かに、こころなしか速くなってる気がしますね。気のせいかもしれません。
聞いていたとおり、ポインタとlongが64ビットになってますね。あと特に何かせずに普通にoff_tを使っても64ビットになっているので、面倒だったFILE_OFFSET_BITS=64も必要なくなります。あとは変わらず、かな。
# for i in char short int long "long long" quad_t "void *" off_t; do sh sizeof.sh "$i" sys/types.h ; done
sizeof(char)=1
sizeof(short)=2
sizeof(int)=4
sizeof(long)=8
sizeof(long long)=8
sizeof(quad_t)=8
sizeof(void *)=8
sizeof(off_t)=8
スクリプトは以下の通り。
ところで、WLWでは略語(やタグ)についてはプラグインがあって、勝手に略語の定義を探してきてくれたりするのだけど、漢字(かんじ)のルビのプラグインはまだないようだ。なら作ってしまえ、と思ったのだけど、Windowsでプログラムを書くなんてことに恐怖を覚えてしまうし、果たして書けるものかどうかも分からない。あまり大げさにしたくもないので、wxPythonで書いてみた。
一応、ルビ()と略語(と)を作ってクリップボードに送るように書いてある。これをWLWで「形式を選択して貼り付け → HTML」を選べば、そこそこうまいことやってくれる。ただルビはうまく処理できておらず、ルビの外側に書き続けたいのにルビの内側に書き加える形になってしまったり。
勢いで書いてしまいましたが、自分で使うかどうかはわかりません。あと「TAB」キーでフォーカスが移動しないのはなんでだろう…
一人退場した後に貴重な同点弾、2引き分けに持っていったらしい。試合は見てませんが(放送なかったの?)、絶好調ですね。次の相手は中国。韓国と日本が引き分けて、北朝鮮が中国に2点差で勝てば優勝、という。同時刻開催ではないので、日本と韓国の試合の結果が分かってからキックオフ、らしいです。日本と中国の試合は、一応TVで見てましたが…略。
理論はわかりませんが、少しずつためていたサンプル画像を観察すると、だいたいEV補正値が0.5違う場合、JPEGで見えるRGBの値(0~255)で20程度違いがあります。20という値が正確なのかどうかはわかりませんが、色の平均をとってみると、そんな感じで出る画像が多い。EV補正±0.3の場合は10程度の差に見える。 そのため、オートブラケットでEV補正±0.5で3枚撮った場合は、RGBの範囲が0~255だったのが-20~275くらいに広がるという感じにまではできそうです。 明るいほうと暗いほうに、だいたい7~8%ずつ増えて、256階調→約300階調くらいになる程度ですね。ちょっと物足りない感じもしますが、あくまでも「お手軽」だからこのくらいでいっか、という気もするところ。 0~99を暗め明るめの画像から、100~199(元画像の値で80~179)は中くらいの画像から、200~300(160~255)を明るめ暗めの画像から採用すれば、そこそこ色の範囲が広くなるのではないかと思います。 (追記) 2008/02/20(水) 19:44 「明るめ」と「暗め」が逆でしたね。
それほど悪くなかった。スタイル情報が入るのは邪魔ですが。WLW 上で見るHTMLソースはものすごかったんですけどね。
今回はメタデータについて。Raw(DNG)にもjpegにもEXIF情報が入っていて、撮影したときの情報を得ることができる。実際に出ている色のみで処理するのもいいけど、こういうメタデータをもとに明るさ情報を取り出してどうのこうのする、というのもアリだと思います。 EXIF情報を眺めると、ブラケット撮影で変更しながら撮影された明るさの情報が入っているのは、ExposureBiasValueという部分です。EV値(意味はわかりませんが高いほど明るい画像になるようです)の差分が入っている。これは…分数型かなぁ。 もともとのEV値は直接は入っていなくて、計算しなくてはならないようだ。BrightnessValue+log2(ISOSpeedRatings/3.125)+ExposureBiasValueの値がEV値、という情報をWebのどこか(URL忘れました)で仕入れて計算。 私のカメラでは、DNGでもJPEGでもこのスクリプトで食えています。
asciiの並びでは、「-」は数字やアルファベット、「/」や「.」よりも前、「_」は数字やアルファベット大文字より後ろでアルファベット小文字より前、という特性がある。
!"#$%&’()*+,-./0(略)9:;<=>?@A(略)Z[]^_`a(略)z{|}~
そのため、あるものに追加して属性を書く目的では、「-」よりも「_」が適している。何を言おうとしているのかというと、以下の2つのファイルがあるとすると、
- 01234.jpg
- 01234-1.jpg
名前でソートしたときの並び順が
- 01234-1.jpg
- 01234.jpg
である。「.(ドット)」よりも「-(ハイフン)」が前にあるためだ(拡張子を特別扱いするような面倒なソート方式を使っていれば別)。そのため、「_0」しかないときでも省略することができない。これが「-」ではなく「_」なら、
- 01234.jpg
- 01234_1.jpg
という順番になり、「_0」を省略しても構わないことになる。
今からasciiコードや拡張子の区切り文字を再定義できればなぁ…と思う人ってけっこういるんじゃないかな(「.」はもっと前にあるべき文字だよ…)。でも実現できるもんではないので、我々はあるものに合わせていくしかない。
xyzzyを作業環境にしようと思い立って、auto-save-buffers.lというのを見つけてきて(require ‘auto-save-buffers)してみたら、「名前が衝突するため、exportできません」と言われてしまう。見ると、(in-package “editor”)としているので、editorという名前空間に自前のシンボルをexportしようとしてエラーになっているようにも見えた。
調べてみると、xyzzyのlispの名前空間は勝手に作っていいものではなくて、いくつか決まったものがあってネストされた状態になっている(?)みたいな。そこで、(in-package “user”)に変更したら、うまいこと動いてくれたようだ。xyzzyのlispはEmacs-lispよりもcommon-lispに近いらしいですね。ちゃんと分数(実数)型になるらしい。Lisp系の言語は以前にちょっとかじってた程度なんで分からないけど。
実数型はなんで流行らないのかな。誤差を考えなくて済むので便利だと思うんですけどね。
あとはTortoiseHGを入れてmercurialで作業環境を管理するようにして、Linuxとの同期をとったりできるようにした。auto-save-buffersもこういうものを前提にしたものですしね。Windowsで作業するというのがイメージできていなかったが、そう悪くない環境になるような気がする。xyzzyのPythonのモードも悪くない出来だと思います。
真面目に見ていませんでしたが、川島の代表初キャップにテセの先制ゴールか。ビデオにとっときゃよかったな。山岸は表情を見る限り、自分のプレーに納得してませんでしたね。テセは調子が良さそうでした。開幕スタメンはやっぱテセかなぁ。
我那覇の調子はどうなんだろう。