当前位置: 首页 > news >正文

数字图像处理实验记录四(图像的空间域增强-平滑处理)

前言:要是是实验报告赶工的话,建议总结上网抄,或者重构我的总结,仅供学习参考,不要照抄

文章目录

  • 一、基础知识
    • 1,噪声
    • 2,椒盐噪声
    • 3,高斯噪声
    • 4,滤波器
    • 5,均值滤波器
    • 6,中值滤波器
    • 7,滑动窗口
  • 二、实验要求
  • 三、实验记录
  • 四、结果展示
    • 1,添加噪声:
    • 2,均值滤波器过滤椒盐噪声:
    • 3,中值滤波器过滤椒盐噪声:
    • 4,均值滤波器过滤高斯噪声:
    • 5,中值滤波器过滤高斯噪声:
  • 五、反思总结与收获
    • 1,滤波器对不同噪声的效果:
    • 2,模板大小不同,处理效果有何不同?

一、基础知识

1,噪声

噪声在图像上常表现为一引起较强视觉效果的孤立像素点或像素块。它以无用的信息形式出现,扰乱图像的可观测信息。通俗的说就是噪声让图像不清楚。
一般在我们获取图像(也就是照相)的时候,可能会遇到一些电磁干扰,让我们的图像变得麻麻的。当然在图像传播的过程中也会出现这种问题。

2,椒盐噪声

椒盐噪声就是在图像中,一些像素点的灰度值突然变得很离谱,如下图:
在这里插入图片描述
在这里插入图片描述

3,高斯噪声

图像集体像素发生了随机变化,不过像素值符合正态分布。高斯噪声的平均值为零,即噪声的总体均值为图像的亮度平均值的偏移。
如下图:
在这里插入图片描述
在这里插入图片描述

4,滤波器

在我看来,滤波器像是一个漏斗,如下图这样:在这里插入图片描述
漏斗上面的大小就是滤波器的模板大小,最后输出就是过滤后的结果

5,均值滤波器

先求出装进漏斗里面的数的和,输出其平均值

6,中值滤波器

将漏斗中的数排序,输出大小在中间的那个数

7,滑动窗口

这个是一个有点意思的知识点。总之我们要知道一点,滤波器总是一直在图像里面滑过来滑过去。
假设从1开始,lim是最大地方的边界,滤波器规模为f_size,我们可以对其位置进行分析:
在这里插入图片描述
一般目标i应该在滤波器的中心位置好些,这样可以得到滤波器的横坐标左边界应该是i-f_size/2,右边界应该是i+f_size/2:
在这里插入图片描述
当然我们要考虑是否超出边界,这样就有左边界为1,i-f_size/2两者中较大的数,右边界为i+f_size/2,lim两者中较小的数。
纵坐标同理。

二、实验要求

读入一幅256 级灰度的数字图像
图像的平滑滤波处理
1)对原图像分别加入高斯噪声、椒盐噪声。
2)利用邻域平均法,分别采用33,55, 77, 99模板对加噪声图像进行平滑处理,显示原图像、加噪图像和处理后的图像。
3)利用中值滤波法,分别采用33,55, 77, 99模板对加噪声图像进行去噪处理,显示原图像、加噪图像和处理后的图像。
4)比较各种滤波方法和滤波模板的处理结果

三、实验记录

读入图像并添加噪声:

clc;
clear;
figure('NumberTitle', 'off', 'Name','噪音图');
% 实验五 噪声处理
I = imread('tp.jpg');subplot(2,2,1.5);imshow(I);
xlabel('(a)原始图像');Salt = imnoise(I,'salt',0.02);subplot(2,2,3);imshow(Salt);
xlabel('(b)椒盐噪声图像');gau = imnoise(I,'gaussian',0,0.01);
subplot(2,2,4);imshow(gau);
xlabel('(c)高斯噪声图像');

滤波器函数my_filter:

function [value] = my_filter(S,filter_size,kind)
% 我的滤波处理器 输入:图S,滤波器大小:m,滤波器种类kind:0,均值滤波;1,中值滤波if(~exist('kind','var'))kind = 0;  % 如果未出现该变量,则对其进行赋值
end
[rows,cols,z] = size(S);%获取图的大小value = -1*ones(rows,cols,z);%初始化结果
for i = 1:rowsfor j = 1:colsfor k = 1:z% 获取滑动窗口的范围row_start = max(1, i - floor(filter_size / 2));row_end = min(rows, i + floor(filter_size / 2));col_start = max(1, j - floor(filter_size / 2));col_end = min(cols, j + floor(filter_size / 2));% 提取滑动窗口内的像素值window = S(row_start:row_end, col_start:col_end, k);if(kind == 0)avg_value = mean(window(:));%mean 获取平均值elsewindow = sort(window);avg_value = window(floor(round(length(window)/2)));endvalue(i,j,k) = uint8(avg_value);                                     endend
endvalue = uint8(value);end

主程序代码:

clc;
clear;
figure('NumberTitle', 'off', 'Name','噪音图');
% 实验五 噪声处理
I = imread('tp.jpg');subplot(2,2,1.5);imshow(I);
xlabel('(a)原始图像');Salt = imnoise(I,'salt',0.02);subplot(2,2,3);imshow(Salt);
xlabel('(b)椒盐噪声图像');gau = imnoise(I,'gaussian',0,0.01);
subplot(2,2,4);imshow(gau);
xlabel('(c)高斯噪声图像');
figure('NumberTitle', 'off', 'Name','均值椒盐');
filter_size = [3,5,7,9];
for i=1:4I_Salt = my_filter(Salt,filter_size(i),0);subplot(2,2,i);imshow(I_Salt);title([num2str(filter_size(i)),'x',num2str(filter_size(i)),'均值滤波器']);
end
figure('NumberTitle', 'off', 'Name','中值椒盐');
for i=1:4I_Salt = my_filter(Salt,filter_size(i),1);subplot(2,2,i);imshow(I_Salt);title([num2str(filter_size(i)),'x',num2str(filter_size(i)),'中值滤波器']);
end
figure('NumberTitle', 'off', 'Name','均值高斯');for i=1:4I_gau = my_filter(gau,filter_size(i),0);subplot(2,2,i);imshow(I_gau);title([num2str(filter_size(i)),'x',num2str(filter_size(i)),'均值滤波器']);
end
figure('NumberTitle', 'off', 'Name','中值高斯');for i=1:4I_gau = my_filter(gau,filter_size(i),1);subplot(2,2,i);imshow(I_gau);title([num2str(filter_size(i)),'x',num2str(filter_size(i)),'中值滤波器']);
end

四、结果展示

1,添加噪声:

在这里插入图片描述

2,均值滤波器过滤椒盐噪声:

在这里插入图片描述

3,中值滤波器过滤椒盐噪声:

在这里插入图片描述

4,均值滤波器过滤高斯噪声:

在这里插入图片描述

5,中值滤波器过滤高斯噪声:

在这里插入图片描述

五、反思总结与收获

1,滤波器对不同噪声的效果:

椒盐噪声是突然产生一个特别大的值。用中值滤波器就在一堆像素中选适中的,可以有效过滤掉椒盐。而一个太大的值对均值有着很大的影响,所以用均值滤波器过滤椒盐噪声效果不佳。
高斯噪声的均值为0,所以当我们用均值过滤器的时候,就可以很好得将高斯噪声减小甚至去除。但是由于图像中的像素都改变了,中值滤波器过滤出来的值也有很大可能是一个离谱值,所以用中值滤波器过滤高斯噪声效果不佳。

2,模板大小不同,处理效果有何不同?

根据实验结果可知,滤波器模板越大,对噪声的处理效果越好,但是相应的图像会越模糊。因为模板越大,滤波器对指定像素的采样范围越大,这样减小了噪声对图像的影响,但是由于参与像素过多,指定像素与周围像素的差距减小,或者说是同一个窗口里每个像素之间的差距减小,这样图像就会变模糊

相关文章:

数字图像处理实验记录四(图像的空间域增强-平滑处理)

前言:要是是实验报告赶工的话,建议总结上网抄,或者重构我的总结,仅供学习参考,不要照抄 文章目录 一、基础知识1,噪声2,椒盐噪声3,高斯噪声4,滤波器5,均值滤…...

怎么使用LightPicture开源搭建图片管理系统并远程访问?【搭建私人图床】

文章目录 1.前言2. Lightpicture网站搭建2.1. Lightpicture下载和安装2.2. Lightpicture网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 现在的手机越来越先进,功能也越来越多,而手机…...

pytorch_神经网络构建4

文章目录 循环神经网络LSTM词嵌入skip-Gram模型N-Gram模型词性预测RNN循环神经网络的基础模块实现RNN识别图片RNN时间序列预测词向量模块词向量运用N-Gram模型lstm词性预测 循环神经网络 这个网络主要用来处理序列信息,之前处理图片时大部分是分析图片的结构信息, 什么是序列信…...

外骨骼机器人和人形机器人概览

前言:一点思考 外骨骼机器人和人形机器人都曾随着一些爆品的出现火热过一段时间,但总感觉当前技术条件还不成熟,真正能落地的应用场景不多。马斯克在擎天柱发布会上被问到人形机器人的落地与前景问题时并没有给出明确答案,只是用…...

Java面试题:链表-反转链表

问题描述 给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。 如当输入链表{1,2,3}时,经反转后,原链表变为{3,2,1},…...

el-upload实现上传文件夹

背景&#xff1a;如图一所示&#xff0c;最下面有一个黄色上传文件按钮&#xff0c;为手动上传而且上传区域有上传文件和上传文件夹的区分 所以需要在点击了上传文件夹做特殊处理使得el-upload可以上传文件夹 一、template区域 <el-uploadclass"upload-file"dra…...

京东数据平台(京东数据分析)2023年9月京东冰箱行业品牌销售排行榜!

鲸参谋监测的京东平台9月份冰箱市场销售数据已出炉&#xff01; 9月份&#xff0c;大家电行业整体下滑&#xff0c;而冰箱作为大家电市场中的重点品类&#xff0c;受行业趋势变动的影响&#xff0c;冰箱销售市场也同样下滑。鲸参谋数据显示&#xff0c;9月在京东平台上&#xf…...

【Excel】WPS单元格快速转换表格字母大小写

使用WPS Office打开表格&#xff0c;选择需要处理的单元格或单元格区域。 依次点击「会员专享」选项卡 —>「智能工具箱」。 再点击「格式」—>「大小写」&#xff0c;选择一种大小写转换方式即可。...

【java】【重构一】分模块开发设计实战

目录 一、创建项目 1、先创建一个空项目 2、设置项目SDK等 二、创建父模块 选择springboot 1、创建父模块parent 2、删除多余文件&#xff0c;只保留pom.xml 3、修改pom.xml 4、将部分公共依赖加入到pom 三、创建实体类子模块entity 1、创建实体类子模块entity 2、…...

Cocos Creator3.8 项目实战(十)使用 protobuf详细教程

在 Cocos Creator 中使用 protobuf.js 库可以方便地进行协议的序列化和反序列化。 下面是使用 protobuf.js 的详细说明&#xff1a; 一、protobuf环境安装 1、安装 npm protobuf环境安装安装需要使用 npm 命令进行&#xff0c;因此首先需要安装 npm 。 如果你还没安装 npm …...

第七章:最新版零基础学习 PYTHON 教程—Python 列表(第八节 -在 Python 中获取列表作为用户的输入)

我们经常遇到需要将数字/字符串作为用户输入的情况。在本文中,我们将了解如何使用Python从用户处获取输入列表。 目录 使用Loop在 Python 中获取用户输入的列表 Python3...

Simple RPC - 02 通用高性能序列化和反序列化设计与实现

文章目录 概述设计实现通用的序列化接口通用的序列化实现【推荐】 vs 专用的序列化实现专用序列化接口定义序列化实现 概述 网络传输和序列化这两部分的功能相对来说是非常通用并且独立的&#xff0c;在设计的时候&#xff0c;只要能做到比较好的抽象&#xff0c;这两部的实现…...

简单秒表设计仿真verilog跑表,源码/视频

名称&#xff1a;简单秒表设计仿真 软件&#xff1a;Quartus 语言&#xff1a;Verilog 代码功能&#xff1a; 秒表显示最低计时为10ms&#xff0c;最大为59:99&#xff0c;超出返回00&#xff1a;00 具有复位、启动、暂停三个按键 四个数码管分别显示4个时间数字。 演示…...

【发布】Photoshop ICO 文件格式插件 3.0

备注&#xff1a;本文原文首发于博客园&#xff1a; https://www.cnblogs.com/hoodlum1980/p/17766287.html 【简介】 Photoshop ICO 插件是为 Photoshop 开发的功能扩展插件&#xff0c;使得 Photoshop 可以直接读写 ICO 格式文件。由于 Photoshop 具有强大的像素位图编辑功…...

负载均衡、代理和动静分离的战略

一、Nginx简介 1.1 概述 Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理服务器,特点是占有内存少,并发能力强,能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数 。 1.2正向代理与反向代理 1.2.1正向代理 正向代理:如果把局域网外的 Internet 想象…...

Gitlab用户角色权限Guest、Reporter、Developer、Master、Owner

Gitlab用户在组中有角色权限&#xff1a;Guest、Reporter、Developer、Master、Owner Gitlab权限管理 Guest&#xff1a;可以创建issue、发表评论&#xff0c;不能读写版本库 Reporter&#xff1a;可以克隆代码&#xff0c;不能提交&#xff0c;QA、PM可以赋予这个权限 Deve…...

C#上位机序列9: 批量读写+事件广播+数据类型处理

一、源码结构&#xff1a; 二、运行效果&#xff1a; 三、源码解析 1. 读取配置文件及创建变量信息&#xff08;点位名称&#xff0c;地址&#xff0c;数据类型&#xff08;bool/short/int/float/long/double&#xff09;&#xff09; 2. 异步任务处理&#xff1a;读任务&…...

科技资讯|2023全球智能手表预估出货1.3亿块,智能穿戴提升AI功能

根据集邦咨询公布的最新报告&#xff0c;受全球经济低迷影响&#xff0c;2023 年全球智能手表出货量预估为 1.3 亿块。苹果以超过 30% 的份额领先&#xff0c;其次是三星&#xff08;接近 10%&#xff09;、华为、Garmin、Fitbit 等。 报告认为苹果、三星和华为等主要智能手表…...

技术架构之术

架构特征 1、结构性特征 易理解、可复用、可移植、可扩展、可配置、可维护、可测试 2、运行时特征 可靠性、稳定性、高安全、可伸缩、易用性、可用性、高性能、可观测 3、交付性特征 高效率、高适配、标准化、灵活性、易定制、统一性、开放性 如何开展我们的架构工作 价值分…...

【自用重要】概率论中θ和θ尖的区别【计算时的一般方法】

θ就相当于x&#xff0c;是一个值。 θ尖就相当于X&#xff0c;是一个量。 在做分布函数的时候&#xff0c;最好把θ尖换成Z的形式&#xff0c;因为他们都是量&#xff0c;这样比较好看。 在做不等式的时候&#xff0c;一般把量放在中间进行计算&#xff0c;因为随机变量有分…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用&#xff0c;通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试&#xff0c;通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...