数字图像处理的算术运算是指对两幅或多幅图像进行点对点的加、减、乘、除计算得到输出图像的运算。

其中输入图像的大小必须相同。

加法:主要是通过叠加相同的图像来达到去噪的效果(因为噪声的平均值为0),或者实现图像的叠加。

减法:主要是检测两幅图像之间的差异,增强细节。

乘法(除法):主要用于图像的分块显示。

matlab代码如下:

%一个总的“调用函数”,用来调用后面定义的具体加减乘除功能函数,
%这里默认输入的图像数据都是被压缩到0-1灰度范围内的。对于运算结果
%超出了0-1范围的情况,如果我们只是想展示图像,那么在函数定义时可以
%不用进行0-1截断(即大于1的像素点设为1,小于0的像素点设为0),因为
%图像展示函数imshow会进行这个操作;如果我们
%要利用运算后的图像数据进行其它操作,比如神经网络训练等,那么对运算后
%的图像进行0-1截断(图像的像素在正常范围)为宜。但在这里,我们只是为了
%展示图像效果,所以在函数定义中没有进行0-1截断。
function out=image_processout.image_add=@image_add;out.image_div=@image_div;out.image_mul=@image_mul;out.image_sub=@image_sub;
end%加法
function img=image_add(f1,f2)%f1,f2为输入的两幅同样大小的图像,后续函数也一样img=f1+f2;
end%减法
function img=image_sub(f1,f2)img=f1-f2;
end%乘法
function img=image_mul(f1,f2)img=f1.*f2;
end%除法
function img=image_div(f1,f2)img=f1./(f2+(1e-6));  %这里除数加一个极小值是为了避免除数为0的情况出现
end

上诉代码是加减乘除函数的定义部分,单独一个matlab文件,其中文件名为“调用函数”的名字——image_process。

具体运行代码如下:

f1=imread('girl.jpg');%读取一个名为girl的jpg图像,但要保证该图像与当前程序在同一目录下
f1=mat2gray(f1,[0,255]);%把图像像素值0-255压缩到0-1,便于后续图像操作
figure1=figure;%画布1,以此类推
imshow(f1)%展示原始图像,对于像素值为0-1模式的,若有大于1或小于0的像素点,均按1或0处理f2=imread('girl.jpg');
f2=mat2gray(f2,[0,255]);fun=image_process;%调用另一个文件add_img=fun.image_add(f1,f2);%调用另一个文件中定义的函数(图像加操作),以此类推
figure2=figure;%画布2,以此类推
imshow(add_img)%展示两个图像一次叠加后的输出图像adds_img=fun.image_add(f1,f2);
for i=1:10adds_img=fun.image_add(f1,adds_img);
end
cn_img=adds_img/12;%这里共有12张图片的叠加,所以除以12,看一下去噪效果
figure3=figure;
imshow(cn_img)%展示图片去噪效果,因为小姐姐图片的画质是很清晰的,估计没什么噪声,效果应该不明显sub_img=fun.image_sub(f1,f2);
figure4=figure;
imshow(sub_img);%展示两张相同图片相减结果img1=f2*0+1;%把f2图像变为一张同样大小但像素值都为1的图像
img0=f2*0;%把f2图像变为一张同样大小但像素值都为0的图像
mul_img1=fun.image_mul(f1,img1);
mul_img0=fun.image_mul(f1,img0);
figure5=figure;
imshow(mul_img1)%展示一张图像与同样大小的全白图像相乘后结果
figure6=figure;
imshow(mul_img0)%展示一张图像与同样大小的全黑图像相乘后结果div_img=fun.image_div(f1,f2);
figure7=figure;
imshow(div_img)%展示两张相同图像相除后结果

具体图像运算后的展示结果:

1.原始图片:

2.两张相同图片相加后的结果:

可以看到很多地方都“白”了,说明对应位置相加后的像素值超过了1。

3.十二张图像相加后再除以12去噪后的结果:

因为原始图像已经是极为高清的了,噪声很少,所以去噪效果目测不明显,与原始图像基本一致。

4.两张相同图片相减结果:

5.原始图片与同样大小的全白图像相乘结果:

全白图像像素值都为1,相乘后于原始图像一致。

6.原始图片与同样大小的全黑图像相乘结果:

全黑图像像素值都为0,相乘后图像全黑。

7.两张相同图像相除结果:

理论上应该为全白图像,但在图像相除函数的定义时,我们给除数加了一个较小值,可能导致最终结果有一些离谱像素点,当然,噪声也可能产生了一定的影响。

感谢阅读

matlab实现数字图像的加减乘除运算相关推荐

  1. matlab 矩阵加减乘除运算

    文章目录 matlab 矩阵加减乘除运算 1 .加.减运算 2. 乘法 3.向量点积 4.向量叉乘 5.混合积 6.矩阵的卷积和多项式乘法 7.反褶积(解卷)和多项式除法运算 8.张量积 9. 除法运 ...

  2. 基于MATLAB的数字图像水印系统

    基于MATLAB的数字图像水印系统 摘要:介绍了数字水印的原理和应用方法,研究了基于离散余弦变换(DCT)的数字图像水印算法,并借助MATLAB编S-Y-具,实现数字水印的嵌入.提取和攻击测试.实验结 ...

  3. java float 加法_JAVA 实现精确的加减乘除运算

    JAVA在加减乘除运算时易发生精度丢失,达不到我们想要的计算结果:为了能够精确表示.计算浮点数,JAVA提供了BigDecimal类,可以以BigDecimal为基础定义一个Arith工具类,代码如下 ...

  4. 简单工厂模式--加减乘除运算

    下面基于简单的<加减乘除运算>实例来讲讲实用简单工厂模式:<备注:以后根据认识的加深,可以添加和修改内容> 需求分析:希望程序提供"加减乘除"四种功能. 功 ...

  5. java用流体加减乘除_任意输入两个数,完成加法、减法、乘法、除法运算!(加减乘除运算分别定义四个方法)_学小易找答案...

    [简答题]编写程序实现菜单设计 [简答题]一层平面图 [简答题]编写一个程序实现大小写字母转换 [简答题]利用循环语句输出一个五行的等腰三角形,如下图 [简答题]编写一个程序实现交换两个变量的数值. ...

  6. [基础题]2.(*)利用接口做参数,写个计算器,能完成加减乘除运算。

    /*2.(*)利用接口做参数,写个计算器,能完成加减乘除运算. (1)定义一个接口Compute含有一个方法int computer(int n, int m). (2)设计四个类分别实现此接口,完成 ...

  7. sql的加减乘除运算_SQL简单查询语、运算符学习和练习

    本次主要学习了SQL语言的书写和运算,多为实操,一定要多写多思考,综合运用起来. 基本查询语句(select *全部 as替换 distinct删除重复) 指定查询条件(where 从哪里查询) 注释 ...

  8. 关于浮点型加减乘除运算不精确的问题

    关于浮点型加减乘除运算不精确的问题 先举一个遇到这个错误的项目例子: 之前做一个小模块,由于后端接口还没有完成,需要自己搭建node服务,返回数据,功能需求是实时更新的,这个小模块中本人没有使用web ...

  9. 51单片机实现三位十进制数加减乘除运算

    51单片机实现三位十进制数加减乘除运算 一.题目 51单片机IO接口作业 请将附件给出的Proteus图用51单片机完成一个计算器功能. 1.显示采用动态分时8位共阳数码管输出. 2.采用4*4矩阵键 ...

最新文章

  1. 小心!你的脸正在成为色情片主角……
  2. Excel直接转图片
  3. 今日头条|张一鸣:我遇到的优秀年轻人的5个特质
  4. HR 问“你目前有几个 Offer”,聪明人会怎么说?你呢!
  5. 【图像处理】图像内插“最近邻插值 最近邻内插法(Nearest Neighbour Interpolate)”代码演示(调整图像大小、放大、缩小)
  6. 7-19上午刷题未知点集合
  7. AHP层次分析法解决用户价值评估
  8. WF(9):本地服务之事件处理
  9. spark写出分布式的训练算法_Spark0.9分布式运行MLlib的线性回归算法
  10. OCR 工具tesseract初体验
  11. 【渝粤教育】广东开放大学 计算机组成原理 形成性考核 (21)
  12. 信息学奥赛一本通1142:单词的长度
  13. UPX3.95程序压缩命令及使用方法
  14. aid learning安装应用_aid learning安装python
  15. 深度linux安装Qt后需要解决的问题
  16. 国标GB/T28181EasyGBS对接大华硬盘录像机NVR查询录像失败解决方案
  17. 日期格式‘YYYY-MM-DD’中的BUG
  18. 爱站网关键词挖掘工具-长尾关键词挖掘站长工具
  19. 小程序开发 如何获取(写出)console.log()打印出来的值
  20. 开启我的游戏引擎学习之旅

热门文章

  1. 拼贴视频的软件有哪些?快来看看这几个视频拼贴app
  2. eclipse中的clean和build功能的作用是什么
  3. 量化私募江湖录:多少家?猜猜看?
  4. 初学安全课程的第一个漏洞 ms17-010
  5. LaTeX Font Warning: Font shape `OMS/cmtt/m/n' undefined
  6. LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol
  7. 今天玩了一款游戏,很不错................
  8. RabbitMQ、Redis、以及数据库操作
  9. 飞卡日常进度之B2车模安装
  10. Pyecharts|动手绘制一个旋转地球