图像四则运算(加减乘除)

这篇具有很好参考价值的文章主要介绍了图像四则运算(加减乘除)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

图像的代数运算

  1. 实验目的:

1.了解图像的算术运算在数字图像处理中的初步应用。

2.体会图像算术运算处理的过程和处理前后图像的变化。

3.能够实现简单的图像处理

  1. 实验原理:

    图像的代数运算包括加,减,乘,除,这些运算的主要对象是图像数据块中的数据。这四种代数运算可以由如下的公式表示:

C(x,y) = A(x,y) + B(x,y)

C(x,y) = A(x,y) - B(x,y)

C(x,y) = A(x,y) * B(x,y)

C(x,y) = A(x,y) / B(x,y)

其中A(x,y),B(x,y),C(x,y)分别是参与运算的图像数据块。

在MATLAB中,由于图像的数据实际上是以矩阵的形式存储的,故可以直接使用MATLAB的基本算术符(+、-、*、/
等),但是在此之前必须将图像转换为适合进行基本操作的双精度类型。但是MATLAB图像处理工具箱包含了一个能够实现所有非稀疏数值数据的算术操作的函数集合,能够更加方便地对图像进行算数操作。下表列举了所有图像处理工具箱中的图像代数运算函数。

表1 图像处理工具箱中的代数运算函数


函数名 功能描述

Imabsdiff 两幅图像的绝对差值

Imadd 两幅图像的加法

Imcomplement 补足一幅图像

Imdivide 两幅图像的除法

Imlincomb 计算两幅图像的线性组合

Immultiply 两幅图像的乘法

imsubtract 两幅图像的减法


在使用上述工具箱时,我们不再需要考虑直接数据的类型,也无需考虑直接算数计算得出的值会超出图像的位数。但图像的算数计算需要参与计算的图像的数据块大小相等。

  1. 实验步骤:
<!-- -->
  1. 图像的加法:

    图像相加一般用于对同一场景的多幅图像求平均效果,以便有效地降低具有叠加性质的随机噪声。

    为了体验加法,我们分别进行了如下的两个操作:两幅图像相加;单幅图像的数据整体加上某一个数值,以增加亮度。

图像四则运算(加减乘除)

代码如下:

clc;

close ;

clear;

path=“E:\文件资料\课程课件及相关资料\图像处理\作业\第二次作业”;

%%

%两幅图片相加

car1 = imread(‘car1.jpg’);

car2= imread(‘car2.jpg’);

K = imadd(car1,car2);

imshow(K);

exportgraphics(gca,path+“\add.jpg”)

讨论:可见图像的加法会使得两幅图像重合在一起,上述两幅图片差异较大,所在两幅图片叠加时,会产生较为模糊的图片。当两幅图片的背景差不多时,所得到的图像会更加清晰。图像的加法可以用于水印的处理上。

给图像的每一个像素加上一个常数可以使图像的亮度增加。
图像四则运算(加减乘除)

代码如下:

%%%%%图像增加,减少亮度

RGB = imread(‘cameraman.tif’);

RGB2 = imadd(RGB,50);

RGB3 = imsubtract(RGB,50);

subplot(1,3,1);imshow(RGB);

subplot(1,3,2);imshow(RGB2);

subplot(1,3,3);imshow(RGB3);

exportgraphics(gca,path+“\increase_brightness.jpg”)

clf;

讨论:给图像的每个像素加上一个常数会导致图像整体的亮度变亮,当减去一个常数,会导致图像整体变暗。但图像整体的对比度去发生了较大的变化。在运用图像加法的过程中,尤其要注意所加的数值大小,当数值过大时,会造成全局图像信息的丢失,即得到的整幅图像为全白。

  1. 图像的减法:

    图像的减法常用于运动物体的检测以及图像差异的检测。图像减法也可以是更加复杂的图像处理的准备步骤。在MATLAB中可以用imsubstract这个函数来实现。

    图像的减法可以减去图像的背景,以突出所需处理的对象。也可以减少图像的整体亮度(该部分可见图像的加法部分)。

    减去背景的图像见上图的右图。

图像四则运算(加减乘除)

代码如下:

%%

%图像减法

cameraman = imread(‘cameraman.tif’);

background =imopen (cameraman, strel(‘disk’,15));

cameraman2 = imsubtract(cameraman, background);

gca=figure;

subplot(1,2,1);imshow(cameraman);

subplot(1,2,2);imshow(cameraman2);

exportgraphics(gca,path+“\subtract_background.jpg”)

clf;

讨论:background这个数据块实际上表示图像的背景的像素信息。所以当原始图像减去该背景数据块时,由于原始图像的背景与background的数据差不多,所以会导致所的图像的背景部分的像素几乎为0(如上图所示,其背景部分几乎是一团黑)。但是人物部分,由于background所对于的数据几乎为0,所以处理前后的图像的人物几乎不变。

  1. 图像的乘法:

    两幅图像进行乘法运算可以实现掩模操作,即屏蔽掉图像的某些部分。这是图像的加法所不具有的。图像的加法,减法会改变图像的亮度,但是图像的乘法会更好地保持原图像的明暗效果,更加的自然。处理前后的图像的对比度并不会出现明显的变化。

    原始图像如下图的左图,经乘法操作后的图像如下图的右图。

图像四则运算(加减乘除)

代码如下:

%%

%图像乘法

I = imread(‘moon.tif’);

J = immultiply(I,1.5);

gca=figure;

subplot(1,2,1);imshow(I);

subplot(1,2,2);imshow(J);

exportgraphics(gca,path+“\mutiply_moon.jpg”)

clf;

讨论:如上图所示,月亮较亮的部分的亮度明显变大,月亮较暗的部分的亮度变化没那么明显。与图像的加法的结果相比,图像的乘法能够更加自然的保留原始图像的自然。当乘法的系数变大时,会发现图像出现明显的失真。例如每当系数为10
时,所得的结果如下:

  1. 图像的除法:

    除法运算可用于校正成像设备的非线性影响。除法也可以用于图像差异的检测,这种差异的检测不同于图像的减法,该差异更多的体现像素值变化的比率。在MATLAB中可以使用imdivide实现图像的除法。

    原始图像可见图像减法部分的图像。我们将原始图像除以除去背景后的图像,处理结果如下

图像四则运算(加减乘除)

代码如下:

%%

%图像除法

gca=figure;

Ip = imdivide(cameraman, cameraman2);

imshow(Ip, []);

exportgraphics(gca,path+“\divide_cameraman.jpg”)

讨论:处理后的图像,明显的反映了任务的轮廓,以及背景变化的部分。相较于图像的减法,该方法不需要参考图像。所以具有一定的优势。但是图像的除法的结果并没有图像的减法的效果明显。

  1. 图像的四则算术运算:

    图像的四则运算能够将四则四则运算结合在一起。但是直接进行四则运算需要对图像进行截取。而MATLAb工具箱提供了imlincomb函数,可以忽略对图像的截取,更加方便的对图像进行处理。

图像四则运算(加减乘除)

代码如下:

%%

%图像四则运算

gca=figure;

I = imread(‘rice.png’);

J = imread(‘cameraman.tif’);

K = imlincomb(1.1,I,0.9,J,50,‘uint16’);

imshow(K,[])

exportgraphics(gca,path+“\Algebra.jpg”);

close all;

clear all;文章来源地址https://www.toymoban.com/news/detail-478408.html

到了这里,关于图像四则运算(加减乘除)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Rust 复数运算,重载加减乘除运算

    复数定义 由实数部分和虚数部分所组成的数,形如a+bi 。 其中a、b为实数,i 为“虚数单位”,i² = -1,即虚数单位的平方等于-1。 a、b分别叫做复数a+bi的实部和虚部。 当b=0时,a+bi=a 为实数; 当b≠0时,a+bi 又称虚数; 当b≠0、a=0时,bi 称为纯虚数。 实数和虚数都是复

    2024年02月13日
    浏览(37)
  • C语言加减乘除运算

    加减乘除是常见的数学运算,C语言当然支持,不过,C语言中的运算符号与数学中的略有不同,请见下表。 加法 减法 乘法 除法 求余数(取余) 数学 + - × ÷ 无 C语言 + - * / % C语言中的加号、减号与数学中的一样,乘号、除号不同;另外C语言还多了一个求余数的运算符,就是

    2024年02月06日
    浏览(43)
  • 只使用位运算实现加减乘除

    在线OJ: LeetCode 29. 两数相除 原题目的要求是不能使用乘法, 除法和取余运算符实现除法. 在本篇博客中把题目要求提高一点, 这里只使用位运算来实现, 顺便的也就把只使用位运算实现加减乘除实现了. 首先我们需要知道两数之和可以是两个数位相加和不进位相加之和, 而两数进

    2024年02月06日
    浏览(49)
  • Pytorch入门:Tensor加减乘除矩阵运算

    若张量维数大于2,则对最后两维进行matmul。进行此运算的要求是张量a与b除最后两维外的其他维必须一致:

    2024年02月12日
    浏览(46)
  • 用Vue的三种方法实现加减乘除运算

    js插件:vue.js 教程: 首先在工具内引入vue.js 然后在body里面创建一个div并设置id,我这里给id命名为\\\"app\\\" 在id命名为\\\"app\\\"的div内使用input标签和select标签来设置运算框 然后用 methods方法 computed方法 watch(侦听器)方法 做出3种不同的加减乘除运算 第一种computed方法: 接下来我们在

    2024年02月09日
    浏览(121)
  • JAVA中char类型加减乘除运算表达式返回类型

    我们都知道java中,如果char类型和int类型做加减法,那么char类型会被精度提升至int类型然后参与运算,返回的也是int类型的数据。 那么如果表达式中参与运算的 均为char类型 ,那么表达式返回的类型是什么呢? 经过简单测试,是 int类型 。 这个问题是在调用StringBuilder.appen

    2024年02月08日
    浏览(59)
  • Python Opencv实践 - 图像的加减乘除

               

    2024年02月13日
    浏览(38)
  • 【加强版】小学数学出题,加减乘除混合运算,支持自定义数字,一键打印

    在线预览:在线HTML代码预览和运行工具 - UU在线工具   复制下面代码后到该地址预览即可  注意: 在线预览不能打印 。如需打印,在电脑本地上新建文本文档,粘贴代码后保存,然后把文件后缀改为.html运行,出题点击打印就可以了 新增功能: 1、支持加减乘除运算混合多

    2024年01月17日
    浏览(47)
  • 前端vue项目使用Decimal.js做加减乘除求余运算

    运算结果是Decimal对象,需要使用.toNumber()转为数字

    2024年04月13日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包