DXOMARKのセンサー計測値の見方

先日の記事で、DXOMARKのセンサーの計測値がどのようになっているのか紹介したのですが、見方がよく分からない、何を計測しているのか分からない、という方もいると思いますので、少し解説していこうかと思います。

ここでは、私が見る際に特に注目している3つの指標(ダイナミックレンジ、トーナルレンジ、色感度)を中心に、技術的に重要なポイントについて解説します。

少し数学的な話が出てくるので、数式を見たくない方は各項目の「ポイント」の部分だけをお読みください。数行にまとめた内容だけでも何を指しているのかは充分にイメージできるかと思います。

また、更に詳細が気になる方はDXOMARKの計測方法についてのページNoiseの計算式についてのページ(英語)をご確認ください。

ダイナミックレンジ

ポイント

  • ダイナミックレンジというのは、一言で言えば、記録できる明るさの範囲のことです。
  • ダイナミックレンジの数値が高ければ、明暗差をより正確に記録できます。撮って出しJPEGでは明るすぎたり暗すぎたりしたとしても、RAW現像すれば白飛びを戻したり、暗い場所を持ち上げたりするような編集がうまくいきやすい、ということです。

原理

現代のデジタルカメラでは、CMOSセンサーの中にある撮像素子が光を受け取り、その受け取った光を、光の強さに応じて電圧へ変えていきます。僅かな光しか受け取っていなければ、低い電圧。強い光を受け取っていれば、高い電圧、といった具合です。

ただ、この僅かな光というのが難しく、本当に僅かな光となった場合、撮像素子が光を受け取って発した電荷なのか、それともただセンサーに乗っていたノイズなのか、判別する手段はありません。

ISO100などの低感度で撮影した場合、大きな電荷を得てから変換するのです(得られない場合には真っ暗な画像となります)が、ISO12800などの高感度に設定した場合、僅かな電荷の変化を増幅して使っているので、ノイズとして乗ってきてしまった電荷も、そのまま最終的な画像に入ってきてしまうという事が発生します。これが高感度で撮影した際に見えるあのザラザラの原因の一つです。

つまり、ISO12800などの高感度で撮影した場合、もともとノイズも含めて増幅した結果を使っているので、暗く写っている場所などというのは、ほとんどノイズぐらいしか記録されていないということです。そして、ギリギリ写っている明るさの部分は、ノイズなのか被写体なのかよく分からない程度に、ノイズにまみれていることになります。基本的には、暗い部分の情報が失われるのが高感度、と考えても差し支えないだろうと思います。

さて、この明るさを示す電圧は、最終的には数値化され、現代のカメラでは12ビットまたは14ビットで記録されます。12ビットというと、4096段階が表せるので、理論上明るさは0〜4095までの範囲で記録されるはずなのですが、実際には先程述べたノイズの影響で、そんなに幅広く綺麗に記録されることはありません。(他にも圧縮RAWというものの影響があり、計算上も実際に記録できる範囲は少し狭まります。気になる方はソニーの圧縮RAWで調べて頂けると良いかと…)

DXOMARKの用語において、「ダイナミックレンジ」は、

The range of luminance values between the darkest and brightest perceptible points in an image.

https://www.dxomark.com/glossary/dynamic-range/

とされており、測定の際には、彼らの基準で「ギリギリ判別できる」場所での最大の明るさ、及び、最小の明るさを確認しているようです。詳しい話は DXOMARK camera sensor testing protocol and scores というページで解説されているのですが、1500cd/㎡の光源を複数のNDフィルターを通して撮影し、その結果を確認しているとのこと。

NDフィルターは0%減衰〜99.99%減衰するように用意されており、99.99%というのは13段以上の減衰(1/2^13 = 0.00012207031)なので、現代のカメラのダイナミックレンジの限界ぐらいまではテストできると謳っています。(記事では、”much greater than today’s digital cameras can achieve”とありますが、2021現在、基準感度では最大15段程度ある機種も存在するので、much greaterー遥かに大きいーとは言えないように思います)

このNDフィルターを通して撮影し、各色のノイズレベル確認し、SNR(ノイズ比率)、ダイナミックレンジ、及び、トーナルレンジを計算しているとのこと。具体的な計算式はNoiseのページで解説されています。

トーナルレンジ(階調)

さて、CMOSセンサーの仕組みとダイナミックレンジというのは記録できる明るさの範囲というのが大体わかったところでまた新しい概念が出てきます。

よく耳にする「階調」

これって何なのでしょうか?

ポイント

  • 「階調」も、基本的にはダイナミックレンジと同じ話で、記録できる明るさを指しています。ただし、ダイナミックレンジが明るさの範囲を示していたのに対し、階調はその段階を示します。
  • 諧調の数値が良いセンサーでは、朝焼けや夕焼け、広範囲に広がる影など、グラデーションの起きているシーンでより正確に記録ができることになります。

原理

ダイナミックレンジの章で述べた通り、理想的なセンサーで撮影し、12ビットの出力を得た場合、4096段階が判別できるはずなので、理論上、最大の諧調は12ビットの時に4096段階で、14ビットの時に16384段階です。

これだけ見ると、階調というのは単純にセンサーが最終的に出力してくるビット数に依存するのではないかと思ってしまいますが、実際にはノイズの影響でもう少し少なくなります。

単位を無視して説明すると、例えば、隣り合う2つの画素で、それぞれ明るさが10と12相当だったとします。最終的なセンサーからの出力として、10と12がそのまま出てくれば良いのですが、10のほうにノイズが少しだけ乗って12になってしまったら、この2つの画素の出力は同じ値になってしまいます。

こういう理由から、ノイズがダイナミックレンジだけでなく、階調にも影響を与えてきます。DXOMARKは実際には階調そのものは計測しておらず、明るさ(Gray Level)ごとの中央値からの標準偏差を用いて、有効なビット数を計算しています。

これはちょっと複雑なのですが、ノイズが無い画像においては、明るさは常に一定なので、一定範囲内の明るさの分布を統計的に見ると、偏りがなく、各ピクセルは常に一定で、標準偏差は1になるはずだという前提で成り立っています。以下に標準偏差σの計算式をDXOMARKのNoiseのページより引用します。

    \[    \boxed{{\sigma}_{GL}=\frac{1}{n}\sum_{i=0}^{n} ({GL}({x_i}{y_i}) - \overline{GL})^2} \]

ここで、\overline{GL}はGray Levelの中央値(Median)を示します。

統計的に言えば、この標準偏差というのは、中央値を基準とした場合の平均二乗誤差です。計測している一定範囲内において、実際の明るさが常に一定だと仮定すると、中央値というのは(センサーの性能が悪かったり条件が厳しいなどでなければ)、正しい値に近くなるはずで、その中央値との乖離=ノイズが乗っているのであろう、という事を前提にしています。

ここで得られた平均二乗誤差が、その撮影条件で理論上取りうる最小の明るさの段階の幅、と言えるかと思います。(それよりも小さい値でしか明るさが変化していない場合、ノイズにかき消されてしまう可能性が高いため)

これを用いて、特定の定義域内で表現できる段階の数を積分式で表したものが解説ページに記載されています。

    \[ \boxed{{TR}=\int_{x_{min}}^{x_{max}}\frac{dx}{\max(\sigma(x), 1)}} \]

解説ページではここで、{x} が何を指しているのかについて具体的な記述が無いのですが、変化量なので明るさ(Gray Level)です。連続する値と仮定して積分していますが、実際には最大14ビットの離散値ですし、全てのGray Levelについて計測していないのは明らかなので、先ほどのダイナミックレンジの計測で利用した範囲で補完しながら計算しているのだろうと推察されます。

また、このままだと理論上表現できる明るさの段階の数が得られるだけなので、それをビット数で表現するために底が2の対数に変換します。

    \[ \boxed{{TR_{bit}}=\log_2{TR}} \]

というわけで、ビット数が出ました。DXOMARKの計測においては、ノイズの発生状況から理論上表現できるであろうビット数を計算している、という事が分かりました。

色感度

段々と難しくなってきましたが、最後に色感度についてお話します。

ポイント

  • 色感度とは、RAWの段階でどの程度正確に色が記録できているのかを確認したもの、です。
  • 色感度の数値が良いということは、実際に目の前にある色と、カメラを通して記録した色が近いということです。
  • カメラを通すと色が大きく変わる、という事がどの程度起こるのか、定量的に理解できる指標です。

原理

例えば、100%真っ赤なのであれば、RAWの中に記録されているRGBデータは、赤100%、緑0%、青0%となっているはずです(そんなデータは実際にはあり得ませんが)。このズレが少なければ、色感度が良く、大きくズレて記録されているようなら、色感度が悪い、ということになります。

この色感度を確認するためには、DXOMARKでは、正確な光源と被写体を用意して、分光器を用いた計測をしています。京立電機株式会社製のパターンボックスの中にGretagMacbeth ColorCheckerを格納したものを利用し、その結果を分光器で計測、その後、RAWで記録されたデータと比較しているということのようです。

パターンボックスでは照度ムラが小さく抑えられた(7%以下)正確なものなので、光を十分に信頼できるレベルでコントロールして撮影ができるということです。

最終的にビット数に変換されていますが、具体的な計算方法については述べられているページが見当たりませんでした。色空間上でどこまで再現できているのかを確認することで、色域を推測し、その色域を表現するために必要なビット数を計算しているものと思われます。

Screen / Print

DXOMARKの計測結果のグラフを見ていると、左上に「Screen」「Print」と書かれたボタンがあります。これをクリックすると、若干結果が変わるのですが、これらは実は非常に重要です。

α7Sの計測結果グラフより引用

ポイント

  • 「Screen」は、いわゆる「等倍鑑賞」をした際の数値。1ピクセルずつチェックされるので、高画素機は不利。
  • 「Print」は、4K相当に縮小して確認した際の数値。画素数の異なるセンサーを、同じ条件で比較しようとしたもの。
  • DXOMARKで出しているセンサーの最終的なスコアは「Print」の数値から算出されています。

原理

センサーは高画素になればなるほど、1画素あたりの面積が当然減少します。同じフルサイズのセンサーで比べれば、4800万画素のセンサーにある画素は、1200万画素のセンサーの画素と比べて、1/4以下の面積になるということです。「以下」と書いたのは、実際には画素と画素の隙間が0にはならないので、若干のロスがあり、1/4よりも小さな 面積になります。

1画素あたりの面積が小さくなるということは、撮像素子が受け取る光がその分減少するということなので、当然、ダイナミックレンジや階調は悪化します。ですので、このまま等倍のサイズで比べてしまうと、高画素機は圧倒的に不利であり、数値が悪くなるわけです。

これを、なるべく同等な条件で比較しようとしたのがこの「Print」のサイズでの数値計測で、これは、オリジナルのRAW画像を、8×12インチの紙に300dpiで印刷した際に必要となる800万画素にリサイズした上で性能を計測したものです。

もともとは大きなファイルでも、800万画素にリサイズされることで、数値が改善されている(=複数の画素を組み合わせることで、より広いダイナミックレンジや正確な色感度を実現している)ようなので、このリサイズの際のアルゴリズムは不明ですが、単純に間引きするようなものではなく、画質を維持したままリサイズするアルゴリズムが採用されているようです。

最後に…

解説を読み込むまで考えたこともありませんでしたが、DXOMARKの計算は、科学的ではあるものの、無条件に信頼するには少し心許ないところもあると感じました。

特にTonal Rangeの計算においては、最小二乗誤差で計算しているため、統計的に言えば「期待値」よりも若干悪い数字になるという点や、「中央値が正しい」という前提であるため、画素ピッチを極端に小さくして、全く正しい値が得られないセンサーを作ったとしても、多くの画素が同じ数値を出している限りは、この計算ではそれなりのビット数が出ることになってしまう点などは気になりました。

これは何を意味するかというと、全く正しくない値しか得られないようなセンサーでも、RAWの段階でノイズ除去を入れることで、「Tonal Rangeの数値が素晴らしい」、という計測結果になるということです。

定量的に比較が出来るデータは非常に有益であり、多くの人が恩恵を受けていますが、やはりカメラの性能は、自分で体感するのが一番良いのだろうと思います。