-2

サイズが20x30から10x15の8ビットビットマップ配列をダウンサンプリングするにはどうすればよいですか?

original_bitmap_array[20][30]downsample_array[10][15]

これは元の配列であり10文字「A」の表現です。

00000000111100000000
00000001111100000000
00000001111100000000
00000001111110000000
00000011100110000000
00000011000110000000
00000011000111000000
00000011000011000000
00000111000011000000
00000110000011000000
00000110000011000000
00000110000011000000
00001110000001100000
00001110000001100000
00001100000001100000
00001100000000110000
00001100000000110000
00011111111111110000
00011111111111111000
00011111111111111000
00011111111111111000
00111111111111111000
00110000000000011000
00110000000000011100
01110000000000011100
01110000000000001100
01110000000000001110
01100000000000001110
11100000000000000110
11100000000000000111 

今、誰かが文字「A」を失うことなく、10x15配列にダウンサンプリングする方法を教えてもらえますか?

4

2 に答える 2

2

それはすべて、画像をどのようにサンプリングするかによって異なります。この例の簡単なサンプリングの 1 つは、20x30 から 1 秒おきのピクセルを取得し、10x15 に入れることです。

これを拡張して、2x2 ピクセルの断面でサンプリングし、バイリニア補間を使用することをお勧めします。

画像をどのようにサンプリングしたいのか正確にはわからないので、これについて詳しく説明するのは難しいです.

アップデート:

org_img[20][30]; --monochrome values
sampled_img[10][15];

for(int i=0; i < 10; i++)
{
    for(int j=0; j < 15; j++)
    {
        int average = org_img[2*i][2*j] + org_img[2*i+1][2*j]+ org_img[2*i][2*j+1] + org_img[2*i+1][2*j+1];
        average = average>>2; --integer division by 4.
        sampled_img[i][j] = average;
    }
}
于 2013-02-01T14:24:24.300 に答える
1

Matrix.Scaleこれには関数を使用できます。

これが例です

于 2013-02-01T14:08:12.967 に答える