アップスケーリングの技術的な実装


15

それで、写真をアップスケールする方法としてバイキュービックとフラクタルがリストされているのを見ました。これらがどのように機能するのか、なぜ/いつが他よりも優れているのか、技術的な詳細は何ですか?


アップサイズ:バイリニア; ダウンサイズ:lanczos 3.

回答:


15

まず、画像の拡大では、ピクセルを一定量だけ離し、以前に隣接したピクセル間のスペースを同様のコンテンツで埋めます。これは、基本的なピクセル作成(バイキュービックフィルタリング)を介して、または画像をベクトル表現に変換したり、ベクトル空間でスケーリングするなどのより複雑な手段を介して実行できます。

バイキュービックフィルタリングは、バイリニアフィルタリングとともに、比較的単純な関数曲線を使用して、画像を拡大するときに隣接するピクセルの色をブレンドします。Bilinearは線形関数曲線を使用し、Bicubicは3次スプライン関数曲線(cspline)を使用します。通常、バイキュービックフィルターはより滑らかな結果を生成しますが、両方のアルゴリズムは最終的に関数曲線を介して隣接ピクセルの値をブレンドして、画像を拡大するときに「ギャップを埋めます」。元のピクセル間のスペースのみが実際に生成されるという点で、バイキュービックスケーリングは一般に無損失であることに注意する必要があります。特定の実装のニュアンスに応じて、元のピクセルはわずかに変化する場合がありますが、ほとんどの場合、元のデータは保持され、新しいデータは画像の拡大に合わせて塗りつぶされます。

画像のスケーリングに対するフラクタルアプローチは、まったく異なるアプローチを取ります。より複雑なアルゴリズムを使用して、画像の内容を分析し、エッジと「オブジェクト」を識別し、最終的に画像をフラクタルベクトル形式に変換します。画像がベクトル化されると、ベクトル空間で「ロスレス」にスケーリングされ、より大きなサイズで再レンダリングされます。Genuine Fractalsなどのフラクタルアルゴリズムは、滑らかで鋭いエッジを維持しながら、フラクタルベクトルアルゴリズムを使用して画像をスケーリングします。このアプローチは、画像に最初にシャープで認識可能なエッジが重要な要素としてあり、それらのエッジの鮮明さを維持することが重要な場合に役立ちます。

さらに、Genuine Fractalsは、「自己類似性」の概念によって非エッジの詳細を維持し、画像コンテンツを本質的にフラクタルと見なして詳細を保持し、フラクタルアルゴリズムから非エッジコンテンツを再レンダリングします。これには、単に隣接するピクセルから情報を作成するのではなく、多くのピクセルで構成されるパターンから新しいコンテンツを生成できるという利点があります。このアプローチは、約200%のアップスケーリング時に優れた機能を発揮しますが、スケーリングの基本的なベクトルの性質は、より大きなサイズにスケーリングする場合により明確になります。また、このスケーリング方法はロスレスではなく、アルゴリズムがフラクタルを見つけようとするため、一部の細かいピクセルの詳細が破棄される場合があることに注意してください複製できるパターン。極端なアップスケーリングにより、目に見えるパターンの複製が発生する可能性があり、すべての画像サイズで滑らかで鋭いエッジを維持するために、細かいエッジの詳細が消去される場合があります。

BenVistaは、S-Splineと呼ばれる独自のアルゴリズムも提供しています。このアルゴリズムの詳細についてはほとんど情報がありませんが、別の関数曲線ベースのアルゴリズムのようです。PhotoZoom ProのS-Spline Maxスケーリングは、Genuine Fractalsのように、エッジの定義を維持する素晴らしい仕事をします。このアルゴリズムは約200%程度にスケーリングすることもできますが、このアルゴリズムをさらに押すと、エッジ以外の細部の劣化とスムージングが目に見えるようになります。スケーリングアルゴリズムの一般的な妥協点は、エッジ定義を最大限にするか、詳細を最大限に保持することです。また、Genuine FractalsやBenVista PhotoZoom Proを含むほとんどのサードパーティスケーリングアルゴリズムは、デフォルトで最終画像にアンシャープマスクを自動的に適用することにも注意してください。

バイキュービックを繰り返し使用することができます。バイキュービックスケーリングの基本的な要点は、スケールを大きくすると、より多くの情報が作成されることです。3〜5%の増分でバイキュービックスケーリングを実行することにより、はるかに元のまたはほぼ元の詳細を保持し、各ステップではるかに少ない画像を作成します。反復(または段階的)バイキュービックスケーリングの最終結果は、細かいディテールを失うことなく、かなり大きなエッジ定義を維持できます。ただし、現時点では、これを行うプレハブアプリケーションは存在しないため、スケーリングへの個人投資ははるかに大きくなります。前の幅または高さに倍率を掛けて、その数を画像編集プログラムにプラグインすることにより、各ステップで画像の新しい幅と高さを手動で計算する必要があります。sバイキュービックスケーリングツール。最終結果は素晴らしく、シャープでないマスキングのある二乗画像のように鮮明になります。目に見える損害を与えずに画像を拡大縮小できる限度は、他のアルゴリズムよりもはるかに大きく、少なくとも400%、場合によってはそれ以上です。


うーん。それは.... GIMPスクリプト、またはPhotoshopのアクションとしてその反復バイキュービックスケーリングアップスクリプトに非常に簡単になるだろう
mattdm

フォトショップアクションとして試しましたが、情報を計算する必要があるため成功しませんでした。私はPhotoshopであまりスクリプトを実行しないので、数学関数やスクリプトをサポートしているかどうかはわかりません。
jrista

2
+1うわー、素晴らしい詳細な答え。あなたの答えを読むまで、これは退屈な質問だと思いました。
fmark

Paint.netで複数のサイズ変更をテストしましたが、結果がこの回答に記載されているとおりではなく、複数回サイズ変更された画像は同じ画像が1回だけリサンプリングされたため、非常にぼやけていました。ほぼ同じピクセル寸法に達するまで、毎回同じ画像を200%にリサイズし、104%を繰り返して試してみました。
ジャハジエル

1
あなたは、メソッドの恩恵を受けていることを画像上で行わ反復バイキュービックの例をしたい場合は、ここで私の分析を見て:実証的研究:エクストリームデジタルアップスケーリング
jrista
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.