11

このアルゴリズムは長い間頭に浮かびましたが、どこにも記述されていません。とてもシンプルなので、考えたのは私だけではありません。仕組みは次のとおりです。

あなたは画像から始めます。言う、7x7px:

アルゴリズム1

たとえば、5x5pxにリサンプリングする必要があります。

アルゴリズム2

したがって、あなたがすることは、それぞれの新しい正方形の平均色を取ることです:

アルゴリズム3

これは最近傍ではありません。これは、ソースピクセルをオーバーレイする部分的なピクセルではなく、1つのピクセルの色を使用するためです。また、バイリニア、バイキュービック、ランツォ、またはその他の補間ではありません。

それで-それは何ですか?これは「数学的に完全な」リサンプリングアルゴリズムである必要があるように直感的に思えますが、「数学的に完全」とは何かの定義がないため、それを証明または反証することはできません。

最後になりましたが、「数学的に完璧」は必ずしも「見栄えが良い」とは限らないので、「品質」の点で他の主流の画像リサンプリングアルゴリズム(バイキュービック、ランツォ)とどのように比較されるのでしょうか。もちろん、これは主観的な用語なので、このアルゴリズムと他のアルゴリズムとの間に大きな違いがあり、ほとんどの人が同意するかどうか、私は本当に興味があります。

PS私がすでにそれについて話すことができるいくつかのこと-ここに示されているように、それはピクセルアートにとって「見栄えが良い」とは言えません。そのための特別なアルゴリズムがあります(2xSAIなど)。また、写真を拡大するのには最適ではありません。補間が勝ちます。しかし、写真を縮小するために...?

更新1:うーん、スーパーサンプリングについて知りました。これは、サンプルのグリッドタイプの配置で、サンプルの数がソース画像とターゲット画像の解像度に合わせて最適化されている、その変形のように見えます。

4

5 に答える 5

3

まず、あなたのアルゴリズムの正式な名前はわかりません。Paint Shop Proは早い段階で「バイリニア」と呼んでいましたが、アルゴリズムがバイリニアの従来の定義と一致しないことが指摘されたため、バージョン8では「加重平均」に名前を変更する必要がありました。

ほとんどのサイズ変更アルゴリズムは、X方向とY方向の2つの独立したパスで適用できます。これにより、効率が向上するだけでなく、さまざまなアルゴリズムの説明と推論がはるかに簡単になります。この時点から、1次元で作業し、2Dに外挿できると仮定します。

入力は7つのピクセルで構成され、0、1、2、3、4、5、6の座標を指定します。このコンテキストでは、ピクセルは小さな正方形 ではなく、単一の点であることに注意してください。出力を作成するには、ポイント0.2、1.6、3.0、4.4、5.8からの補間値が必要になります。なぜ0.0、1.5、3.0、4.5、6.0ではないのですか?入力と出力のサイズを2倍の14x14と10x10にするとします。座標は、0.0、1.44、2.89、4.33、5.78、7.22、8.67、10.11、11.56、13.0になります。2番目のピクセルから開始すると、結果が異なり、それは受け入れられません。すべてのポイントは7/5離れている必要があり、座標は0.2、1.6、3.0、4.4、5.8、7.2、8.6、10.0、11.4、12.8になります。

フィルタとして表現された場合の一般的なサイズ変更アルゴリズムを比較して、それらが実際のアルゴリズムとどのように比較されるかを見てみましょう。

最近傍フィルター

一般的な形式のこの最初の例は、ボックスまたは平均化フィルターと呼ばれます。しかし、ボックスフィルターの幅が正確に1.0の場合、魔法のようなことが起こります。入力から1つのピクセルがボックス内に収まり、1.0の重みが与えられ、入力の他のすべてのピクセルに0.0の重みが与えられます。 。これにより、最近傍アルゴリズムと同等になります。

バイリニアフィルター

2番目の例は、一般的にテントフィルターと呼ばれます。幅が正確に2.0の場合も、特別なものになり、線形補間になります。2Dで適用されると、バイリニアと呼ばれます。

バイキュービックフィルター

3番目の例はキュービックフィルターで、2Dで適用するとバイキュービックと呼ばれます。この式にはさまざまなバリエーションがあります。この例では、ミッチェルとネトラバリによって提案されたものを使用しています。

ガウスフィルター

ガウスフィルターは、アプリケーションのサイズ変更ではあまり使用されませんが、比較のためにここに追加しました。

加重平均フィルター

最後に、あなたのアルゴリズムに到達します。これは、平均化とバイリニアの組み合わせで、上部がフラットなテントです。

于 2012-09-27T02:54:55.560 に答える
3

あなたが述べたアルゴリズムは面積平均アルゴリズムと呼ばれ、画像の縮小にはめったに適用されないアルゴリズムです。

これのより単純な変形は、コンピューター ゲームでレンダリングされた画像を滑らかにするためのアンチエイリアシング技術として使用されます。

この手法のアルゴリズムはスーパーサンプリングと呼ばれます

ここに画像の説明を入力

指摘してくれた@Guffaのおかげで、サンプルポイントを取り、特定の色を見逃すか、最も支配的ではないにもかかわらず、ある色を別の色よりも多く選択する可能性があるため、上記のアルゴリズムを単純化したものです。
上記のアルゴリズムは、スーパーサンプリング アルゴリズムの無限ポイント サンプリングに相当します。

更新: Javaでさえあなたのアルゴリズムを高く評価していることに気付きました:)
AreaAveragingScaleFilter

于 2012-09-21T08:32:52.473 に答える
0

あなたの説明は、おそらくそれがデータ構造とデータ型であるアルゴリズムを思い出させません。kd-treeまたはquadtreeを思い出させます。kd-treeまたはquadtreeは、最近傍の問題を解決するのに役立ちます。ただし、グリッドの数学関数が必要な場合は、空間充填曲線、特にz階数モートン曲線を確認することもできます。これは2の累乗でうまく機能し、2次元の複雑さを軽減します。関数はf(x、y)=(f(x)、f(y))です。

于 2012-09-21T09:05:13.420 に答える
-2

また、バイリニアではありません

はい、実際にそうです。バイリニア リサンプリングは、2 次元での単なる線形補間です。

ピクセルの表面の平均色を取得すると説明していますが、周囲のピクセルからの補間は、同じ値を計算するためのはるかに簡単な方法です。

内挿は一度に 1 次元ずつ行われるため、重なり合う領域ではなく、重なり合う辺を計算するだけで済みます。これは非常に簡単です。

于 2012-09-21T08:29:25.667 に答える