空域图像增强-图像滤波处理

news2024/11/27 0:36:59

3.图像滤波处理。自选一张图片,完成以下图像处理:①给图像分别添加随机噪声和椒盐噪声;②采用不同的平滑滤波模板进行滤波对比(不同模板、不同尺寸);③采用中值滤波对图像进行滤波对比;④对添加随机噪声的多幅图片取平均。重点对比分析:不同空间域卷积器模板的滤波效果有何不同?空间域卷积器模板的大小的滤波效果有何影响?

图像平滑处理的基本方法:

图像在获取、传输过程中, 受干扰的影响, 会产生噪声. 噪声是一种错误的信号, 干扰正常信号, 造成图像毛糙. 这时就需要对图像进行平滑处理.

图像去噪是一种信号滤波的方法, 目的是保留有用信号, 去除噪音信号.

图像噪声:

噪声干扰一般是随机产生的, 分布不规律, 大小也不规则. 噪声像素的灰度是空间不相关的, 与邻近像素显著不同.

平滑处理的目的:

  1. 模糊: 在提取较大目标前, 先去除太小的细节, 或将目标内的小间断连接起来.
  2. 消除噪声: 改善图像质量, 降低干扰.

   平滑滤波使图像的低频分量增强, 同时削弱高频分量, 用于消除图像中的随机噪声, 起到平滑作用.

图像增强:

·空间域法: 在原图像上直接对像素的灰度值进行处理. 分为两类, 点运算局部运算(邻域有关的空间域运算).

·频域法: 在图像的变换域上进行处理, 增强感兴趣的频率分量, 然后进行反变换, 得到增强后的图像.

空间域滤波增强技术:

图像平滑处理技术:

邻域处理方法: 用某一模板对每个像元与其周围邻域的所有像元进行某种数学运算, 得到该像元新的灰度值. 新的灰度值不仅与该像元的灰度值有关, 还与其邻域内像元的灰度值有关.

邻域处理——模板:

平滑处理的基本方法:

·线性平滑: 对于每一个像素的灰度值用它的邻域值代替, 邻域为N×M, N取奇数.

·非线性平滑: 改进, 取一个阈值, 当像素值与其邻域平均值之间的差大于阈值时, 以均值代替; 反之取其本身值.

·自适应平滑: 物体边缘在不同的方向上有不同的统计特性, 即不同的均值和方差, 为保留一定的边缘信息, 采用自适应法.

空域卷积滤波: 空域卷积滤波借助模板操作.

模板操作:

    模板操作是数字图像处理中常用的一种运算方式. 图像的平滑、锐化以及后面将要讨论的细化、边缘检测等都要用到模板操作.

模板:

· 模板: 所有系数都是正数. 也叫滤波器、掩模、核或窗, 与邻域具有相同维数.

·邻域平均模板所有系数均为1.

· 星号表示为中心元素, 将要处理的元素. 将原图中一个像素的灰度值和相邻近的8个像素值相加, 平均值作为中心值.

卷积运算:

  • 卷积就是做加权求和的过程. 卷积核就是模板, 大小与邻域相同.

· 领域中的每个像素分别与卷积核中的每一个元素相乘, 求和的结果即为中心像素的新值.

· 卷积核中的元素称作加权系数(卷积系数), 系数的大小及排列顺序, 决定了处理的类型. 改变加权系数与符号, 影响新值.

模板操作:

· 邻域运算: 某个像素点的结果不仅和本像素灰度有关, 而且和其邻域点的值有关.

  • 模板运算的数学含义是卷积运算.
  • 卷积是一种用途很广泛的算法, 可用卷积来完成各种处理变换.

边界问题的解决:

  • 忽略图像边界数据, 多采用该方法.
  • 在图像四周复制原图像边界像素的值, 从而使卷积核悬挂在图像四周时可以进行正常的运算.
  • 计算出来的像素值超出范围问题, 对此可简单地将其值置为0或255.

卷积步骤:

·将模板在图中漫游, 并将模板中心与图中某个像素位置重合;

·将模板上系数与模板下对应像素相乘;

·将所有乘积相加;

·将和赋值给图中对应模板中心位置的像素.

3.1 给数字图像添加Gaussian Noise (高斯噪声)和Salt and Pepper Noise (椒盐噪声) 

%给图像添加高斯噪声和椒盐噪声 
I = imread('Durant.png'); 
I_gray = rgb2gray(I); 
%加入Gaussian noise 
I_gray1 = imnoise(I_gray, 'Gaussian', 0, 0.01); 
%加入salt and pepper noise 
%椒盐噪声也称为脉冲噪声, 是图像中常见的一种噪声. 
%它是一种随机出现的白点或者黑点. 
I_gray2 = imnoise(I_gray, 'Salt & Pepper', 0.01); 
%
subplot(1, 3, 1);
imshow(I_gray);
title('原图的灰度图像');
%
subplot(1, 3, 2);
imshow(I_gray1);
title('加入Gaussian noise');
%
subplot(1, 3, 3);
imshow(I_gray2);
title('加入Salt & Pepper noise');

3.2 邻域平均法为图像降噪 

3.2.1 含Gaussian Noise的图像 

%给图片加入高斯噪声, 然后使用邻域平均法降噪
I = imread('Durant.png');
I_gray = rgb2gray(I);
%加入Gaussian Noise
I_gray1 = imnoise(I_gray, 'Gaussian', 0, 0.01);
%模板为3×3, 平滑滤波
image = filter2(fspecial('average', 3), I_gray1) / 255;
%
subplot(1, 3, 1);
imshow(I_gray);
title('原图的灰度图像');
%
subplot(1, 3, 2);
imshow(I_gray1);
title('加入高斯噪声的灰度图像');
%
subplot(1, 3, 3);
imshow(image);
title('3×3模板平滑滤波后的灰度图像');

 

3.2.2 含Salt and Pepper Noise的图像 

%给图片加入椒盐噪声, 然后使用邻域平均法降噪 
I = imread('Durant.png');
I_gray = rgb2gray(I);
%加入Gaussian Noise
I_gray1 = imnoise(I_gray, 'Salt & Pepper', 0.01);
%模板为3×3, 平滑滤波
image = filter2(fspecial('average', 3), I_gray1) / 255;
%
subplot(1, 3, 1);
imshow(I_gray);
title('原图的灰度图像');
%
subplot(1, 3, 2);
imshow(I_gray1);
title('加入高斯噪声的灰度图像');
%
subplot(1, 3, 3);
imshow(image);
title('3×3模板平滑滤波后的灰度图像');

中值滤波法: 

· 邻域平均法: 属于低通滤波的处理方法, 它在抑制噪声的同时使图像变得模糊. 即图像的细节(例如边缘信息)被削弱.

  • 中值滤波: 抑制噪声又要保持细节. 将窗口中奇数个数据按大小顺序排列, 处于中心位置的那个数作为处理结果. 中值滤波法是一种非线性信号处理方法, 1971年提出并应用在一维信号分析中, 被图像信号处理引用. 在一定条件下, 克服线性滤波器(如邻域平滑滤波等)的模糊, 对滤除脉冲干扰及图像扫描噪声最为有效. 不需要统计特性, 使用方便. 但是对一些细节多, 特别是点、线、尖顶细节多的图像不宜采用中值滤波法.
  • 中值滤波就是用一个奇数点的移动窗口, 将窗口中心点的值用窗口内各点的中值代替. 假设窗口内共有5点, 其值分别为200、80、90、110和120, 那么此窗口内各点的中值即为110. 平均滤波为120.

中值滤波的性质:

· 中值滤波器不影响阶跃函数斜坡函数. 周期小于窗口长度一半脉冲受到抑制, 另外三角函数的顶部变平.

  • 二维中值滤波的窗口形状和尺寸对滤波效果影响较大, 不同的图像内容和不同的应用要求, 往往采用不同的窗口形状和尺寸. 窗口尺寸: 先用3×3, 再用5×5, 窗口尺寸不断增大, 直到满意为止.

窗口的选择:

  • 窗口: 线状、方形、圆形、十字形及圆环等.
  • 方形或圆形窗口: 缓变的较长轮廓线物体为宜.
  • 十字形窗口: 含有尖顶物体适用, 窗口大小则以不超过图中最小有效物体的尺寸为宜.
  • 不宜采用中值滤波的情况: 图像中点、线、尖角细节较多.

中值滤波主要特性:

  • 输入不变性: 在窗口内单调增加或单调减少的序列、一些周期性的序列, 中值滤波存在不变性, 输出信号仍保持输入信号不变.
  • 对大的边缘高度, 中值滤波较邻域均值好; 对于较小边缘高度, 两种滤波差别很小.
  • 是非线性的.
  • 在抑制图像随机脉冲噪声方面有效, 运算速度快, 便于实时处理.
  • 去除孤立线或点干扰, 保留空间清晰度较平滑滤波好, 但对高斯噪声则不如平滑滤波.

3.3 数字图像的中值滤波法 

3.3.1 含Salt and Pepper Noise的图像

%给图片加入椒盐噪声, 然后使用中值滤波法降噪 
I = imread('Durant.png');
I_gray = rgb2gray(I);
%加入salt and pepper noise
I_gray1 = imnoise(I_gray, 'Salt & Pepper', 0.01);
%中值滤波是一种非线性数字滤波器技术, 用于降噪. 
%medfilter2(image, [n, n]): 
%image: 需要过滤的图像 
%[n, n]: 模板大小为n×n 
%medfilter2为二维中值滤波函数, 使用前须将图像灰度化. 
image = medfilt2(I_gray1, [3, 3]);
%
subplot(1, 3, 1);
imshow(I_gray);
title('原图的灰度图像');
%
subplot(1, 3, 2);
imshow(I_gray1);
title('加入椒盐噪声的灰度图像');
%
subplot(1, 3, 3);
imshow(image);
title('3×3模板中值滤波后的灰度图像');

 

 3.3.2 含Gaussian Noise的图像 

%给图片加入高斯噪声, 然后使用中值滤波法降噪 
I = imread('Durant.png');
I_gray = rgb2gray(I);
%加入salt and pepper noise
I_gray1 = imnoise(I_gray, 'Gaussian', 0, 0.01);
%中值滤波是一种非线性数字滤波器技术, 用于降噪. 
%medfilter2(image, [n, n]): 
%image: 需要过滤的图像 
%[n, n]: 模板大小为n×n 
%medfilter2为二维中值滤波函数, 使用前须将图像灰度化. 
image = medfilt2(I_gray1, [3, 3]);
%
subplot(1, 3, 1);
imshow(I_gray);
title('原图的灰度图像');
%
subplot(1, 3, 2);
imshow(I_gray1);
title('加入高斯噪声的灰度图像');
%
subplot(1, 3, 3);
imshow(image);
title('3×3模板中值滤波后的灰度图像');

 3.4 对多幅含Gaussian Noise的图像取平均(降噪) 

3.4.1 5幅图片取平均 

%对多幅添加高斯噪声的图片取平均
I = imread('Durant.png');
I_gray = rgb2gray(I);
%对原图的灰度图像I_gray分别添加5次Gauss噪声. 
%Gaussian noise: EX = 0, 
temp1 = imnoise(I_gray, 'Gaussian', 0, 0.01);
temp2 = imnoise(I_gray, 'Gaussian', 0, 0.01);
temp3 = imnoise(I_gray, 'Gaussian', 0, 0.01);
temp4 = imnoise(I_gray, 'Gaussian', 0, 0.01);
temp5 = imnoise(I_gray, 'Gaussian', 0, 0.01);
%先将temp1, ..., temp5矩阵转换为double类型, 
%这样temp1, ..., temp5相加后, 求和结果数值不会失真. 
G = double(temp1) + double(temp2) + double(temp3) + double(temp4) + double(temp5);
%将矩阵G中的数据除以5, 相当于5幅图片取平均. 
G = G / 5;
%将矩阵G的元素转换为uint8类型. 
G = uint8(G);
%显示原图的灰度图像. 
subplot(1, 2, 1);
imshow(I_gray);
title('原图的灰度图像');
%显示取平均后的图片.
subplot(1, 2, 2);
imshow(G); 
title('5幅含噪图片取平均');

 3.4.2 10幅图片取平均 

%对多幅添加高斯噪声的图片取平均
I = imread('Durant.png');
I_gray = rgb2gray(I);
%获取图片矩阵的行数和列数, 创建一个height×width的零矩阵G. 
[height, width, channels] = size(I_gray);
G = zeros(height, width);
%对原图的灰度图像I_gray分别添加5次Gauss噪声. 
for i = 1 : 10
    G = G + double(imnoise(I_gray, 'Gaussian', 0, 0.01));
end
%将矩阵G中的数据除以10, 相当于10幅图片取平均. 
G = G / 10;
%将矩阵G的元素转换为uint8类型. 
G = uint8(G);
%显示原图的灰度图像. 
subplot(1, 2, 1);
imshow(I_gray);
title('原图的灰度图像');
%显示取平均后的图片.
subplot(1, 2, 2);
imshow(G); 
title('10幅含噪图片取平均');

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/51840.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GEE开发之Modis_NPP数据分析和获取

GEE开发之Modis_NPP数据分析和获取1.NPP2.MOD系列和MYD系列区别3.MOD17A3H_v006(500m/1年)4.MOD17A3HGF_v006(500m/1年)5.MOD17A3HGF_v061(500m/1年)6.MYD17A3H_v006(500m/1年)6.1 MYD17A3H下的指数6.2 遥感影像查看7.MYD17A3HGF_v061(500m/1年)8.MYD17A3HGF_v006(500m/1年)9.N…

行业应用之无限可能,就在亚马逊云科技re:Invent

在2022亚马逊云科技re:Invent全球大会Adam Selipsky“如何借助云的力量,在未知领域抓住机遇并茁壮成长”的主题演讲中,除了阐述主要的产品升级以外,亚马逊云科技还致力于打造面向特定行业或者特定应用场景的解决方案,以帮助客户快…

【Mongoose应用和文件上传】一.Express框架访问MongDB数据库;二.node实现文件上传

目录 一.Express框架访问MongDB数据库 1.目的: (1)mongoose模块的使用 (2)学会代码的封装:dao层、service层、接口层 (3)MVC设计思想:M(Model&#xff0…

5.RabbitMQ高级特性

5.RabbitMQ高级特性 为什么不是RabbitMQ的事务? 这是从官网直接翻译过来的:网络可能以不太明显的方式出现故障,而且检测某些故障需要时间。因此,向套接字编写协议帧或一组帧(例如发布的消息)的客户端不能假定消息已经到达服务器…

【库存控制】基于蜜蜂算法优化库存控制附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

如何将dwg文件转成kml文件

第一步: 在CAD中将DWG另存为 DXF,如下: 注意:(中文乱码)为了打开的中文不出现乱码,保存DXF文件请选择如下的选项 第二步: 下载安装Bigemap GIS Office download.bigemap.com/bmset…

12.01 M4-UART-IT实验

1.使用CORTEX-M4核,实验中断实验和串口实验结合--->上传到CSDN 按键触发时,LED灯状态取反,并且在串口工具打印一句话 KEY1按键按下,LED1状态取反,串口工具打印key1 down!!!! 主要代码gpio.c void HAL_GPI…

C++ 语言学习 day14 复习 (6)

1.stack / queue(栈&#xff0c;队列) stack 构造函数 stack<int> v; 入栈 v.push(i); 出栈 v.pop(); 是否为空 v.empty() queue 构造函数 queue<int> v; 入队 v.push(i); 出队 v.…

下载axios时出现很多npm ERR错误:npm ERR! code ERESOLVEnpm ERR! ERESOLVE could not resolve

出现的下载错误&#xff1a; npm ERR! code ERESOLVE npm ERR! ERESOLVE could not resolvenpm ERR! npm ERR! while resolving: vue/eslint-config-standard6.1.0npm ERR! Found: eslint-plugin-vue8.7.1 npm ERR! node_modules/eslint-plugin-vue npm ERR!dev eslint-plugin-…

毕业设计案例:Python实现疫苗接种数据库管理系统

一、序言 那一年过年前&#xff0c;疫情开始爆发&#xff0c;对全国人民的生活和工作造成了严重的影响。但凭借着国家强盛的实力&#xff0c;新冠疫苗也很快的被技术人员研发出来&#xff0c;人们通过接种新冠疫苗来抵御新冠病毒的危害。本次通过接种新冠疫苗的这个数据统计&a…

(一)正则表达式——基础概念

&#xff08;一&#xff09;正则表达式——基础概念 概括 用来处理字符串的规则。除了对象、函数&#xff0c;我们操作得最多的就是字符串 正则的两大作用&#xff1a; 验证是否匹配把匹配到的内容捕获到量词元字符*特殊元字符点. &#xff1a;除了\r \n以外的字符 普通元字符h…

【OpenCV 例程 300篇】247. 特征检测之最大稳定极值区域(MSER)

『youcans 的 OpenCV 例程300篇 - 总目录』 【youcans 的 OpenCV 例程 300篇】247. 特征检测之最大稳定极值区域&#xff08;MSER&#xff09; 1. 最大稳定极值区域&#xff08;MSER&#xff09; 最大稳定极值区域&#xff08;MSER-Maximally Stable Extremal Regions&#xf…

RNN/LSTM (三) 学习torchtext源码

文章目录包装dataset构建词库1.列举数据源2. 遍历数据3. 列举特殊符号4. 构建词库 Field::vocab_clsload_vectors构建读指针 data.BucketIterator在上一文&#xff0c;我们学习了基于torchtext编写lstm模型的实践案例&#xff0c;本文将结合上文案例&#xff0c;深入案例代码&a…

Python自动化之Excel利器openpyxl

文章目录前言一、Workbook1.1 读取xlsx文件1.2 保存二、Sheet2.1 创建Sheet2.2 遍历Sheet2.3 移动Sheet2.4 删除Sheet2.5 插入、删除行列三、单元格3.1 获取某个单元格3.2 遍历单元格3.3 获取范围单元格3.4 单元格赋值3.5 合并/解除合并单元格3.6 单元格数据格式3.7 单元格数字…

[附源码]Python计算机毕业设计Django儿童早教课程管理系统论文2022

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

算法设计与分析 SCAU19180 集合划分问题

19180 集合划分问题 时间限制:1000MS 代码长度限制:10KB 提交次数:0 通过次数:0 题型: 编程题 语言: G;GCC;VC;JAVA Description 教材课后习题2-8 n个元素的集合{1,2,…,n}可以划分若干个非空子集。例如&#xff0c;当n4时&#xff0c;集合{1,2,3,4}可以划分为15个不同的非…

微信小程序开发学习文档(万字总结,一篇搞定前端开发)

一、微信小程序简介 与网页开发不同&#xff0c;小程序有自己的一套标准开发模式&#xff1a;-申请小程序开发账号-安装小程序开发工具-创建和配置小程序项目 1.1 创建第一个小程序 1.2 主界面的5个组成部分 1.3小程序项目的基本构成 pages 用来存放所有小程序的页面&#xf…

Java并发编程—Thread类中的start()方法如何启动一个线程【原理分析】?

一、java线程的介绍&#xff1a; 在java的开发过程中&#xff0c;很多铁子对于java线程肯定不感到陌生&#xff0c;作为java里面重要的组成部分&#xff0c;这里就从如何创建一个线程给大家进行分析&#xff1b; 二、相关知识引入&#xff1a; ​ 之前我了解过&#xff0c;j…

2022年浙江省中职组“网络空间安全”赛项模块B--Windows渗透测试

2022年中职组浙江省“网络空间安全”赛项 B-1:Windows渗透测试一、竞赛时间 420分钟 共计7小时 吃饭一小时 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 第①阶段: 单兵模式系统渗透测试 任务一: Windows操作系统渗透测试 任务二: Linux操作系统渗透测试 任务三…

[附源码]Python计算机毕业设计SSM科技项目在线评审系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…