ディザ
ディザ(Dither)とは、量子化誤差(端数)を、単純に丸めるのではなく、全体の量子化誤差が最小化するよう確率を調整して切り捨てまたは切り上げのどちらかをランダムにおこなうためによるゆらぎのことである。そのような一種のノイズ的データを追加する作業および技法はディザリング(Dithering)またはディザ法と呼ばれる。誤差を周囲のデータに拡散する手法をも含めて言うこともある。ディザリングは、デジタル音響やデジタル動画のデータを処理する際に普通に行われ、CDの制作でも最終段階でよく行われている。
戦後間もなく、アナログ計算や水力制御の銃砲についての書籍で "dither" という用語が使われている。
量子化におけるディザリング技術の導入を提唱したのはMITの Lawrence G. Roberts で、1961年の修士論文と1962年の論文があるが、彼は "dither" という言葉を用いていない。今のような意味で "dither" が使われた初出は1964年の Schuchman の論文である。
ディザリングは、デジタルデータの標本化周波数や量子化ビット数を変換する際の処方(デジタル信号処理)として、デジタル音響、デジタル動画、デジタル写真、地震学、レーダー、天気予報などの分野で使われる。なかでも波形解析におけるこの信号処理の方式の意義は大きい。
変化が連続的な量の量子化には量子化誤差がともなう。その誤差が本来の信号に連関するかたちで均一的に再起するものであるとき、そこには、数値的確定性をそなえた人工的な周期が現出することになる。ところがそのような人工性(誤差の周期性・確定性)を孕んだデータというのは、ときとして望ましいものではない。信号の周期性・確定性にたいして受信側が敏感である場合は特にそうである。このとき、データ信号の周期性・確定性は、ランダム性を含ませたディザリングによって排除することができる。
信号処理のレシピとしては、単に乱数を加えたのでは量子化ビット数を減らしたのと同じというだけであり、24ビットでオーバーサンプリングならぬ「オーバー量子化」し、誤差をきちんと処理して16ビットにするのが良い。
誤差の拡散も含む場合(たとえば、真っ黒の背景の中の1ドットの真っ白の点が、ぼやっとした明るいグレーのかたまりになるだろう)、場合によってはエッジ強調など他の処理とも組み合わせることもある。
音響においては、デジタルフィルタでよく見られる周期的リミットサイクルの解消に役立つ。ランダムノイズは一般にリミットサイクルが作りだす倍音よりも聴取し難い。音質面から説明すると、「デジタル臭い」と表現される硬質な音の傾向を緩和することが出来る。具体的には、サ行の声が耳に刺さらなくなる様な変化が起きる。
Audio Engineering Society (AES) の学会誌に掲載された Lipshitz と Vanderkooy の論文で、様々な確率密度関数 (PDF) をディザ信号(ノイズ)として使ったときの差異を指摘し、音響におけるディザ信号の最適レベルについて論じている。ガウス雑音を使って歪みを解消するには、方形PDFや三角形PDFよりも高いレベルを必要とする。三角形PDFによる雑音は歪みを解消するのに低いレベルで済む。
たとえばSACDなどに収められる量子化ビット数(ビット深度)24ビットのデータがあるのにたいしてCDのデータは16ビットである。16ビットはCDの規格の数字であり、制作工程では24ビットで処理されていたとしてもCDに収録するためのマスターの段階では16ビットにしなければならない。プレイヤーが再生するデータも16ビットである。この規格の枠内で高品位化を図る手法のひとつとして、量子化ビット数の多い(たとえば24ビットの)データを16ビットに変換する際に、ディザリングをおこなう、という手法がある。
16bit sine.ogg
ある量子化ビット数のデータを異なるビット数に変換する方法はいくつかある。目的のビット数の標本単位に収まらずしてはみ出る元データの部分を刈り除く切り捨て(truncation)、また、はみ出ることになる部分を近い値に直してでも保持する丸め(round)などがある。しかしこれらの処方は、前節で述べられている誤差の周期化・周波数成分化およびそれによるノイズの発生をもたらしかねない。例えば次のような波形データを表す値があるとする。
1   2   3   4   5   6   7   8
たとえば、この波形が有する数値を 20% 縮小する(波形の構成値すべてに 0.8 をかける)と、次のような値が得られる。
0.8 1.6 2.4 3.2 4.0 4.8 5.6 6.4
量子化ビット数が、整数の桁のぶんしかなかったら、これを整数に改めなくてはならない。
「切り捨て」を適用した場合には次のようになる。
0   1   2   3   4   4   5   6
切り捨ての代わりに「丸め」(四捨五入)を適用した場合には次のとおりである。
1   2   2   3   4   5   6   6
いずれの処方でも、元データの数値に対していくらかの誤差がある。そしてその誤差はまた回帰的である。正弦波のような反復的な波形についてこの現象を考えるとわかりやすい。そのような波形を標本化し、量子化する場合、元となるデータに含まれる 2.4 や 6.4 という値にたとえば「切り捨て」を適用して 2 などにするために生じる 0.4 の差分は、元データの波形の周波数と標本化周波数の積の周波数で、周期的に再起することになる(この例の場合、元データが 5 である 4.0 の量子化には差分が発生しない)。音を生じさせるのが物質の周波的運動である以上、デジタイズの際に起こるこの周期的な誤差は周波数成分の一つとして音に化ける。そしてこれを耳が歪みとして受け取ることになる。
量子化誤差のこのような問題を根本から回避することは不可能である。2 桁の数値 (4.8) が「切り捨て」や「丸め」などによって 1 桁の数値(4 または 5)に変換される過程で誤差は必ず生じる。ただし、数値を量子化する仕方に何らかの工夫を加えて誤差の周期的発生すなわち差分の周波数化・ノイズ化を防ぐことは可能である。すなわち、量子化における誤差が本来の信号・波形の周期とは連関しないようにするのである。
一策として、たとえば2桁の値 4.8 を処理するにあたって、あるときは 5 に、またあるときには 4 に、というように「切捨て」と「丸め」をランダムに適用することが考えられる。「長い目」で見ればこれは 4 と 5 との間に現れる平均的な数値として周波数成分化することになる。しかしそれでも周期的な誤差すなわちノイズの元は十分には取り除かれない。4 や 5 という値は本来の 4.8 にたいして常に 0.2 や -0.8 といった誤差を繰り返し生むわけである。
値 4.8 を処理する別の策としては、「五回に四回は 5 に丸め、残り一回を 4 に切り捨てる」というものがある。「長い目」で見ればこれは前述の処方の結果(4 と 5 の間の平均値)よりも本来の 4.8 にごく近しい数値の周波数化をもたらす。しかしこれでも問題の周期的な誤差・ノイズの元を解決し尽くしたことにはならない。5 に丸めた四回分の本来値、そして 4 に切り捨てた一回分の本来値、これらは依然として誤差であり、またそれは当策の五回周期という原理に従って繰り返すことになるわけである。
問題は、一定の処理が周期的に繰り返されてしまうことにある。ならば処理をランダム化すればいい、という解決案が最終的には出てくる。80% の比率で 5、20%の比率で 4、という構成を全体として保持しながら、元の 4.8 という数値が 4 あるいは 5 に変換されるところのパターンをランダム化すれば、誤差の周期化・周波数成分化は妨げられ、ノイズの発生は抑えられるわけである。
また、最終的な量子化における誤差( 4.8 が 5 になったのであれば -0.2 )を覚えておき、次以降の確率を調整する、という誤差を拡散させる手法もある。この手法には、全体的な再現性を上げるかわりに局所的な再現性が下がる、というトレードオフがある。
0 から 0.9 までの乱数(0.6、0.4、0.5、0.3、0.7 など)を交えて目的の値 4.8 を処理すれば、20%中は 4 (0 と 0.1 の場合)、80%中は 5、と量子化されながらも、どちらに切り捨てられ丸められるかは乱数によって無作為化される。そして、前節で述べられているように、非周期的なノイズは周期的なノイズよりもヒトの耳にたいして優しく、我々はこれを自然な歪みとして感受することになる。
ビットレートを減らす処理をするときは、ディザリングを施すべきである。米Apogee Electronics(英語版記事)が開発し、同社のDAコンバーターに搭載されていたUV22というディザ技術は音楽業界内では有名であり、
デジタル・オーディオ・ワークステーション向けに単体のプラグイン化され、デファクトスタンダード的な存在となっている。
RPDF は "Rectangular Probability Density Function"(方形確率密度関数)の略で、サイコロと同じ役目を果たす。任意の数が同等の無作為な確率ででる。
TPDF は "Triangular Probability Density Function" (三角形確率密度関数)の略で、2個のサイコロと同じ役目を果たす。数の合計の出現確率はそれぞれ異なり、以下のようになる:
1/1 = 2
1/2 2/1 = 3
1/3 2/2 3/1 = 4
1/4 2/3 3/2 4/1 = 5
1/5 2/4 3/3 4/2 5/1 = 6
1/6 2/5 3/4 4/3 5/2 6/1 = 7
2/6 3/5 4/4 5/3 6/2 = 8
3/6 4/5 5/4 6/3 = 9
4/6 5/5 6/4 = 10
5/6 6/5 = 11
6/6 = 12
この場合、7 が他の 2 から 12 よりも確率が高く、このような確率の分布を称して「三角形」と呼んでいる。
ガウシアンPDF は無限個のサイコロと等価である。確率の分布は釣鐘型を描き、これをガウス分布と呼ぶ。ガウシアンPDFによるディザは自然の大気雑音やテープヒスなどのノイズに最も近い。
色つきディザ(Colored Dither)はホワイトノイズとは異なるため、フィルター付きディザとも呼ばれる。オーディオ機器の帯域特性に合わせるためにエネルギーを下げるように、高い周波数ほど大きなエネルギーを持ったノイズを使用する。
ノイズシェーピングもディザと同様の手法であるが、ランダム化よりもオーディオストリームにおいて誤差拡散のリアルタイム処理に重点を置いたフィードバック型の処理である。
ディザリングは、コンピュータグラフィックスで使われる場合には、制限された色数でそれ以上の色調を表現する技法として使われる。ディザリングを施したデジタル画像では、パレットにない色を表現するために、存在する色のピクセルをばらつかせて配置する。ヒトの眼はそのような色の拡散配置を色の混合として知覚する。色数の少ないディザリングを施した画像は、粒状の微細な模様などで見分けが付くことが多い。
ディザリングは印刷における中間色調の表現技法によく似ている。
その性質上、ディザリングは画像に何らかのパターンを導入し、ヒトの眼からはそのパターンが判別できない程度の距離から画像を見るだろうという考え方に基づいている。しかし実際にはそうでないことも多く、パターンは見えることが多い。そのような場合、ブルーノイズのディザパターンが最も目立たない。ブルーノイズのディザリングパターンを生成するため当初は誤差拡散法が使われたが、人工的な見た目に陥ることなくブルーノイズのディザリングを実現する配列ディザリングなどの技法も考案されている。
画像の色数を減らすことは、見た目に多大な副作用をもたらす。元の画像が写真だった場合、色数は少なくとも数千、場合によっては数百万色にもなる。これを固定の色数から構成されるパレットで表現できるようにすると、ある程度の色に関する情報が失われる。
色数を減らした画像は、いくつかの要因により劣化する。その第一の要因は使用しているカラーパレットにある。例えば、元の画像(図1)を216色のWebセーフカラーに減色する場合を考える。元の画像の各ピクセルの色を単純に最も近い色にした場合、ディザリングは行われない(図2)。一般に、このような減色を施すと細部が失われて同色が平坦に連なる領域ができ、元の画像とはかなり印象が変わる。影になる部分や曲面は色の帯ができ、奇妙に見える。ディザリングを施すことにより、そのような人工的な見栄えを改善することができ、元の画像に近い結果を得ることができる(図3)。
固定されたカラーパレットを使用する際の問題として、必要な色がそのパレットにないことが多い点が挙げられる。同時に、元の画像では全く使わない色がパレットに含まれている。例えば、緑の系統の色を全く使わない画像では、パレット内の緑系統の色はほとんど使われない。そのような場合、画像に最適化されたカラーパレットを使用すると画像が改善される。最適化されたパレットの色は、元の画像で多く使われている色から選ばれる。最適化されたパレットを使って減色すると、その結果は元の画像により近くなる(図4)。
パレット内の色数も画質に影響する。例えばパレットが16色となった場合、画像の細部はさらに失われる(図5)。そのような場合でもディザリングを施すことによって画像の見栄えは改善される(図6)。
初期のビデオカードや携帯電話や低価格のデジタルカメラで使われている最近2020年3月の液晶ディスプレイでは、表示可能な色数が少ない。ディザリングの主要な応用の1つとして、制限のあるハードウェアでより多彩な色数の画像をなるべく正確に表示するということが挙げられる。例えば、256色しか同時に表示できないハードウェアで数百万色の写真画像を表示するといった場合にディザリングが使われるだろう。ディザリングを行わない場合、元の画像で使われている色は発色可能な256色のうち最も近い色で代替され、見た目が非常に悪くなる。
一部の液晶ディスプレイは、各ピクセルの色を高速に切り替えることで同様の効果を達成している。これをフレームレートコントロール (FRC) とも呼ぶ。それにより例えば、18ビットカラーの色深度しかないディスプレイで24ビットのトゥルーカラーを表示できる。
ハードウェアの色深度に制限のある場合のディザリングはWebブラウザなどのソフトウェアで一般に行われている。Webブラウザは画像を外部から持ってくるので、表示できないほど色数の多い画像があった場合にディザリングが必要となる。ディザリングされないようにしたい画像(図など)を256色しか表示できない機器でもディザリングされないようにするために、Webセーフカラーと呼ばれるカラーパレットが登場した。
15ビット(32,768色)や16ビット(65,536色)など、ディスプレイがフルカラーの写真を表示するのに十分な色数を使用可能であっても、スムーズに色の変化する大きな領域があると色の帯が目立つことがある。この場合、ディザリングによって「擬似フルカラー」を実現することで見栄えが大きく改善される。24ビットRGBのハードウェアであっても、ディザリングでより高い色深度をシミュレートすることでガンマ補正後の色相の喪失を最小限に抑えることができる。Adobe Photoshop などの高機能画像処理ソフトウェアでは、ディザリングで見た目を改善することがよく行われている。
ディザリングが使われる場面として、に制限がある場合もある。特に良く使われるGIF形式は、多くの画像エディタなどで256色かそれ以下に色数が制限されている。PNGなどの他の形式の画像でも、ファイルサイズを小さくするために色数を制限する場合がある。これらの画像では、その画像が使っている全色を含む固定カラーパレットがファイル形式に含まれている。そのような場合、グラフィックソフトウェアで色数を制限する際にディザリングを施すことになる。
ディザリングは印刷における網点技法に似ている。インクジェットプリンターは孤立したドットを印刷可能であり、そのために印刷分野でもディザリングがよく使われるようになってきている。そのため、ディザと網点は同義語として使われることもあり、特にデジタル印刷の分野でその傾向が強い。
典型的なデスクトップ型のインクジェットプリンターの色数は15色(シアン、マゼンタ、イエロー、ブラックの組み合わせ)で、ブラックのインクを混ぜると他の色が隠されてしまうことが多いため、実際の色数はもっと少ない。様々な色を再現するにはディザリングが必須である。暗い密に印刷された部分ではインクのドット同士がくっつくため、ディザリングが見えないことが多い。しかし、明るい部分では詳しく見るとディザリングが施されていることが見える。
ディザリングを行うよう設計されたアルゴリズムはいくつか存在する。1975年という早い時期に開発され、現在でも人気があるのがフロイド-スタインバーグ・ディザリングアルゴリズムである。このアルゴリズムは、誤差拡散処理を通して人工的な見た目を改善する。単純なディザリングアルゴリズムよりも元に近い画像を生成することができる。
ディザリング法には以下のようなものがある:
平均 (Average) ディザリング: 最も単純なディザリング法。固定のしきい値を設定し、最も近い色を使用する。ただし元の画像の詳細が失われやすい。
無作為 (Random) ディザリング: 各ピクセルに乱数的要素を導入し、電波が弱いときのテレビ画像のような画像を生成する。人工的パターンはできないが、ノイズが強く画像の詳細が失われやすい。版画のメゾチントの技法に似ている。
パターン (Patterning) ディザリング: 固定のパターンを使用。入力値に従って固定のパターンを出力に配置していく。最大の難点は入力の1ピクセルを複数ピクセルのパターンで表すため、出力画像のピクセル数が大きくなる点である。
配列 (Ordered) ディザリング: "dither matrix" というピクセル毎に交互に色が並ぶパターンを使用する。画像の各ピクセルについて、パターンの対応する位置の値をしきい値として使用する。隣接するピクセルは相互に影響を与えないので、アニメーションなどにも適している。パターンを変えれば、見た目も大幅に変わる。実装は容易だが任意のパレットで機能するように変更するのは容易ではない。
ハーフトーンディザリング: 印刷技術の中間色調の表現に類似した技法。オフセット印刷やレーザープリンターでよく使われる。これらはインクやトナーがドットの形状を保たず、隣接するドットが相互にくっついて網状になる性質があり、ハーフトーン技法が適している。
バイヤー (Bayer) マトリクス: 非常に特徴的な網掛けパターンを生成する。
ブルーノイズ向けに調整されたマトリクス(void-and-cluster法など)は誤差拡散法に近い見た目を生成する。
誤差拡散ディザリング: 量子化誤差を周辺のピクセルに拡散させるフィードバック処理を行う。
フロイド-スタインバーグ・ディザリング: 隣接するピクセルにのみ誤差を拡散させる。最もよく使われている。
Jarvis, Judice, and Ninke dithering: 隣接するピクセルだけでなく、さらにそれらに隣接するピクセルにも誤差を拡散させる。フロイド-スタインバーグ法よりも性能が悪い(関与するピクセル数が多いため)。
Stucki dithering: Jarvis を改良して若干高速化したもの。見た目はシャープになる。
Burkes dithering: Stucki を単純化して高速化したもの。Stucki ほどシャープではない。
誤差拡散ディザリング(続き)
Sierra dithering: Jarvis を改良して高速化したもの。Jarvis とほぼ同じ見た目になる。
Two-row Sierra: Sierra を高速化したもの。
Sierra Lite: さらに単純化、高速化したもの。
Atkinson dithering: ビル・アトキンソンが考案。Jarvis や Sierra と似ているが、高速である。誤差全体ではなく4分の3だけを拡散させる。画像の詳細をよく保持するが、非常に明るい部分や非常に暗い部分は詳細が失われやすい。
誘導ブリルアン散乱 (SBS) は光ファイバーシステムにおける伝送パワーを制限する非線形光学現象である。伝送パワーをその制限以上にする技法として、中心搬送周波数にディザリングを加えるという技法があり、通常レーザーのバイアス入力に変調を加える。