图像的代数运算

  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;

图像四则运算(加减乘除)相关推荐

  1. python 四则运算加减乘除简单代码

    operator = input("请输入要进行的运算(+.-.*./):") num1 = float(input("请输入第一个数字:")) num2 = ...

  2. 【tensorflow】图像加减乘除

    图像中加减乘除: import cv2 import numpy as np def addimg(img1,cropped):dstadd = cv2.add(img1,cropped)cv2.im ...

  3. 【图像处理opencv】_图像基础

    目录 0 程序环境与所学函数 1 自定义图像 2 三种常见图像相互转换 3 通道分离与合并 4 两图像的加减乘除 5 图像线性变换和非线性变换 ​6 图像融合 0 程序环境与所学函数 本章程序运行需要 ...

  4. 数字图像处理之图像基础

    最近在学数字图像处理,图像基础包括以下部分: 导入库 import numpy as np import matplotlib.pyplot as plt import cv2 as cv 图片展示函 ...

  5. halcon 单通道图像转成3通道_halcon图像处理基本运算

    halcon图像处理基本运算 图像处理最基本的操作包括颜色空间转换,各种代数运算,放射变换等.通过熟悉这些常见的操作,可以对图像有基本的认识,尤其是对刚开始接触视觉图像处理的人而言,熟悉这些操作,可以 ...

  6. java四则出题判分_java 随机出题四则运算

    我的github地址:https://github.com/kdaysl/fshost/blob/master/mar.java 一.需求分析具体要求:任何编程语言都可以,命令行程序接受一个数字输入, ...

  7. 05-文件与流-课堂测试(四则运算)

    编程思想: 首先根据题目要求,需要写出一个程序,能够实现,随机生成100个四则运算,并将其输入进入Test.txt文件中,然后从该文件中一行一行进行输出,并于正确答案进行比较,判断是否正确. 然后开始 ...

  8. python算式运算题目_python的四则运算练习

    题目要求: (1)能自动生成小学四则运算题目,其中不能出现负数: (2)除了整数外,还能支持真分数的四则运算: 解题思路描述: (1)四则运算加减乘除,采用两个随机数,由于不能出现负数,则对两个随机数 ...

  9. python3-opencv库(4)--图片像素运算,利用加权叠加调节图像对比度和亮度

    版权声明:转载请注明原作者及出处 本文所涉及的一切图像像素运算,前提都是两张图尺寸相同,通道数相同 import numpy as np from cv2 import cv2"" ...

最新文章

  1. [UI] 精美UI界面欣赏[1]
  2. curl命令查看耗时
  3. 套路、逻辑与思辨(道理的论证)
  4. Selenium | 网上教程
  5. 【Tools】Visual Studio 2019下载和安装
  6. Ubuntu18.04 root 登录
  7. 【小程序】【Tips】【实践】Json 的对象 和 Json字符串 的区别和转换
  8. Postman图片上传用法以及Required request part file is not present的解决方法
  9. Facebook攻略--注册流程
  10. php写出个人所得税,PHP如何计算个人所得税
  11. 弗吉尼亚大学计算机就业如何,假设你是新华中学的学生李华,高中毕业后想到美国弗吉尼亚大学(University of Virginia)计算机专业深造...
  12. 二值图像快速细化算法
  13. 《我不是潘金莲》所揭示的
  14. mvc中viewdata 和viewbag的区别
  15. SAP 发出商品业务配置
  16. 消防工程师 第二篇 建筑防火 1.厂房和仓库的火灾危险性分类
  17. #微信公众平台开发(一)
  18. 网易平台服务器修改魔兽,魔兽世界怀旧服:网易用这种手段分流玩家 工作室笑了,我们哭了...
  19. 贝尔维尤的无人驾驶汽车网络要来啦!
  20. 用VHDL编写数字时钟

热门文章

  1. TestFlight使用教程
  2. PPT模板下载地址汇总(免费)
  3. cesium空间面积测量,取点比较准,数据不是很准,但是差不太多
  4. 应届生面试国企时要注意的地方有哪些?
  5. 微信群发软件哪个好?好用的群发软件选择
  6. 神经网络中偏置的作用
  7. UOJ#311. 【UNR #2】积劳成疾
  8. 企业微信员工能私加客户吗?员工私自联系客户企业是否知道?
  9. 代数结构入门:群、环、域、向量空间
  10. pg_receivewal实践