ImageMagickの量子化ビット深度について以前の記事で述べたが、そこで16ビットと32ビットの挙動が同じだったことが疑問だったので、もう少し調べてみた。結論としては、-gammaオペレータが32ビットに対応していないのが原因である。代わりに-levelオペレータのガンマパラメータを使うと、16ビットと32ビットで違いが出るようになる。
今回は、以下のようなコマンドを実行して量子化誤差の影響を見てみる。-levelオペレータで第3引数を指定するとガンマ補正が行える。さらに今回はガンマ256まで調べて限界を探ってみる。
convert -size 48x1024 -colorspace RGB 'gradient:#000000-#ffffff' -rotate 90 -level "0%,100%,0.5" -level "0%,100%,2.0" result.tif
8ビットの結果、ガンマ2からバンディングが視認できる。
16ビットの結果。ガンマ4からバンディングが視認できる。
32ビットの結果。ガンマ7からバンディングが視認できる。
64ビットの結果。ガンマ256でもバンディングは視認できない。
HDRI有効化かつ16ビットの結果。ガンマ32までは耐えるがそれ以降でバンディングが発生する。
HDRI有効化かつ32ビットの結果。ガンマ256でもバンディングは視認できない。
HDRI有効化かつ64ビットの結果。ガンマ256でもバンディングは視認できない。
パフォーマンスも改めて計測してみた。3000x2000の16ビットTIFF画像を読み込んでレベル補正を2回かける処理と、その結果の16ビットTIFFをJPEGに変換する処理の時間を別個に測った。10回の試行の最短時間である。
設定 | レベル補正 | JPEG変換 |
---|---|---|
8ビット | 1.597秒 | 0.493秒 |
16ビット | 1.824秒 | 0.479秒 |
32ビット | 2.108秒 | 0.524秒 |
64ビット | 2.812秒 | 0.983秒 |
HDRI有効化16ビット | 2.067秒 | 0.730秒 |
HDRI有効化32ビット | 2.450秒 | 0.975秒 |
HDRI有効化64ビット | 2.988秒 | 1.140秒 |
前回の記事ではHDRI有効の16ビットが有望であると書いたが、HDRI無効の32ビットもなかなかバランスがいい。パフォーマンスの低下が微々たるものである割には、レタッチ耐性がガンマ4相当からガンマ8相当に大きく向上するのだから。ただし、オペレータによっては32ビットモードがサポートされないっぽいので、注意が必要である。というか、レタッチ耐性の面でもパフォーマンスの面でもHDRI有効化16ビットの方が優れているので、可能であればこっちを使うべきことには変わりない。
ところで、多くのデジカメのRAWファイルのビット深度は12ビットで、一部ハイエンド機は14ビットである。DxoMarkによるとオリンパスE-M10のダイナミックレンジは12.3EVで、ソニーα7のダイナミックレンジは14.2EVということなので、それぞれRAWファイルのビット数は必要十分なものだろう。で、たかだか12ビットなり14ビットなりの精度で量子化されて誤差を含んでいるデータを処理するにあたって、しかも最終出力が8ビット深度のJPEGであるのに、レタッチソフト内での16ビットと32ビットの誤差の違いを論じることにそれほど意味があるのか。多くの場合は意味がない。しかし、ガンマ補正2以上の補正を何回か行うのであれば、32ビットモードを使うのは有用で、これはありえない話ではない。それ以上の補正を行うHDR写真の領域ではやはりHDRIを有効化すべきところだ。その場合でもHDRI有効化16ビットで十分だろう。
OLYMPUS OM-D E-M10 EZレンズキット シルバー ミラーレス一眼 OM-D E-M10 LKIT SLV
- 出版社/メーカー: オリンパス
- 発売日: 2014/02/28
- メディア: Camera
- この商品を含むブログ (1件) を見る
OLYMPUS ミラーレス一眼 OM-D E-M10 MarkII 14-42mm EZレンズキット シルバー
- 出版社/メーカー: オリンパス
- 発売日: 2015/11/07
- メディア: Camera
- この商品を含むブログを見る