图像的代数运算与逻辑运算——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:aJ=imnoise(I,'gaussian',0,0.02);J1=im2double(J);K=K+J1; % 相加
end
K=K/a;  % 求平均值
subplot(233);imshow(K);title([num2str(a),'次求平均后的图']);

运行结果如下:

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

代码中涉及的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代码中涉及到的imsubtract函数详解:

英文原文如下

注意: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');

运行结果如下:

代码中涉及的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');

运行结果如下:

五、逻辑运算

常见的图像逻辑运算有与(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实现相关推荐

  1. matlab将图像用傅里叶旋转,用matlab实现数字图像处理几个简单例子.doc

    用matlab实现数字图像处理几个简单例子.doc 实验报告实验一 图像的傅里叶变换(旋转性质)实验二 图像的代数运算实验三 filter2 实现均值滤波实验四 图像的缩放朱锦璐04085122实验一 ...

  2. 显著性图matlab,cvpr14_saliency_code 2014上的关于图像显著性区域的检测matlab代码。 271万源代码下载- www.pudn.com...

    文件名称: cvpr14_saliency_code下载  收藏√  [ 5  4  3  2  1 ] 开发工具: matlab 文件大小: 4413 KB 上传时间: 2014-09-07 下载次 ...

  3. 图片缩放 算法 matlab,图像放大算法总结及MATLAB源程序.doc

    图像放大算法总结及MATLAB源程序 1,插值算法(3种): (1)最邻近插值(近邻取样法): 最近插值的的思想很简单就是把这个非整数坐标作一个四舍五入,取最近的整数点坐标处的点的颜色.可见,最邻近插 ...

  4. 基于暗通道优先的单幅图像去雾算法(Matlab)

    基于暗通道优先的单幅图像去雾算法(Matlab) 每一幅图像的RGB三个颜色通道中,总有一个通道的灰度值很低,几乎趋向于0.基于这个几乎可以视作是定理的先验知识,作者提出暗通道先验的去雾算法. ​ 首 ...

  5. 【MATLAB教程案例26】图像特征点提取算法matlab仿真与分析——sift,surf,kaze,corner,BRISK等

    FPGA教程目录 MATLAB教程目录 目录 1.软件版本 2.图像的sift特征提取和matlab仿真 2.1sift理论概述 2.2 matlab仿真

  6. 【图像增强】基于matlab萤火虫算法图像对比度增强【含Matlab源码 2142期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[图像增强]基于matlab萤火虫算法图像对比度增强[含Matlab源码 2142期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方 ...

  7. matlab仿真点目标,sar合成孔径雷达图像点目标仿真报告(附matlab代码).docx

    sar合成孔径雷达图像点目标仿真报告(附matlab代码).docx SAR图像点目标仿真报告徐一凡1SAR原理简介合成孔径雷达(SyntheticApertureRadar,简称SAR)是一种高分辨 ...

  8. 将时间序列转成图像——相对位置矩阵方法 Matlab实现

    目录 1 方法 2 Matlab代码实现 3.结果 [若觉文章质量良好且有用,请别忘了点赞收藏加关注,这将是我继续分享的动力,万分感谢!] 其他: 1.时间序列转二维图像方法及其应用研究综述_vm-1 ...

  9. 二维 Arnold 的图像置乱加密及解密——Matlab实现

    二维 Arnold 的图像置乱加密及解密--Matlab实现 二维 Arnold 的图像置乱加密及解密(1):RGB图像的处理 基于Arnol变换的图像置乱 Arnold变换是俄国数学家Vladimi ...

  10. MATLAB 图像函数(第七章) 图像的代数运算

    1.imabsdiff(x,y)  两幅图像的差的绝对值 Z=imabsdiff(x,y)   对应x中每一个元素减去y矩阵中对应蒜素,然后去绝对值,z的维数与x y相同 <span style ...

最新文章

  1. 【周末阅读】2019自动驾驶十大关键词
  2. UA MATH564 概率论IV 次序统计量例题3
  3. WebForm 基础
  4. (转)去中心化:关于区块链的争论
  5. [Asp.Net Core]Session的使用
  6. STM32 HAL库 时钟芯片RX8025T IIC的读写操作,入过的坑
  7. mac 版本charles安装报错-Charles cannot configure your proxy settings while it is on a read-only volume.
  8. STM32LL库系列教程(一)—— LL库概览及资料
  9. c++_十进制数-10的三进制4位补码是多少?
  10. 如何使用 Firebase 建立短網址?
  11. ES6基本知识及API
  12. 【2020年高被引学者】 孙剑 旷视科技
  13. 斑马打印机Zebra 105SL每次开机就出纸
  14. C#画布的创建和圆的画法
  15. 一些Mac OS X技巧
  16. 华为广告ADS广告位测试ID
  17. html中如何让图片斜显示,如何在偏斜层(CSS)中扭曲背景图像?
  18. 测试LINUX常用命令全集
  19. 记录spacy安装英文包en出现E11004问题的解决方案
  20. 关于转动的一些专业英语名词

热门文章

  1. html 粘贴 word文档,Word2019文档中粘贴文本的两种方式
  2. 2T硬盘安装WIN7分区格式
  3. 蒙特卡洛方法(Monte-Carlo Simulation)
  4. 工业级嵌入式WiFi模块 无线网关智能家居 WiFi音视频传输模块 WiFi转有线网口模块方案
  5. 工业级4g无线路由器_工业级4g无线路由器厂家品牌
  6. 日紫白飞星算法_年、月、日、时紫白飞星法!
  7. 使用Apache OpenNLP探索NLP概念
  8. android平板 双清,什么是小米平板2刷机前的双清
  9. 用友财务系统对接第三方业务系统达到财务业务一体化管理
  10. JZOJ 5750 青青草原播种计划