获取每个8x8块的代码形成一个二维数组C#

是否有任何代码从C#中的2d数组中获取8x8块? 举一个例子,如果我们有一个1920x1080的图像,需要将该2d数组分割成8x8块并处理每一个。 (用于FDCT和量化)。我正在做JPEG压缩的图像处理项目。


我做了一个工作样本,

List<Image> splitImages(int blockX, int blockY, Image img)
{
    List<Image> res = new List<Image>();
    for (int i = 0; i < blockX; i++)
    {
        for (int j = 0; j < blockY; j++)
        {
            Bitmap bmp = new Bitmap(img.Width / blockX, img.Height / blockY);
            Graphics grp = Graphics.FromImage(bmp);
            grp.DrawImage(img, new Rectangle(0, 0, bmp.Width, bmp.Height), new Rectangle(i * bmp.Width, j * bmp.Height, bmp.Width, bmp.Height), GraphicsUnit.Pixel);
            res.Add(bmp);
        }
    }
    return res;
}

private void testButton_Click_1(object sender, EventArgs e)
{
    // Test for 4x4 Blocks
    List<Image> imgs = splitImages(4, 4, pictureBox1.Image);
    pictureBox2.Image = imgs[0];
    pictureBox3.Image = imgs[1];
    pictureBox4.Image = imgs[2];
    pictureBox5.Image = imgs[3];
}

4x4块将提供16个图像。 但我已经测试了4个图片框,并从一个图片框中获取图片。

链接地址: http://www.djcxy.com/p/62889.html

上一篇: A code to obtain each 8x8 block form a 2d array C#

下一篇: why DCT transform is preferred over other transforms in video/image compression