在学习《线性代数》的矩阵运算时,突然想到图片也可以算是一种矩阵,那么对图片进行矩阵的运算会出现什么样的疗效呢?为了满足好奇,便用C#写了个对图片进行矩阵运算的程序。
矩阵加:
Bitmap C = new Bitmap(imgA.Width,imgA.Height);
for (int i=0;i
这是两个图片经过矩阵乘法运算后的结果,由于直接加会使RGB小于255,因此在运算后,我们对256进行取模运算,避免越界。
矩阵减:
Bitmap C = new Bitmap(imgA.Width, imgA.Height);
for (int i = 0; i
int b = A.B - B.B;
Color colC = Color.FromArgb(Math.Abs(r) % 256, Math.Abs(g) % 256, Math.Abs(b) % 256);
C.SetPixel(i, j, colC);
}
}
pictureBox3.Image = C;
由于加法运算时,可能使图片RGB大于0,因此我们对运算后的结果进行Abs()运算,取其绝对值。
矩阵乘
MessageBox.Show((imgA.Width * imgB.Height * Math.Min(imgA.Height, imgB.Width)).ToString());
Bitmap C = new Bitmap(imgA.Width, imgB.Height);
for (int i = 0; i
for(int k =0;k
Color colC = Color.FromArgb(r % 256, g % 256, b % 256);
//Console.WriteLine(i.ToString()+","+j.ToString()+":"+colC.ToString());
C.SetPixel(i, j, colC);
}
}
pictureBox3.Image = C;
由于复杂度为O(N^3),正常图片没跑出来,因此用PS新建了两张50*50的小图片,成功跑出来了,结果发觉全是杂讯,比随机还随机。。。