是否有任何代码可以从 C# 中的二维数组中获取 8x8 块?例如,如果我们有一个 1920x1080 的图像,则需要将该二维数组拆分为 8x8 块并处理每个块。(用于 FDCT 和量化)。我正在做关于 JPEG 压缩的图像处理项目。
问问题
1241 次
1 回答
1
我制作了一个工作样本,
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 个图片框进行了测试,并从一个图片框中拍摄了一张图片。
于 2013-10-05T13:56:37.057 回答