图像的代数运算与逻辑运算——Matlab实现

这篇具有很好参考价值的文章主要介绍了图像的代数运算与逻辑运算——Matlab实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

图像的代数运算与逻辑运算——Matlab实现

一、加法运算

加法运算通常用于平均值降噪等多种场合。图像相加一般用于同一场景的多幅图像求平均,以便有效降低加性噪声。当图片被随机噪声源干扰,则可以通过对多幅静止图像求平均值来达到消除或者降低噪声的目的。在求平均值的过程中,图像的静止部分不会改变,而由于图像的噪声是随机的,各不相同的噪声图案积累的很慢,因此可以通过多幅图像求平均值来降低随机噪声的影响。

若对M幅图像做平均,则M越大,降噪效果越好。

把一副图像加上高斯噪声,再通过多次相加求平均的方法去除噪声,其matlab程序如下:

%% 把一副图像加上高斯噪声,再通过多次相加求平均的方法去除噪声
% 验证相加次数和降噪效果是否成正比
clc;clear;close all;    % 初始化
I=imread('eight.tif');
J=imnoise(I,'gaussian',0,0.02); % 向这副图片加入高斯噪声
subplot(231);imshow(I);title('原图');
subplot(232);imshow(J);title('加噪声');
[M,N]=size(J);  K=zeros(M,N);   % 产生全零的矩阵,大小与图片的一样
a=100;
for i=1:a
    J=imnoise(I,'gaussian',0,0.02);
    J1=im2double(J);
    K=K+J1; % 相加
end
K=K/a;  % 求平均值
subplot(233);imshow(K);title([num2str(a),'次求平均后的图']);

运行结果如下:
图像的代数运算与逻辑运算——Matlab实现

当平均次数越多时,降噪效果越好。

代码中涉及的imnoise函数详解:

MATLAB中函数imnoise 是表示添加噪声污染一幅图像,叫做噪声污染图像函数。

g = imnoise(I,type)
g = imnoise(I,type,parameters)
g = imnoise(I,‘gaussian’,m,v)
g = imnoise(I,‘localvar’,V)
g = imnoise(I,‘localvar’,image_intensity,var)
g = imnoise(I,‘poisson’)
g = imnoise(I,‘salt & pepper’,d)
g = imnoise(I,‘speckle’,v)

f为是输入图像。函数imnoise在给图像添加噪声之前,将它转换为范围[0,1]内的double类图像。指定噪声参数时必须考虑到这一点。

g=imnoise(f,‘gaussian’,m,var)将均值m,方差为var的高斯噪声加到图像f上,默认值是均值m为0,方差var为0.01的噪声。

g=imnoise(f,‘localvar’,V)将均值为0,局部方差为V的高斯噪声添加到图像f上,其中V是与f大小相同的一个数组,它包含了每一个点的理想方差值。

g=imnoise(f,‘localvar’,image_intensity,var)将均值为0的高斯噪声添加到图像f中,其中噪声的局部方差var是图像f的亮度值的函数。参量image_intensity和var是大小相同的向量,plot(image_intensity,var)绘制出噪声方差和图像亮度的函数关系。向量image_intensity必须包含范围在[0,1]内的归一化亮度值。

g=imnoise(f,‘salt & pepper’,d)用椒盐噪声污染图像f,其中d是噪声密度(即包括噪声值的图像区域的百分比)。因此,大约有d*numel(f)个像素受到影响。默认的噪声密度为0.05。

g=imnoise(f,‘speckle’,var)用方程g=f+n*f)将乘性噪声添加到图像f上,其中n是均值为0,方差为var的均匀分布的随机噪声,var的默认值是0.04。

g=imnoise(f,‘poisson’)从数据中生成泊松噪声,而不是将人工的噪声添加到数据中,为了遵守泊松统计,unit8和unit16类图像的亮度必须和光子的数量相符合。当每个像素的光子数量大于65535时,就要使用双精度图像。亮度值在0到1之间变化,并且对应于光子的数量除以10e12。

二、减法运算

图像相减常用于检测变化及运动的物体,图像相减运算又称为图像差分运算。差分方法可以分为可控环境下的简单差分方法和基于背景模型的差分方法。在可控环境下,或者在很短的时间内,可以认为背景是固定不变的,可以直接使用差分运算检测变化或运动的物体。

将同一景物在不同时间拍摄的图像或同一景物在不同波段的图像相减,这就是差影法,实际上就是图像的减法运算。差值图像提供了图像间的差值信息,能用于指导动态监测、运动目标的检测和跟踪、图像背景的消除及目标识别等。

图像在进行差影法运算时必须使两相减图像的对应点位于空间同一目标上,否则,必须先做几何校准与匹配。当一个场景系列图像相减用来检测其他变化时,难以保证准确对准,这时就需要更进一步的分析。

已知一副收到椒盐噪声干扰的图片,通过减法运算提取出噪声,其matlab代码如下:

%% 已知一副收到椒盐噪声干扰的图片,通过减法运算提取出噪声
clc;clear;close all;    % 初始化
I=imread('C:\Users\xcz\Desktop\matlab_example\Images\lena.jpg');
I1=imnoise(I,'salt & pepper',0.02);
K=imsubtract(I1,I); % 实现两幅图片相减,也可使用imabsdiff函数,从而避免负值为0
K1=255-K;   % 图像求反显示
subplot(131);imshow(I);title('原图');
subplot(132);imshow(I1);title('加椒盐噪声后');
subplot(133);imshow(K1);title('提取的噪声');

运行结果如下:
图像的代数运算与逻辑运算——Matlab实现

matlab代码中涉及到的imsubtract函数详解:

英文原文如下
图像的代数运算与逻辑运算——Matlab实现

注意:imsubtract函数会将相减后为负值的数据截取为0;而 imabsdiff 函数则是求两幅图像的绝对差值,不会将负值截取为0, 从而使用的时候,为了避免差值产生负值,同时避免像素值运算结果之间差异过小(减去后结果为负数的不好都变成0),建议调用函数imabsdiff。

三、乘法运算

简单的乘法运算可用来改变图像的灰度级,实现灰度级变换,乘法运算也可用来遮住图像的某些部分,其典型应用时用于获得掩模图像。对于需要保留的区域,掩模图像的值置为1,而需要被抑制的区域,掩模图像的值置为0。乘法运算有时还可以作为一种技巧来实现卷积或相关处理。

matlab代码实现如下:

%% 实现图像的乘法运算
clc;clear;close all;    % 初始化
I=imread('moon.tif');
J=immultiply(I,1.2);    % 将此图片乘以1.2
K=immultiply(I,2);      % 将此图片乘以2
subplot(131);imshow(I);title('原图');
subplot(132);imshow(J);title('乘以1.2');
subplot(133);imshow(K);title('乘以2');

运行结果如下:
图像的代数运算与逻辑运算——Matlab实现

代码中涉及的immultiply函数用于图像相乘运算,详情见帮助文档

四、除法运算

简单的除法运算可用于改变图像的灰度级。除法运算的典型运用是比值图像处理。例如,除法运算可用于校正成像设备的非线性影响,在特殊形态的图像(如以CT为代表的医学图像)处理中用到。此外,除法运算还用于消除图像数字化设备随空间所产生的影响。

matlab代码实现如下:

%% 实现图像的除法运算
clc;clear;close all;    % 初始化
moon=imread('moon.tif');I=double(moon); % 读入图像,并将其数据类型转为double
J=I*0.43+90;K=I*0.1+90;L=I*0.01+90;
moon2=uint8(J);moon3=uint8(K);moon4=uint8(L);
J=imdivide(moon,moon2);K=imdivide(moon,moon3);
L=imdivide(moon,moon4);
subplot(221);imshow(moon);title('原图');
subplot(222);imshow(J,[]);title('J=I*0.43+90');
subplot(223);imshow(K,[]);title('K=I*0.1+90');
subplot(224);imshow(L,[]);title('L=I*0.01+90');

运行结果如下:
图像的代数运算与逻辑运算——Matlab实现

五、逻辑运算

常见的图像逻辑运算有与(and)、或(or)、非(not)等,其主要针对二值图像,在图像理解与分析领域比较有用。运用这种方法可以为图像提供模板,与其他运算方法结合起来可以获得特殊的效果。

两幅二值图像进行逻辑与、或、非,其matlab代码如下:

%% 两幅二值图像进行逻辑与、或、非
clc;clear;close all; %初始化
A=zeros(128);A(40:67,60:100)=1; % 创建两个矩阵
B=zeros(128);B(50:80,40:70)=1;
C=and(A,B);D=or(A,B);E=not(A); %对A图和B图进行逻辑运算
subplot(231);imshow(A);title('A图');
subplot(232);imshow(B);title('B图');
subplot(233);imshow(C);title('C图,A,B相与');
subplot(234);imshow(D);title('D图,A,B相或');
subplot(235);imshow(E);title('E图,A取反');

运行结果如下:
图像的代数运算与逻辑运算——Matlab实现文章来源地址https://www.toymoban.com/news/detail-447903.html

到了这里,关于图像的代数运算与逻辑运算——Matlab实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 线性代数中涉及到的matlab命令-第二章:矩阵及其运算

    目录 1,矩阵定义 2,矩阵的运算 3,方阵的行列式和伴随矩阵  4,矩阵的逆  5,克莱默法则  6,矩阵分块  矩阵与行列式的区别: (1)形式上行列式是数表加两个竖线,矩阵是数表加大括号或中括号; (2)行列式可计算得到一个值,矩阵不能; (3)两个行列式相加与两

    2024年02月08日
    浏览(45)
  • Matlab图像处理-加法运算

    加法运算 图像加法运算的一个应用是将一幅图像的内容叠加到另一幅图像上,生成叠加图像效果,或给图像中每个像素叠加常数改变图像的亮度。 在 MATLAB 图像处理工具箱中提供的 函数 imadd () 可实现两幅图像的相加或者一幅图像和常量的相加 。 程序代码 效果图像 代码对图

    2024年02月11日
    浏览(37)
  • (数字图像处理MATLAB+Python)第八章图像复原-第三、四节:图像复原代数方法和典型图像复原方法

    图像复原代数方法 :根据退化模型,假设具备关于 g g g 、 H H H 、 n n n 的某些先验知识,确定某种最佳准则,寻找原图像 f f f 的最优估计 无约束最小乘方复原 :是一种用于恢复受损图像的方法。它基于最小化平方误差的原则,以尽可能接近原始图像为目标。假设我们有一个

    2024年02月05日
    浏览(85)
  • Matlab 数字图像 第二章 矩阵及其运算

    目录 2.1 矩阵的创建 2.1.1 直接输入: 2.1.2 载入外部数据文件 2.1.3 利用内置函数创建 2.2 矩阵的寻访 2.2.1 下标元素访问 2.2.2  访问单元素 2.3 矩阵的拼接 2.3.1 矩阵拼接符[] 2.3.2  函数 2.4 矩阵的运算 2.4.1 加减 2.4.2 乘除 2.4.3乘方 2.4.4 按位运算 2.4.5 行列式与秩 2.4.6 逆与迹 2.4.7 矩

    2023年04月09日
    浏览(35)
  • 数字图像处理 matlab图像的几何运算 实验三 旋转 缩放 裁剪 镜像变换 平移

    原图: 读取原图(这里我的图片名字是atm.png): 我们先说原理,图像旋转的本质是向量的旋转。 矩阵乘法的实质是进行线性变换,因此对一个向量进行旋转操作也可以通过矩阵和向量相乘的方式进行。 因为图像都是通过二维矩阵存放的(单通道),所以对图像进行旋转时

    2024年02月07日
    浏览(49)
  • (数字图像处理MATLAB+Python)第九章图像形态学运算-第三节:二值图像的形态学处理

    形态滤波 :是一种在数字图像处理中常用的图像处理技术,用于改善图像的质量、提取图像的特定特征或去除图像中的噪声。形态滤波主要基于形态学运算,通过结构元素(也称为模板)对图像进行局部区域的操作,从而改变图像的形状和结构。选择不同形状(如各向同性的

    2024年02月08日
    浏览(48)
  • MATLAB基础操作,矩阵乘法、数组矩阵索引、最大最小运算符、零矩阵/随机矩阵/单位矩阵的生成、log函数、Inf和NaN的含义,语句过长用连接符换行、逻辑运算符以及区别

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 本文总结MATLAB编程时的一些基本操作,适用于新手小白,主要包括矩阵相乘、生成矩阵、矩阵基本操作、数组索引、最大最小操作符。 线性代数的两个矩阵相乘:用符号 “ * ” 例如A*B得到A与B的矩阵相

    2024年02月04日
    浏览(62)
  • 图像处理基础:图像膨胀、腐蚀、开闭运算及梯度运算的Python实现

    目录 一、为什么要进行图像处理? 二、图像形态学的四种基本操作 1、图像膨胀 1.1、基本概念 1.2、膨胀函数代码展示 2、图像腐蚀 2.1、基本概念 2.2、腐蚀函数代码展示 3、图像开运算 3.1、基本概念 3.2、开运算函数代码展示 4、图像闭运算 4.1、基本概念 4.2、闭运算函数代码

    2024年02月04日
    浏览(40)
  • MATLAB矩阵基本运算的实现(一)

    MATLAB是matrixlaboratory两个词的组合,意为矩阵工厂(矩阵实验室),强大的矩阵运算能力是MATLAB的一个重要的特点,下面我就为大家整理了一下利用MATLAB实现矩阵基本运算的方法。 一、矩阵的加减法 矩阵加减法运算必须保证参与运算的矩阵是同维数,就是在算例中的a和b矩阵,

    2023年04月08日
    浏览(36)
  • 【JavaScript】JavaScript 运算符 ④ ( 逻辑运算符 | 逻辑与运算符 && | 逻辑或运算符 || | 逻辑非运算符 ! )

    JavaScript 中的 逻辑运算符 的作用是 对 布尔值 进行运算 , 运算完成 后 的 返回值 也是 布尔值 ; 逻辑运算符 的 使用场景 : 条件控制语句 , 控制程序分支 ; 循环控制语句 , 控制程序循环 ; 逻辑 运算符 列举 : : 逻辑与运算 , 两个操作数都为 true , 最终结果才为 true , 只要有一个操

    2024年03月20日
    浏览(49)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包