LinuxでPhoto CDをサポートする難しさ
スライドやネガのスキャンを専門とするラボでは、Kodakが作り上げたスキャニング・システム、PCDが長年にわたって採用されてきた。性能が高く、APSサイズから大判に至るまであらゆる種類のフィルムに対応できるからだ。
そうしたラボでPCDファイルを制作するために使われていた機材はすでに販売されていないが、KodakのWebサイトには今もPCDに関する多くの情報が掲載されている。それを見ればわかるように、PCDは通常とは異なった形式を持っている。他社がほとんどサポートしなかった理由の一つは、この形式自体の特殊性にある。
PCDファイルはマルチレゾリューションで、Baseサイズのほかに、Base/4とBase/16の縮小版と、Base*4、Base*16、Base*64(オプション)という高解像度版が1つのファイルに含まれている。高解像度版はBase*4、Base*16、Base*64と名付けられているが、Baseを拡大処理したものではなく、最大解像度のイメージ(Base*16またはBase*64)は実際にフィルムをスキャンしたものだ。Base*16では630万画素、Base*64では2500万画素に相当する。
PCDにはもう1つ欠点がある。たとえばJPEGの縮小画像は元画像と分けて格納されているが、PCDではサイズの異なるイメージが分離されておらず、低解像度のイメージは本来のサイズのイメージが持つ画素のサブセットになっているのだ。
符号化法も、PhotoYCCという独自のものが採用されている。YCbCrに類似したシステムだが、明度100%を超える輝度データを表現することができ、その意味では今日広く使われているハイダナミック・レンジ形式の先駆けと考えることもできる。PhotoYCCでは、撮影する場面とは無関係に、参照用の装置を基準に明度100%を規定している。
非公式Windowsソリューション
こうした符号化法は撮影範囲に極めて明るい(発光している)部分がある場合に有利だが、その特殊性により多くのアプリケーションやライブラリーが正しく機能せず、PhotoYCCのデータを切り詰めてしまう。その結果、TIFFやJPEGに変換すると光輝部が飛んでしまう。
Ted Felixはそうした変換結果に満足できず、Kodakの技術資料を読み解き低品質の変換を改善する方法を編み出した。KodakがPCDイメージのロード用にソフトウェア企業に提供していたWindows用DLLに含まれる輝度値の変換表を修正したのだ。
Felixが修正したライブラリーは手軽な代替版として使えるだろう。光輝部が飛んでしまう変換ツールの多くが、これによって頼れるツールに変身する。
このライブラリーで修正可能なアプリケーションは、Felixのサイトにリストされている。1つを除き(後述)すべて有償で、オープンソースのものはない。リストにAdobe Photoshopはないが問題がないわけではなく、Felixのテストでは他の製品同様光輝部が飛んだ。変換ルーチンが異なるためFelixのDLLでは修正できないのだ。
Linux向けオプション
Felixの方法で修正可能なWindowsアプリケーションの一つにイメージ・ビューアーIrfanViewがある。軽量で無償(ソースは非公開)。精度が高く、多くの写真家から評価されている。これはWine上で動作するため、LinuxシステムでPCDイメージを扱う場合の、最後の手段になるだろう。
もちろん、Linuxネイティブのソリューションが好ましいが、それは高望みというものだ。数年前までPCDイメージをPortable Pixmap(PPM)形式に変換するhpcdtoppmというコマンドライン・ユーティリティーがNetpbmパッケージに含まれていたが、ライセンスが制約的だったため、一部のディストリビューション(主なものでは、Debian、Ubuntu、SUSE)は、それぞれのNetpbmからhpcdtoppmを削除した。
手元のディストリビューションにhpcdtoppmが含まれていたら、光輝部が適切に処理されるかどうか確かめてみよう。適当なイメージがなければ、Felixのテスト用PCDを使えばよい。変換結果が思わしくない場合は、Felixのhpcdtoppm用パッチ(Felixのサイトにリンクがある)を適用してみるとよい。ただし、hpcdtoppmが大幅に変更されている場合は、パッチの適用ではなくコードを自分で変更しなければならないかもしれない。
もっと信頼できるソリューションもある。ImageMagick(IM)だ。活発に保守されており、ほぼすべてのLinuxディストリビューションで標準コンポーネントになっている。PCDファイルへの変換は、「convert image001.pcd image001.tiff
」などとする。
私にはIMの変換も光輝部が明るすぎるように思われるが、Felixが挙げている例ほど悪くはない。変換はmagick/colorspace.cにあるYCCMAP変換表を使って行われる。
この変換表をグラフにすると、光輝部が抑制されていることがわかる。実質的に、PhotoYCCからRGBに変換する際にガンマ修正を施していることになる。すべてのイメージに同じガンマ修正が適用されるわけだ。これに対して、Felixが修正した変換表は直線的なため、光輝部の情報が潰れることはない。
この問題についてIMの開発者と話してみたのだが、彼らはKodakの参照イメージと比較テストし、この変換表で期待した結果を得たという。
こうした変換曲線などは、写真家が議論を始めれば一日かけても終わらないような種類のものであることはもちろんだ。しかし、私としては、無修正のスキャンを作業用のイメージに変換するときはいかなる情報も失いたくないのである。幸いなことにオープンソースだから、自分で変更することはできる。
colorspace.cの変換表を線形になるよう変更しておけば、得られたイメージをイメージ・エディターを使って思い通りにガンマ修正し、イメージの内容と使用目的に沿って修正することができる。そこで、YCCMAP変換表を直線化するパッチを作ってみた。このパッチはIMのトランクに対する差分で、トランクのソースは匿名SVNからチェックアウトできる。私としては結果に満足しているが、不満だったとしても、Photo CDの使用頻度にかかわらずPhoto CDが安定した光メディアであることは確かであり、したがってファイルの唯一のコピーを壊さないようにとあまり心配する必要はない。
変換すべきか、再スキャンすべきか |
---|
そもそも、なぜ、PCDのような古いプロプライエタリーなファイル形式を問題にするのだろうか。それはPhoto CDファイルが今も残っているからだ。PCDは広く使われた形式であり、ほんの10年前までフィルム・スキャンの最高峰だったのだ。
スキャン技術は年々大幅に向上しており、普及機では特に著しい。したがって、オリジナルのスライドやネガがあるなら、古いPCDファイルに拘泥するよりも、最新の機器を使ってスキャンしなおした方が品質の高いイメージが得られるだろう。とはいえ、PCDファイルを変換した方がよいケースが2つある。一つは、オリジナルがないか損傷している場合だ。理想的には決して起こりえない最悪ケースだが、いずれ無くしたり傷付けたりしてしまうものだ。その場合は、古いPCDスキャンを使うほかはない。 もう一つは純粋に実務的なケースだ。PCDファイルが大量にある場合、オリジナルのフィルムを再スキャンすると、ディレクトリー中のPCDファイルを一括変換するより、かなり長い時間を要する。フィルム・スキャナーのパンフレットに何と書かれていようが、高品質のスキャンは数秒では終わらない。したがって、Photo CDが大量にある場合、PCDを一括変換し、大きく印刷したいものや引き延ばしたいものに限って再スキャンするのが有意義な時間の使い方というものだ。 |
教訓
私がPCDサポートに関心を持ったのは、この記事のコラムに書いたケースの一つに該当したからだ。あるイメージを使いたかったのだが、オリジナルがなく、残っているスキャン・イメージの中でPCDが最良のものだったのだ。やむを得ず行った作業だが、お陰で、デジタル・アーカイブ一般、そしてアーカイブ形式の重要性について考えさせられた。
といっても、PCDに技術的な欠陥があったわけではない。単に特定メーカーの形式だったというだけのことだ。しかし、その唯一のメーカーが保守に関心を失ったとき、PCDは完全に死に絶えてしまった。もし生きのびていたとしても問題はある。公開された文書(Ted FelixはKodakのサポート文書を解読したのだった)があるにもかかわらず、多くのソフトウェア・メーカーが変換ユーティリティーを不完全に実装し出荷した。そして、いったん使われなくなれば、その正しい解釈はすぐに失われ、ImageMagickのようなオープンソース・プロジェクトにさえ、バグが忍び込んでくる。
この話には汲むべき教訓がある。今日、デジタル・カメラの大手メーカーは自社だけしか使わないRAW形式を採用しており、その多くは十分な資料が提供されていない。10年後、果たして.NEFや.CR2ファイルに簡単にアクセスすることができるだろうか。カメラ・メーカーに中立で仕様が公開されているAdobeのDNG形式でさえ、それを実装し提供しているのはAdobe、ただ1社だけだ。10年後もAdobeがあることは確かだろうが、私には、DNGもそうだとは言いきれない。そのとき、ImageMagickがあることを望むばかりだ。