获取每个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