矩阵 计算机应用,《计算机视觉算法:基于OpenCV的计算机应用开发》 —3.3 元素级矩阵操作...

3.3 元素级矩阵操作

基于元素的(元素级)矩阵操作是计算机视觉中的一类数学函数和算法,它处理矩阵的各个元素,或者说,图像中的每个像素。注意基于元素的操作可以并行化,因此矩阵元素的处理顺序不重要。这个特点是本节函数和算法与本章的后续小节中的函数和算法的重要区别。

3.3.1 基本操作

OpenCV提供了所有必要的函数和重载操作符来进行两个矩阵之间或矩阵和标量之间的加减乘除操作。

3.3.1.1 加法操作

函数add和运算符+可用于两个矩阵间元素相加或一个矩阵的元素与一个标量相加,如下例所示:

339e313e3025571f99ccd8d514905f24.png

可以使用以下代码替换前面代码中的最后一行:

8d82156260437c25d1f26328b2fe7f7b.png

下图显示了两个图像相加后的结果:

3c995eb832be8ca830a5d79657014b66.png

如果你想给Mat对象的每个元素都加上一个标量值,可以用类似如下代码:

2574245798cd5040ea024c77de1f615c.png

如果在灰度图像上执行上述代码,结果将比源图像有更高的亮度。请注意,如果图像有三个通道,则必须使用包含三个元素的向量而不是单个值。例如,为了使RGB图像更亮,你可以使用如下代码:

11c6f5bf750f5962d80c7b6ac211366d.png

下图展示了上述代码执行之后的效果,处理后的图像亮度比源图像提高了:

c1bd93a00a7362a4aa99f23274d419ad.png

在前面的示例代码中,仅通过在每个像素上增加一个数值即可获得更亮的图像。

3.3.1.2 加权加法

除了简单将两个图像相加,你还可以使用加权加法,加权加法会对每个图像增加权重之后再相加。这相当于对加法的每个参与者分别设置不透明度级别。要进行加权加法,你可以使用addWeighted函数:

84a7e935d794766961835ed97f71d44a.png

如果使用此代码来处理上一节中的示例图片,结果将类似于下图:

b275028d1a49b9018f842e247efbfb76.png

透明文本类似于通常在照片编辑程序使用的水印。你注意到代码中对alpha、beta和gamma值的注释了吗?显然,如果beta值为1.0则上面的例子就跟普通的图像叠加函数完全相同,此时叠加文本没有透明度。

3.3.1.3 减法操作

与两个Mat对象叠加类似,你也可以使用substract函数或-运算符从一个图像的所有元素中减去另一个图像的所有元素。请看下例:

19a67f2dcf873aa81e34834eac7e5b00.png

上面代码中的最后一行也可以替换为:

a023df4df54b4f67a364249f894a605d.png

如果我们使用前面示例中的图像,则减法操作的结果如下:

4afb64220aee6cfe6f4cac6541dfa0bd.png

从源图像中减去较高像素值(较亮像素)会生成深色的叠加文本。另外,与加法不同,减法运算结果与其操作数的顺序相关。尝试交换操作数,自己看看会发生什么。

就像图像加法一样,也可以让图像的所有像素减去一个常数。你可以猜到,从所有像素中减去常量值将生成更暗的图像(取决于该值的大小),这与加法运算相反。下面展示了通过简单的减法操作使图像变得更暗的例子:

8486adf657f879292e92d6cac4611d76.png

如果源图像是三通道RGB图像,则需要使用向量作为第二个操作数:

0d3d8244b33aeea8b34cf07476f8f4d8.png

3.3.1.4 乘法和除法操作

与加法和减法类似,你还可以将Mat对象的所有元素与另一个Mat对象的所有元素相乘或相除。同样,两个操作都可以使用矩阵和标量。乘法可以使用OpenCV的multiply函数(类似于Mat :: mul函数),而除法可以使用divide函数。

见下例:

95d8fcbd5474ee42a609967b744454f3.png

前面代码中的scale是一个附加参数,可以传给multiply和divide函数来缩放结果中Mat对象的所有元素。你还可以在矩阵乘法或除法中使用标量,如下示例所示:

b905e449f901717d7e576f74e21fbea7.png

显然,前面的代码将生成两个图像,一个是源图像亮度的5倍(变亮),一个是源图像亮度的1/5(变暗)。这里要注意的一点是,与加法和减法不同,乘除法得到的图像不会均匀地变亮或变暗,你应该会注意到较亮的区域变得更亮,反之亦然。其原因显然是由于乘法和除法运算的效果与加减法不同,经过乘除法操作后,较亮像素的值上升或下降要快得多。有趣的是,在大多数照片编辑应用程序中,就是使用这个技术来使图像的明亮区域变亮或变暗的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/556711.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微服务系列之ZooKeeper注册中心和Nacos注册中心Nacos和Zookeeper对比

一、ZooKeeper注册中心 Zookeeper 是 Apache Hadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为 Dubbo 服务的注册中心,工业强度较高,可用于生产环境,推荐使用。 流程说明: 服务提…

2018美国大学计算机科学,美国大学计算机2018最新排名

近些年,除了商科之外,被中国留学生追捧的就是计算机专业,据统计显示,计算机科学是就业市场需求最多的专业之一。美国的计算机技术在世界一直位居前列,因此,很多留学生前往美国深造计算机科学专业&#xff0…

计算机知识探索怎么写,计算机基础知识及探索.doc

PAGEPAGE 23HYPERLINK "/ASPX/602009818/JournalContent/1325923866.aspx"计算机基础知识参考试题及答案解析一、单选题1.1946年诞生的世界上公认的第一台电子计算机是( )。A)UNIVAC-I B)EDVAC C)ENIAC D)IBM650【答案】C)【解析】1946年2月15…

springboot配置跨mapper.xml的全局变量

springboot配置跨mapper.xml的全局变量 有这样的需求,mybatis框架的mapper.xml,即映射文件里,如果需要配置一个全局变量,然后,在所有的mapper.xml里都能拿到使用。 这需求也不苛刻吧~ 后来查了下,发现对…

计算机公共基础知识论文,计算机等级考试二级公共基础知识汇总.doc

计算机等级考试二级公共基础知识汇总.doc计算机等级考试二级公共基础知识第1章 数据结构与算法1.1 算法1.1.1 算法的基本概念算法是指对解题方案的准确而完整的描述。简单地说,就是解决问题的操作步骤。值得注意的是,算法不等于数学上的计算方法&#xf…

springboot项目中关于时间类型转换的格式问题

常常项目里转时间类型出现如下错误。 Can not deserialize value of type java.util.Date from String \"2021-10-24 12:12:12\" : not a valid representation(error: Failed to parse Date value 2018-10-24 12:12:12: Can not parse date\"2021-10-24 12:12…

如何用计算机计算胸围,文胸尺码计算器

文胸尺码计算器也称胸罩尺寸计算器,是根据国际标准制定的文胸尺寸、胸罩尺寸表计算您的文胸尺码。胸围尺寸测量方法如下:水平围绕胸部最高点(乳头)一周的长度,即为您的胸上围尺寸,如测量尺寸时遇到小数,测量时建议采用…

SpringBoot升级到2.0后默认时间格式变化_springboot接收date类型参数

springboot1.x时,请求返回默认将Date类型转换成时间戳: createTime: 1544693261000然而在升级到springboot2.0后,默认返回的时间格式变成了UTC字符串: createTime: "2021-12-13T09:27:41.0000000"对于网页端或安卓端&…

与虚拟现实技术相关联的计算机技术,虚拟现实技术与其他技术的关系是什么?-VR-形象思维VR...

1.虚拟现实技术与可视化仿真技术的关系虚拟现实与可视化仿真技术有着密切的联系:两者都被视为现代图形学的应用主流和技术生长点。可视化仿真着重于将计算机产生的大量数据转化为图形,化抽象思维为形象思维,而虚拟现实则致力于提供和谐的人机…

org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.logException Resolved

场景: spring项目中无法访问到对应controller,查看日志,没有报错,只有warnring: org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.logException Resolved [org.springframework.web.meth…

带桭字的名字_男孩带官运大气的名字有气魄有能力-可爱点

一个好的名字传承了祖辈的血脉烙印,寄托了父母的满心希望和浓重的情意,取一个官运财运旺的名字,相信能让男孩更加充满自信和动力,这里整理了男孩带官运大气的名字的内容,来看看有没有给你们带来灵感呢。1、景辉“景”字…

无法在计算机上创建文件夹iscsi,ISCSI连接后磁盘无法读写问题求解决

ISCSI target:windows 2000 pro操作系统ISCSI initiator:SUSE linux 9.0SUSE LINUX 9.0配置文件:iscsi.conf# You may configure CHAP authentication settings that will apply to every# target discovered at a particular address by add…

springboot基于mybatis扫描jar包中的controller、service、dao、xml

springboot基于mybatis扫描jar包中的controller、service、dao、xml 最近有这样的需求,是将某个业务模块接口,比如新闻的接口模块 作为一个公共固定的模块,整个包括controller 、model 、mapper 、mapper .xml ,都通过jar 包的形…

java 后台和前端的消息提醒_滴滴Java后台3面题目:网络+内存溢出+各种锁+高性能+消息队列...

一面自我介绍项目介绍JVM类加载机制java的垃圾回收器都有哪些,说下g1的应用场景,平时你是如何搭配使用垃圾回收器的。红黑树的设计经常使用的设计模式?以及UML设计?hashmap实现的的数据结构是什么样的?当hash冲突过多时…

springboot 配置多个请求服务代理

springboot 配置服务代理 有时候,我们可能有下边这样的需求: 即,针对于分布式服务,我们会有多种业务接口服务,但是服务器上可能只要求开放一个服务的端口,比如上图的restA项目端口是对外开放的&#xff0…

计算机控制pid控制实验,计算机控制实验三数字PID调节器算法的研究

计算机控制技术实验报告学院:********** 班级:********** 姓名:****** 学号:**********实验三 数字PID调节器算法的研究实验项目名称:数字PID调节器算法的研究 实验项目性质:普通所属课程名称:计…

主板上的jrgb接口干什么用_用思维导图,解读选配主板的过程,重点解读兼容与接口的搭配技术...

本文用思维导图,解读选配主板的过程,重点解读兼容与接口的搭配技术,选择了5块不同主板,说明主板内容。重点提示,主板决定一台计算机能否稳定运行。任务描述:重点解读兼容与接口的搭配技术,解读选配主板的过…

Linux启动Mysql

关于Linux上安装Mysql可以查看之前的博客:https://blog.csdn.net/qq_43842093/article/details/120401076 Linux启动Mysql 下查看mysql服务的两种方式: 方式一: [rootlocalhost bin]ps -ef|grep mysql方式二: [rootlocalhost…

多媒体计算机技术19秋作业1,东师多媒体计算机技术19春在线作业1【标准答案】.doc...

多媒体计算机技术19春在线作业1-0002试卷总分:100 得分:0一、 单选题 (共 30 道试题,共 60 分)1.1984年公布的音频编码标准G.721,它采用的是()编码。A.均匀量化B.自适应量化C.自适应差分脉冲D.线性预测2.什么时候需要使用MIDI,()   (l)想音乐质量更好时 (2)想连续…

随机抽样java_实现随机抽样【随机数生成问题】

1、rand()定义:int rand(void);返回值:返回一个伪随机数,该数的范围是:[0,RAND_MAX)2、srand()定义:void srand(unsigned intseed);返回值:该函数是随机数发生器的初始化函数;如果使用相同的种子…