2012-01-05 15 views
2

私は2次元配列を持っています。単色画像の解釈です。具体的な既知のサイズにリサイズしたいと思います。品質は必須ではありません。 2倍または4倍のサイズにサイズを変更する必要がある場合は、たとえば、最近隣の補間を使用するだけで、たとえば1つではなく4つのピクセルを配置しても問題ありません。 基本的に、イメージをx1.5に補間する必要がある場合は、サイズx3を大きくしてx2を小さくします。私は正しい? しかし、たとえば、画像を3倍のサイズに拡大する必要がある場合はどうすればよいですか? 補間された配列のピクセルは、どのように配置する必要がありますか? 他のサイトへの情報、コード、リンクを投稿するとよいでしょう。基本補間、アップスケールとダウンスケーリング

答えて

4

トリックは逆の方法を考えています。ソースイメージのピクセルをスケーリングされたイメージに配置しようとしないで、スケーリングされたイメージに配置する必要があるソースイメージのピクセルを探します。

プログラムが原因でオーバーラン配列でクラッシュしないように、このコードは、右下の画像をクランプデモンストレーションの目的のために
float scaleFactor = 3.0f; 

for (int y=0; y < scaledImageHeight; y++) 
    for (int x=0; x < scaledImageWidth; x++) { 
    int sourceImageX = (int)std::max(x * 1.0f/scaleFactor, (float)(sourceImageWidth - 1)); 
    int sourceImageY = (int)std::max(y * 1.0f/scaleFactor, (float)(sourceImageHeight - 1)); 
    scaledImage[y * scaledImageWidth + x] = sourceImage[sourceImageY * sourceImageWidth + sourceImageX]; 
    } 

は(それが何のstdです:::

それはそれのようになります。最大はのためです)。

+1

ありがとう、私はこのコードを理解しようとします。すべてが大丈夫になることを願っています。 – user1131662