网站首页 > 技术文章 正文
图像的本质是矩阵,图像的四则运算本质上也是矩阵的四则运算。唯一需要注意的是,图像四则运算中的乘法和除法都是以元素为对象进行的,即对应于矩阵的点乘和点除。
图像的四则运算(也可以称为代数运算),是通过对输入图像进行点对点的加、减、乘、除运算后输出图像。图像的四则运算在数字图像处理中有着广泛的应用,它除了可以实现自身的算术操作,还能为许多复杂的图像处理提供准备。
MATLAB提供了对图像进行四则运算的四个函数,即图像加运算(imadd())、图像减运算(imsubtract())、图像乘运算(immultiply())和图像除运算(imdivide())。
下面,对这四种函数作详细介绍。
Z=imadd(X,Y):将X、Y数组中的对应元素相加,返回值Z和X、Y的大小一致;如果Y是标量,则X数组中的每一个元素都与该标量相加。
Z=imsubtract(X,Y):Z为输入图像X和Y相减的结果;减法操作可能使得某些元素变为负数,但像素不可能为负值,所以该函数会把负数截取为0。
Z=immultiply(X,Y):图像相乘,等同于X.*Y的操作;如果Y是标量,则X数组中的每一个元素都与该标量相乘。
Z=imdivide(X,Y):图像相除,相当于X./Y;如果Y是标量,则X数组中的每一个元素都与该标量相除。
上面也有它提到,图像数据终究不是一般矩阵,在执行图像运算得到结果图像的时候,一定要注意图像数据的物理意义,以保证运算结果的合理性。然而,在执行图像代数运算时,结果经常发生异常。常见的异常有以下两种:
(1)计算结果溢出
图像的像素值是有界的。例如,两幅256色图像在进行四则运算时,像素值可能出现负值,像素值也可能超过255,但其像素值应该是0~255。所以会出现计算结果溢出的情况,必须修正。
(2)计算结果类型无效
图像数据有多种存储类型,像素值要求为整数类型,然而进行除法四则运算时,很可能得到分数的计算结果。这是由于图像代数运算函数在执行运算时,会把图像数据以double类型来处理。所以会出现计算结果类型无效的情况,必须修正。
在MATLAB提供的代数运算函数时,它已经对以上两种异常情况作出异常处理
,这个不需要我们操心。这些MATLAB中函数异常修正遵循两个原则:
超过整数类型有效范围的结果直接截断到限定范围的端点值;
对于分数计算结果采取四舍五入。
下面,通过一个实例来具体说明图像四则运算的操作:
代码:
显示效果:
从上面的效果图可以看出,图像的加运算和点乘运算是图像亮度提高的途径;而图像的减运算和点除运算是图像亮度提高的途径。
最后,感谢您的耐心阅读!
- 上一篇: 上证指数符合正太分布(上证指数是负数代表什么)
- 下一篇: 矩阵与张量的区别(矩阵与张量的区别和联系)
猜你喜欢
- 2024-09-26 人工智能数学基础----矩阵(人工智能a算法)
- 2024-09-26 机器学习之线性代数速查表(线性代数快速入门)
- 2024-09-26 谈谈矩阵的运算(矩阵及其运算的性质)
- 2024-09-26 巧用python的矩阵运算来进行电路的计算和分析
- 2024-09-26 计算机图形中的矩阵(计算机的矩阵怎么用)
- 2024-09-26 形象直观的“2X2矩阵”乘法运算的本质原理
- 2024-09-26 深度学习:所有矩阵尺寸和计算的深层指南!
- 2024-09-26 玩转张量点乘和变形(张量的运算规则及意义)
- 2024-09-26 python与线性代数 矩阵的运算(python做线性代数)
- 2024-09-26 矩阵加法与数乘的应用——灰度矩阵的凸组合对应灰度图的合成
- 1515℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 573℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 513℃MySQL service启动脚本浅析(r12笔记第59天)
- 487℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 486℃启用MySQL查询缓存(mysql8.0查询缓存)
- 469℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 449℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 447℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (83)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- c语言min函数头文件 (68)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)