对两张图片进行矩阵运算会怎么样?

在学习《线性代数》的矩阵运算时,突然想到图片也可以算是一种矩阵,那么对图片进行矩阵的运算会出现什么样的效果呢?为了满足好奇,便用C#写了个对图片进行矩阵运算的程序。

矩阵加:

Bitmap C = new Bitmap(imgA.Width,imgA.Height);

            for (int i=0;i<imgA.Width; i++)
{
for(int j=0;j<imgA.Height;j++)
{
Color A = imgA.GetPixel(i, j), B = imgB.GetPixel(i, j);
int r = A.R + B.R;
int g = A.G + B.G;
int b = A.B + B.B;
Color colC = Color.FromArgb(r%256,g%256,b%256);
C.SetPixel(i, j, colC);
}
}
pictureBox3.Image = C;

这是两个图片经过矩阵加法运算后的结果,由于直接加会使RGB大于255,因此在运算后,我们对256进行取模运算,避免越界。

矩阵减:

Bitmap C = new Bitmap(imgA.Width, imgA.Height);
for (int i = 0; i < imgA.Width; i++)
{
for (int j = 0; j < imgA.Height; j++)
{
Color A = imgA.GetPixel(i, j), B = imgB.GetPixel(i, j);
int r = A.R - B.R;
int g = A.G - B.G;
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 < imgA.Width; i++)
{
for (int j = 0; j < imgB.Height; j++)
{
int r=0, g=0, b=0;
for(int k =0;k<Math.Min(imgA.Height,imgB.Width);k++)
{
Color A = imgA.GetPixel(i, k), B = imgB.GetPixel(k, j);
r += A.R * B.R;
g += A.G * B.G;
b += A.B * B.B; }
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的小图片,成功跑出来了,结果发现全是噪点,比随机还随机。。。

【C#】对两张图片进行矩阵运算会怎么样?的更多相关文章

  1. opencv_判断两张图片是否相同

    QQ:231469242 pip install opencv 如果找不到版本,去非官方下载opencv第三方包http://www.lfd.uci.edu/~gohlke/pythonlibs/ 下 ...

  2. HTML两张图片叠加问题的进一步修改

    要想两张图片叠加,只需在circle添加一个Position:absolute就OK了 以上几步,很多大侠前辈都已经说过,相信不用再啰嗦,我想说的是一种扩展,将示例放到右边,可能因为我悟性低,研究了一 ...

  3. Java 比较两张图片的相似度

    import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; /** * 比较两张图片 ...

  4. iOS把两张图片合成一张图片

    0x00 步骤 先读取两张图片把创建出CGImageRef 创建上下文画布 把图片依次画在画布指定位置上 从上下文中获得合并后的图片 关闭上下文 释放内存 0x01 代码实现 - (void)comp ...

  5. OpenCV两张图片的合并

    转载请注明出处..! http://blog.csdn.net/zhonghuan1992 OpenCV两张图片的合并 原理: 两张图片合并,想想图片是用一个个像素点来存储.每一个像素点有他的值. 那 ...

  6. 用python对比两张图片的不同

    from PIL import Image from PIL import ImageChops def compare_images(path_one, path_two, diff_save_lo ...

  7. java实现把两张图片合并(Graphics2D)

    package com.yin.text; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.i ...

  8. python实战===用python对比两张图片的不同

    from PIL import Image from PIL import ImageChops def compare_images(path_one, path_two, diff_save_lo ...

  9. OpenCV入门:(四:混合两张图片)

    1. 原理 对两张图片使用如下公式可以得到两张图片的混合图片, 其中f0(x),f1(x)分别是图片1和图片2同一位置的像素点. 2. OpenCV中的AddWeight函数 函数和参数说明: ) s ...

随机推荐

  1. VsCode/Pycharm配合python env 使用

    前言 用惯了vscode,这几天试了一下pycharm,还是回来了. pycharm一个好处就是python env 环境支持的比较好, vscode虽然也支持但是要改一些东西 env的使用查看我的上 ...

  2. PAT天梯赛练习 L3-003 社交集群 (30分) DFS搜索

    题目分析: 一共有N个编号为1~1000的人,以及一共有编号为1~1000种不同的兴趣,在题目给出1~N编号的人员每个人喜欢的兴趣的id后,要求统计出不同的人员集合的个数以及每个人员几个的人数从大到小 ...

  3. Spring框架之websocket源码完全解析

    Spring框架之websocket源码完全解析 Spring框架从4.0版开始支持WebSocket,先简单介绍WebSocket协议(详细介绍参见"WebSocket协议中文版" ...

  4. 【Web】CSS中的浮动float

    CSS中的float 文章目录 CSS中的float 1.float浮动属性 2.float文字环绕图片 3.float浮动的真正原因以及副作用分析 4.清除浮动的四种解决方法 5.实际应用 导航效果 ...

  5. 细数JS中实用且强大的操作符&运算符

    目录 1,前言 2,代码+应用 2.1,短路运算符 || 2.2,短路运算符 && 2.3,零合并操作符 ?? 2.4,可选链操作符 ?. 2.5,位运算符 & 和 | 2.6 ...

  6. Linux Centos7之由Python2升级到Python3教程

    1.先查看当前系统Python版本,默认都是Python2.7,命令如下: [root@localhost gau]# python -V Python 2.7.5 2.安装Python3,安装方法很 ...

  7. 转 Fiddler5 发送HTTP请求

    Fiddler5 发送HTTP请求  文章转自:https://www.cnblogs.com/zhengna/p/10879573.html 1.Fiddler Composer发送HTTP请求 C ...

  8. codeup 1934 查找元素

    题目描述: 输入一个数n,然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1. 输入: 测试数据有多组,输入n(1<=n<=200), ...

  9. VMware中安装Ubuntu后,安装VMwareTools提示“Not enough free space to extract VMwareTools-10.3.10-13959562.tar.gz”的解决办法

    将加载后的Vmware Tools中的*.tar.gz文件复制到桌面后提取,否则会报错:

  10. 网易新闻App架构重构实践:DDD正走向流行

    网易新闻App架构重构实践:DDD正走向流行 https://mp.weixin.qq.com/s/FdwrT_xn3CQqpWoRVBttvQ 小智 InfoQ 2020-05-14 作者 | 小智 ...