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

news2024/11/19 20:34:21

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

文章目录

  • 一、基础知识
    • 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:rows
    for j = 1:cols
         for 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 获取平均值
            else
                window = sort(window);
                avg_value = window(floor(round(length(window)/2)));
            end
            value(i,j,k) = uint8(avg_value);                                     
        end
        
    end
end

value = 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:4
    I_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:4
    I_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:4
    I_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:4
    I_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.coloradmin.cn/o/1112332.html

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

相关文章

[云原生1.] Docker容器的简单介绍和基本管理

1. Docker容器的基本概述 1.1 简介 Docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源。Docker是在Linux容器里运行应用的开源工具,是一种轻量级的“虚拟机”。Docker 的容器技术可以在一台主机上轻松为任何应用创建一个轻量级…

Unity之ShaderGraph如何实现无贴图水球效果

前言 我们今天来实现一个无贴图水球效果,如下图所示: 主要节点 UVSplit:可以获得UV在RGB三个颜色分别的分量 Remap:重映射节点 基于输入 In 值在输入In Min Max的 x 和 y 分量之间的线性插值,返回输入Out Min Max…

爬虫三大库

Requests库安装 Requests库的作用是请求网站获得网页数据 在pycharm中安装方式如下&#xff1a; 选择settings 选择Project Interpreter&#xff0c;单击号添加第三方库 BeautifulSoup库按同样方式安装。 Requests库 pycharm返回结果为<Response [200]>,说明请求网址成…

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

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

了解 Elasticsearch 自动生成的文档 _id:重复是一个问题吗?

Elasticsearch 中自动生成的文档 ID 当你在未指定 ID 的情况下对文档建立索引时&#xff0c;Elasticsearch 会自动为该文档生成唯一的 ID。 该 ID 是 Base64 编码的 UUID&#xff0c;由多个部分组成&#xff0c;每个部分都有特定的用途。 ID 生成过程针对索引速度和存储效率进…

互联网Java工程师面试题·Java 总结篇·第九弹

目录 75、阐述 JDBC 操作数据库的步骤。 76、Statement 和 PreparedStatement 有什么区别&#xff1f;哪个性 能更好&#xff1f; 77、使用 JDBC 操作数据库时&#xff0c;如何提升读取数据的性能&#xff1f;如何提升更新数据的性能&#xff1f; 78、在进行数据库编程时&a…

git 查看本地秘钥

第一步&#xff1a; 1&#xff0c;打开终端或者命令行窗口&#xff0c;输入一下命令&#xff1a; cd ~/.ssh进入ssh目录 2&#xff0c;查看该目录下的所有文件&#xff0c;输入以下命令: ls -al该命令将显示ssh目录下的所有文件&#xff0c;包括秘钥文件和配置文件,如果不存…

100天掌握网络安全知识点!

1.网络安全是什么 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一、是市场需求量高&#xff1b; 二、则是发展相对成熟…

C++ Primer 第十一章 关联容器 重点解读

1 map自定义排序 #include <map> #include <iostream> #include <functional> using namespace std; int main() {function<bool(pair<int, int>, pair<int, int>)> cmp [&](pair<int, int> p1, pair<int, int> p2) -&g…

设计模式-综合应用(一)

介绍 使用jQuery做一个模拟购物车的示例 用到的设计模式 工厂模式 单例模式装饰器模式 观察者模式状态模式 模板方法模式 代理模式 UML类图

leetcode - 319. Bulb Switcher

Description There are n bulbs that are initially off. You first turn on all the bulbs, then you turn off every second bulb. On the third round, you toggle every third bulb (turning on if it’s off or turning off if it’s on). For the ith round, you toggl…

Apollo的搭建

Apollo的搭建 1.环境准备 jdk : 1.8 mysql 5.6.5 2.下载 两种方式&#xff1a; a.下载源码自己编译&#xff08;需要修改源码的可以选择&#xff09; 源码&#xff1a;https://github.com/ctripcorp/apoll b.编译好的直接使用 地址&#xff1a;Releases apol…

人人开源前后端分离开源项目启动流程(超详细)

renren-security是一个轻量级的&#xff0c;前后端分离的Java快速开发平台&#xff0c;能快速开发项目并交付【接私活利器】采用SpringBoot、Shiro、MyBatis-Plus、Vue3、TypeScript、Element Plus、Vue Router、Pinia、Axios、Vite框架&#xff0c;开发的一套权限系统&#xf…

Vue2基础知识(一) 认识Vue

&#x1f48c; 所属专栏&#xff1a;【Vue2】&#x1f600; 作 者&#xff1a;长安不及十里&#x1f4bb;工作&#xff1a;目前从事电力行业开发&#x1f308;目标&#xff1a;全栈开发&#x1f680; 个人简介&#xff1a;一个正在努力学技术的Java工程师&#xff0c;专注基础和…

原创!—混合灰狼层次结构的自适应麻雀搜索算法GWHASSA

麻雀搜索算法&#xff08;SSA&#xff09;是薛建凯等人[1]提出的一种群体智能优化算法,是受麻雀觅食和躲避捕食者行为启发而设计出的算法。该算法于2020年首次提出&#xff0c;具有局部搜索能力强、调整参数少等特点&#xff0c;已成功应用于CT图像的现场检测、电池堆参数的优化…

分布式和微服务

问题分析&#xff1a; 简单来说&#xff0c;分布式是一组通过网络进行通信&#xff0c;并且为了完成共同的计算任务的计算机节点组 成的系统。 分布式系统的设计理念&#xff0c;其实是来自于小型机或者大型机的计算能力的瓶颈和成本的 增加。 在集中式系统里面&#xff0c;要…

FL Studio21最新中文破解进阶高级完整版安装下载教程

目前水果软件最版本是FL Studio21&#xff0c;它让你的计算机就像是全功能的录音室&#xff0c;大混音盘&#xff0c;非常先进的制作工具&#xff0c;让你的音乐突破想象力的限制。喜欢音乐制作的小伙伴千万不要错过这个功能强大&#xff0c;安装便捷的音乐软件哦&#xff01;如…

ThreadLocal源码解密

1 背景 作为一只懒懒地程序员,其实我是不太爱看源码的,晦涩、深奥、难懂、耗费时间等等,就觉得不是我这种能力平平地小老百姓能吃得消的,但现实比人强,记得曾经我就被不懂原理的情况下乱用ThreadLocal给毒打了。 犹记得当时在一个JSF服务中的责任链的校验场景中需要在源…

使用vcpkg管理依赖第三库

文章目录 使用vcpkg管理依赖第三库vcpkg安装vcpkg经典模式使用从仓库列表搜索依赖项从某个基线版本的列表中查询某个依赖项信息安装依赖库 vcpkg清单模式的使用vcpkg清单模式的使用例子说明 使用vcpkg管理依赖第三库 vcpkg 有两种操作模式&#xff1a;经典模式和清单模式。 在…

36 机器学习(四):异常值检测|线性回归|逻辑回归|聚类算法|集成学习

文章目录 异常值检测箱线图z-score 保存模型 与 使用模型回归的性能评估线性回归正规方程的线性回归梯度下降的线性回归原理介绍L1 和 L2 正则化的介绍api介绍------LinearRegressionapi介绍------SGDRegressor 岭回归 和 Lasso 回归 逻辑回归基本使用原理介绍正向原理介绍损失…