ミッチェル・ネトラバリ・フィルターについて
ミッチェル・ネトラバリ・フィルター(Mitchell-Netravali フィルター)は、コンピューターグラフィックスにおいて広く使用される再構成フィルターの一つです。このフィルターは主にラスタ画像の拡大や縮小、さらにアンチエイリアス処理に利用されることが多いです。3次スプラインに属しており、プログラムによってはバイキュービック・フィルターという名称でも呼ばれることがあります。
定義
このフィルターは、低品質な再構成
アーティファクトを回避するために設計されており、フィールダーにおいては主に二つのパラメーター、BおよびCが設定されています。これらの値はフィルターの特性に大きな影響を与え、不連続曲線などの不適切なフィルターを排除する役割を果たします。
具体的な数式で表すと、ミッチェル・ネトラバリ・フィルターは次のように定義されます:
$$
k(x) = \frac{1}{6} \begin{cases} (12-9B-6C)|x|^{3}+(-18+12B+6C)|x|^{2}+(6-2B) & |x|<1 \ (-B-6C)|x|^{3}+(6B+30C)|x|^{2}+(-12B-48C)|x|+(8B+24C) & 1 \ \leq |x| < 2 \ 0 & \text{その他} \end{cases}$$
この数式により、特定の範囲に基づいてフィルターの出力が決定される仕組みになっています。
2次元フィルターへの応用
さらに、セパレーション技術を用いることで、2次元版のミッチェル・ネトラバリ・フィルターを構築することも可能です。具体的には、1次元フィルターによる補間を縦横で2回適用することで、二次元画像処理が実現します。1次元フィルターは周辺の4つのピクセルを利用して処理が行われます。この際、ピクセルの値を次のように表現し、フィルターの効果を数式で計算します。
$$ P(d) = \left((-\frac{1}{6}B-C)P_0 + (-\frac{3}{2}B-C+2)P_1 + (\frac{3}{2}B+C-2)P_2 + (\frac{1}{6}B+C)P_3\right)d^3 + \ldots $$
このように、フィルターに関連するパラメータを調整することで異なる
アーティファクトを生み出すことができます。
特殊な場合
BおよびCの定義の結果として得られるフィルターは、さまざまな特性を持つため、開発者は特定の値を推奨しています。例えば、
$$B + 2C = 1$$
の条件を満たすパラメーターの設定が特に推奨されており、B=B=1/3に設定すると良好な結果が得られるとされています。この条件を満たすことで、既知の3次スプラインを再現する場合もあります。
- - B=1, C=0の時は3次B-スプライン、
- - B=0ではCardinal Spline、
- - B=0, C=0.5にした場合はCatmull-Rom splineとなるなど、設定によって結果が異なることが特徴です。
参考文献
このフィルターに関連する研究は、Don MitchellとArun Netravaliによる「Reconstruction Filters in Computer Graphics(ACM SIGGRAPH 1988)」などがあります。また、Matt PharrとGreg Humphreysの「Physically Based Rendering」もフィルターの実装について記載しています。
フィルターの理解を深めるためには、過去の研究や実践的な情報を基にした文献が非常に参考になります。