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

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

文章目录

  • 一、基础知识
    • 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,模板大小不同,处理效果有何不同?

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

点云cloudpoint生成octomap的OcTree的两种方法以及rviz可视化

第一种:在自己的项目中将点云通过ros的topic发布,用octomap_server订阅点云消息,在octomap_server中生成ocTree 再用rviz进行可视化。 创建工作空间,记得source mkdir temp_ocotmap_test/src cd temp_ocotmap_test catkin_make…

elementUI 中 date-picker 的使用的坑(vue3)

目录 1. 英文显示2. format 与 value-format 无效3. date-picker 时间范围4. 小结 1. 英文显示 <el-date-pickerv-model"dateValue"type"date"placeholder"选择日期"></el-date-picker>解决方案&#xff1a; 引用 zhCn <script&g…

vue3如何实现页面跳转?

首先、给元素绑点击事件 其次 写跳转路由 总结&#xff1a;一定不要忘了引入Router

RabbitMQ官方案例学习记录

官方文档&#xff1a;RabbitMQ教程 — RabbitMQ (rabbitmq.com) 一、安装RabbitMQ服务 直接使用docker在服务器上安装 docker run -it -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.12-management 安装完成后&#xff0c;访问15672端口&#xff0c;默认用户…

Python高频面试题——如何在字符串中删除指定字符,掌握strip()、replace()和re.sub ()正确使用方法!

关于python删除字符串是面试python测试开发工程师的一个经典问题。问题很简单&#xff0c;但是一下子就能测试出来被面试者是否能够熟练的进行python相关编码工作&#xff01; 对于有些临时抱佛脚的同学来讲&#xff0c;一看删除&#xff0c;很自然就说用remove 、del相关方法…

如何在电脑上设置新的蓝牙耳机

本文介绍如何将蓝牙耳机连接到Windows或Mac电脑。 如何在Windows上设置新的蓝牙耳机 蓝牙耳机的设置过程因平台而异&#xff0c;但以下是Windows 11的步骤&#xff1a; 1、选择“开始”&#xff0c;然后在搜索框中输入蓝牙&#xff0c;以显示蓝牙和其他设备。 2、选择添加设…

RabbitMQ中的核心概念和交换机类型

目录 一、RabbitMQ相关概念二、Exchange类型三、RabbitMQ概念模型总结 一、RabbitMQ相关概念 Producer&#xff1a;生产者&#xff0c;就是投递消息的一方。生产者创建消息&#xff0c;然后发布到RabbitMQ中。消息一般可以包含两个部分&#xff1a;消息体和附加消息。 消息体…

Unity之ShaderGraph如何实现UV抖动

前言 今天我们通过噪波图来实现一个UV抖动的效果。 如下图所示&#xff1a; 关键节点 Time&#xff1a;提供对着色器中各种时间参数的访问 UV&#xff1a;提供对网格顶点或片段的UV坐标的访问。可以使用通道下拉参数选择输出值的坐标通道。 SimpleNoise&#xff1a;根据…

Ubuntu20.4 设置代理

主要是涉及2个代理 涉及apt 可以在、/etc/apt/apt.conf 中进行修改 在系统全局可以在/etc/profile中进行修改

2023Jenkins连接k8s

首先配置k8s config文件 1.方式获取k8s密钥 cat .kube/config 2.导出方式或者密钥 kubectl config view --raw > k8s-config-admin pipeline {agent {kubernetes {yaml apiVersion: v1kind: Podmetadata:labels:some-label: devopsspec:containers:- name: dockerimage: d…

Python —— UI自动化之Page Object模式

1、Page Object模式简介 1、二层模型 Page Object Model&#xff08;页面对象模型&#xff09;, 或者也可称之为POM。在UI自动化测试广泛使用的一种分层设计 模式。核心是通过页面层封装所有的页面元素及操作&#xff0c;测试用例层通过调用页面层操作组装业务逻辑。 1、实战 …

弹出框,使用树结构查询数据

效果如下: 描述:希望点击某个按钮,弹出一个窗口,然后通过下拉框,点击下拉框里面的组织信息,然后查询对应组织的成员对象列表,并展示到表格中 HTML代码(最主要的就是树的那个): <el-dialog :visible.sync="TesteePage.showDialog" width="70%&quo…

codeforces (C++ Morning)

题目&#xff1a; 翻译&#xff1a; 思路&#xff1a; 1、要将四位数显示&#xff0c;每次操作可以选择移动光标&#xff08;移动到相邻的位置&#xff09;或者显示数字&#xff0c;计算最少需要多少次操作。 2、用flag表示当前光标位置&#xff0c;sum为记录操作次数&#…

vue 插槽 作用域插槽

vue 插槽 作用域插槽 **创建 工程&#xff1a; H:\java_work\java_springboot\vue_study ctrl按住不放 右键 悬着 powershell H:\java_work\java_springboot\js_study\Vue2_3入门到实战-配套资料\01-随堂代码素材\day05\准备代码\10-插槽-作用域插槽 vue --version vue crea…

一款简单漂亮的WPF UI - AduSkin

前言 经常会有同学会问&#xff0c;有没有好看简单的WPF UI库推荐的。今天就给大家推荐一款简单漂亮的WPF UI&#xff0c;融合多个开源框架组件&#xff1a;AduSkin。 WPF是什么&#xff1f; WPF 是一个强大的桌面应用程序框架&#xff0c;用于构建具有丰富用户界面的 Windo…

【JAVA-Day49】Java LinkedList集合详解

Java LinkedList集合详解 摘要引言Java LinkedList集合详解一、什么是LinkedList集合1.1 链表数据结构1.2 双向链表1.3 动态大小1.4 插入和删除元素1.5 适用场景 二、LinkedList集合的使用2.1 创建 LinkedList 集合、添加元素、遍历元素2.2 在指定位置插入元素2.3 获取指定位置…

聊聊分布式架构10——Zookeeper入门详解

目录 01ZooKeeper的ZAB协议 ZAB协议概念 ZAB协议基本模式 消息广播 崩溃恢复 选举出新的Leader服务器 数据同步 02Zookeeper的核心 ZooKeeper 的核心特点 ZooKeeper 的核心组件 选举算法概述 服务器启动时的Leader选举 服务器运行期间的Leader选举 03ZooKeeper的…

【vue+nestjs】qq第三方授权登录【超详细】

项目场景&#xff1a; 前端使用vue3ts 后端使用nestjs 1.申请appId,appKey 1.进入qq互联官网。创建应用 特别注意 1.在填写网站回调域时,需要你线上真实能访问的。不然审核不通过。我的回调地址是前端路由地址 2.如果你想本地调试&#xff0c;回调到你的线上地址。你可以在本…

面试算法31:最近最少使用缓存

题目 请设计实现一个最近最少使用&#xff08;Least Recently Used&#xff0c;LRU&#xff09;缓存&#xff0c;要求如下两个操作的时间复杂度都是O&#xff08;1&#xff09;。 get&#xff08;key&#xff09;&#xff1a;如果缓存中存在键key&#xff0c;则返回它对应的值…

基于Django与深度学习的股票预测系统 计算机竞赛

文章目录 0 前言1 课题背景2 实现效果3 Django框架4 数据整理5 模型准备和训练6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于Django与深度学习的股票预测系统 ** 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff…