回答:
本質的に、画像は点サンプルのグループです(ピクセルは小さな正方形ではありません3を読んでください)。画像を変換またはスケーリングする場合は、画像をリサンプリングする必要があります。したがって、理論的には、ポイントサンプルを取得して連続関数に変換します。次に、その連続関数をサンプリングして信号を再構築します。したがって、ここには2つまたは3つの異なるフェーズがあります。
これらの手順のいずれにも固定形式はありません。実際には、最適化されたときにステップがあることを認識することは不可能です。変換は実際には単純である必要はなく、形状をらせん状にマッピングすることなどが考えられます。
画像1:さまざまなフィルターによって再構成された1次元信号。
実際には、信号処理分野での信号再構成については、かなりの知識が必要です。これらのフィルターを設計して適切なフィルターを選択することは、それ自体がアートフォームです。ただし、本質的に、フィルターの選択は、ぼかしとリンギングのトレードオフです。もちろん、このアルゴリズムには、実装に必要な命令の数、必要なメモリの速度など、他の品質もあります。これは、リアルタイムアプリケーションや組み込みアプリケーションでは非常に重要です。
画像2:プロセス全体の概要。
画像を任意の解像度から他の任意の解像度に拡大縮小するために利用できる、多数のアップスケーリングおよびダウンスケーリングアルゴリズムがあります。各アルゴリズムは、通常、効率、滑らかさ、鮮明度の間のトレードオフを伴い、異なるアルゴリズムの各トレードオフの程度は異なります。
そのようなアルゴリズムとそのようなアルゴリズムの例については、このWikipediaの記事をチェックしてください。
最も一般的に知られている(そして使用されている)アルゴリズムは、バイキュービック補間アルゴリズムです。長方形グリッド上の2Dポイント間を補間します。3 次スプライン(または3次補間)を使用して、最初に1つの次元で補間(補間された行/列を検出)し、次に、補間された行/列を他の次元で補間します。
バイリニア補間はバイキュービック補間に似ていますが、前者は線形関数を使用して補間し、2つの値の間でのみ補間でき、後者はキュービック関数を使用して4つの値の間で補間できる点が異なります。
バイキュービック補間の簡単な関数は次のとおりです。
f(f(p00, p01, p02, p03, y),
f(p10, p11, p12, p13, y),
f(p20, p21, p22, p23, y),
f(p30, p31, p32, p33, y),
x)
ここで、(x、y)は補間された位置であり、p [] []は4 * 4グリッドを表す2d配列です。
詳細とサンプルコードについては、このリンクを確認してください。
与えられた他の答えは正しいですが、それらがあなたの質問に完全に答えているかどうかはわかりません。黒いバーが表示されないようにするには、宛先がソースと同じ形状(またはアスペクト比)でない場合に2つのオプションがあります。
別のオプションがありますが、それは基準に適合しません。均一にスケーリングしますが、1次元が宛先と同じ大きさになるまでのみです。この場合、水平方向と垂直方向の両方に1.40625でスケーリングして、1440x1080の結果を取得します。これは通常「スケールに合わせる」と呼ばれます。
これらのオプションのいずれについても、ニーズを満たすスケーリングアルゴリズムを使用できます。