Matlab学习8-图像处理之线性与非线性锐化滤波、非线性平滑滤波

2023-11-05

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

空域滤波增强

  • 卷积原理
    • 多维连续卷积
  • 线性平滑滤波
    • 领域平均法、选择平均法、Wiener滤波
  • 非线性平滑滤波
    • 中值滤波
    • 序统计滤波
  • 线性锐化滤波
    • Laplacian算子
  • 非线性锐化滤波
    • Prewitt算子
    • Sobel算子
    • Log算子

Matlab学习8-图像处理之线性与非线性锐化滤波
序统计滤波、Laplacian算子、梯度法


一、序统计滤波

效果
在这里插入图片描述

代码

%序统计滤波器
img=imread("img/eight.tif");
subplot(2,3,1),imshow(img),xlabel("原始图像");

img1=imnoise(img,'salt & pepper',0.1);
subplot(2,3,2),imshow(img1),xlabel("椒盐噪声图像");

mask=[  0 1 0
        1 1 1
        0 1 0];
subplot(2,3,3),imshow(mask),xlabel("滤波模板");

K1=ordfilt2(img1,3,mask);
subplot(2,3,4),imshow(uint8(K1)),xlabel("中值滤波图像");

K2=ordfilt2(img1,1,mask);
subplot(2,3,5),imshow(uint8(K2)),xlabel("最小值滤波图像");

K3=ordfilt2(img1,5,mask);
subplot(2,3,6),imshow(uint8(K3)),xlabel("最大值滤波图像");

二、拉普拉斯算子

效果
在这里插入图片描述

代码

%拉普拉斯算子实例
img=imread("img/eight.tif");
subplot(3,3,1),imshow(img),xlabel("原始图像");
mask1=fspecial('laplacian',0);
L1=filter2(mask1,img);
subplot(3,3,2),imshow(uint8(L1)),text(-14,285,'负中心系数的水平垂直模板滤波图像');
subplot(3,3,3),imshow(uint8(double(img)-L1)),xlabel('负中心系数的水平垂直模板减法叠加图像');

mask2=-mask1;
L2=filter2(mask2,img);
subplot(3,3,4),imshow(uint8(L2)),text(-14,285,'正中心系数的水平垂直模板滤波图像');
subplot(3,3,5),imshow(uint8(double(img)+L2)),xlabel('正中心系数的水平垂直模板加法叠加图像');

mask3=[ 1  1  1
        1 -8  1
        1  1  1];
L3=filter2(mask3,img);
subplot(3,3,6),imshow(uint8(L3)),text(-28,285,'负中心系数的水平垂直对角模板滤波图像');
subplot(3,3,7),imshow(uint8(double(img)-L3)),xlabel('负中心系数的水平垂直对角模板减法叠加图像');

mask4=-mask3;
L4=filter2(mask4,img);
subplot(3,3,8),imshow(uint8(L4)),text(-28,285,'正中心系数的水平垂直对角模板滤波图像');
subplot(3,3,9),imshow(uint8(double(img)+L4)),xlabel('正中心系数的水平垂直对角模板加法叠加图像');

三、梯度滤波

效果
在这里插入图片描述

代码

%梯度滤波
img=imread("img/img.jpg");
subplot(2,3,1),imshow(img),xlabel("原始图像");

img=double(img);
[Gx,Gy]=gradient(img);
G=sqrt(Gx.*Gx+Gy.*Gy);

img1=G;
subplot(2,3,2),imshow(uint8(img1)),xlabel("梯度法滤波图像");


img2=img;
K=find(G>=7);
img2(K)=G(K);
subplot(2,3,3),imshow(uint8(img2)),xlabel("第一种情况的滤波图像");

img3=img;
K=find(G>=7);
img3(K)=255;
subplot(2,3,4),imshow(uint8(img3)),xlabel("第二种情况的滤波图像");

img4=G;
K=find(G<=7);
img4(K)=255;
subplot(2,3,5),imshow(uint8(img4)),xlabel("第三种情况的滤波图像");

img5=img;
K=find(G<=7);
img5(K)=0;
Q=find(G>=7);
img5(Q)=255;
subplot(2,3,6),imshow(uint8(img5)),xlabel("第四种情况的滤波图像");

点击获取源码
https://gitee.com/CYFreud/matlab/tree/master/image_processing/demo8_220425

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Matlab学习8-图像处理之线性与非线性锐化滤波、非线性平滑滤波 的相关文章

  • Matlab下降低图像质量

    问候 我正在尝试找到一种简单的方法来处理图像 以便将其质量从 8 位降低到 3 位 实现这一目标的最简单方法是什么 干杯 如果要线性缩放 只需将每个像素值除以 255 7 即 如果原始图像存储在矩阵 I 中 则让低分辨率图像 J I 255
  • 在 MATLAB 中验证输入的最佳实践

    在验证 MATLAB 函数中的输入时 什么时候使用 inputParser 比使用断言更好 或者还有其他更好的工具可用吗 我个人发现使用 inputParser 不必要地复杂 对于 Matlab 始终需要检查 3 项内容 存在 类型和范围
  • 用于读取csv写入数组的c++程序;然后操作并打印到文本文件中(已经用 matlab 编写)

    我想知道是否有人可以帮助我 我正在尝试构建一个程序 从 csv 文件中读取大小未知的浮点数大数据块 我已经在 MATLAB 中编写了此代码 但想要编译和分发此代码 因此转向 C 我只是在学习并尝试阅读本文以开始 7 5 19892 4 23
  • matlab中简单正弦波的傅里叶变换

    我尝试显示简单正弦波的频谱 因为我们知道具有固定频率的单个正弦波必须在其频谱中出现峰值我编写了这段代码 但我无法得到这个峰值我的代码中有什么问题 clc nsteps 200 number of signal elements in tim
  • MATLAB 符号替换

    我知道在 MATLAB 中如果声明了 syms x y f x 2 y 2 grad gradient f 然后grad会存储值 2 x 2 y 如果我想评估梯度 2 2 I use subs f x y 2 2 这返回 4 4 我正在编写
  • 如何从列中创建对称矩阵?

    例如 我想转动以下列 90 175 600 650 655 660 代入矩阵 90 175 600 650 655 660 175 600 650 655 660 655 600 650 655 660 655 650 650 655 66
  • 可以避免迭代元胞数组时的“s{1} 烦恼”吗?

    The s 1 标题的 烦恼 指的是下面的 for 块中的第一行 for s some cell array s s 1 unpeel the enclosing cell do stuff with s end This s s 1 业务
  • UDP接收和发送Matlab

    我目前正在努力从外部设备接收数据包 然后将数据发送到另一个设备 我有一个工作 Simulink 模型 但我不知道如何在 Matlab 中对其进行编码 Matlab 中 UDP 接收块的参数如下图所示UDP 接收参数 https i stac
  • 当 MATLAB 变得非常非常忙时,如何中断它?

    我正在运行一个长时间的模拟MATLAB http en wikipedia org wiki MATLAB我意识到我需要停下来重新运行 然而 MATLAB 确实对这种计算很感兴趣 并且它停止了响应 如何在不终止 MATLAB 的情况下中断此
  • 如何调整x轴和y轴的大小

    如何调整 x 轴和 y 轴的大小 我想要什么 更具体 3900 60 30 0 60 120 180 3600 我做了什么 a 0 0 1 10000 plot a 我应该写什么才能按预期调整 x 和 y 轴的大小 EDIT 我不想 390
  • Python 中的 eig(a,b) 给出错误“需要 1 个位置参数,但给出了 2 个”

    根据https docs scipy org doc numpy 1 15 0 user numpy for matlab users html https docs scipy org doc numpy 1 15 0 user nump
  • 如何从一个清晰的例子计算二维图像中的吉布斯能量

    我有一个关于矩阵的有趣问题 在吉布斯分布中 吉布斯能量U x 可以计算为 这是所有可能的派系 C 上的派系势 Vc x 的总和 右图 团 c 被定义为 S 中站点的子集 x 蓝色像素的邻域是左图中黄色像素的邻居 其中每对不同的站点都是邻居
  • 了解 Matlab 中的 DEL2 函数以便用 C++ 对其进行编码

    为了用 C 编写 DEL2 matlab 函数 我需要了解该算法 我已经成功地为不在边界或边缘上的矩阵元素编写了函数 我已经看过几个有关它的主题 并通过输入 edit del2 或 type del2 来阅读 MATLAB 代码 但我不明白
  • matlab 中的 for 或 while 循环

    我刚刚开始在编程课的 matlab 中使用 for 循环 基本的东西对我来说很好 但是我被要求 使用循环创建一个 3 x 5 矩阵 其中每个元素的值是其行号其列号除以行号和列号之和的幂 例如元素 2 3 的值为 2 3 2 3 1 6 那么
  • 如何在 MATLAB 的 for 循环中读取多个图像?

    我已将结果分段放在一个文件夹中 这些需要在 for 循环中读取并在循环中进一步处理 我尝试阅读如下 for i 1 10 file name dir strcat C Users adminp Desktop dinosaurs im im
  • Matlab-如何在曲线上绘制切线

    我在 matlab 中绘制了一个图表 plot x y 我的图表有不同的斜率 我如何在每个斜率上绘制切线并计算斜率的系数 如果您没有用于绘制点的显式函数 您可以使用有限差分 http en wikipedia org wiki Finite
  • matlab mex 文件和 C++ dll (Windows)

    我有一个带有 Test 类的 DLL 标题 class MY EXPORT Test public int doit const string str 和来源 int Test doit const string str return in
  • Matlab Mex文件编译

    我正在尝试编译一个 mex 文件以在 matlab 中使用套接字连接 问题是它总是说我没有安装sdk或编译器 但我已经安装了 Visual Studio 2010 Express Visual Studio 2012 Express Vis
  • MATLAB 滚动图

    我有一个脑电图数据库 我想绘制它 数据库是一个19 1000 134的矩阵 其中 19 是通道数 在第一种方法中 我只使用一个渠道 1000 个样本大小 采样率为 500 Hz 时为 1000 个点 即 2 秒数据 134 epochs的数
  • MATLAB 中最有效的矩阵求逆

    在 MATLAB 中计算某个方阵 A 的逆矩阵时 使用 Ai inv A should be the same as Ai A 1 MATLAB 通常会通知我这不是最有效的求逆方法 那么什么是更有效率的呢 如果我有一个方程系统 可能会使用

随机推荐

  • 带注释 实验8-2-3 删除字符 (20分)

    实验8 2 3 删除字符 20分 本题要求实现一个删除字符串中的指定字符的简单函数 函数接口定义 void delchar char str char c 其中char str是传入的字符串 c是待删除的字符 函数delchar的功能是将字
  • Datawhale宣传团队名单公示!

    Datawhale团队 公示 Datawhale宣传团队名单 感谢今年八月所有参与 AI夏令营 的宣传大使 是你们 让更多的同学了解到了开源学习 也让更多人看到了Datawhale 星星之火 可以燎原 社区的发展离不开每一位贡献者 让我们从
  • 浏览器渲染进程的线程有哪些

    浏览器的渲染进程的线程总共有五种 1 GUI渲染线程 负责渲染浏览器页面 解析HTML CSS 构建DOM树 构建CSSOM树 构建渲染树和绘制页面 当界面需要重绘或由于某种操作引发回流时 该线程就会执行 注意 GUI渲染线程和JS引擎线程
  • ueditor百度富文本编辑器粘贴后html丢失class和style样式

    问题 项目经理从123在线编辑上排版好的文章 粘贴到项目的编辑器上 样式完全乱了 排版是这样的 复制到ueditor后的格式 这天差地别呀 于是打开代码模式 发现section的属性全没了 但是 span的属性还是有的 猜测ueditor有
  • Vue样式设置的几种方式

    1 直接使用class设置样式 代码 结果 2 通过v bind绑定class设置样式 1 使用json形式 代码 结果 2 使用数组形式 代码 结果 注意 通过第二种数组的方式 也可以通过三元表达式进行class的判断 此处不再赘述 3
  • 数学建模算法与应用(司守奎版)python 代码实现

    引言 在准备九月份的华为杯 入门选择了司守奎老师的教材 数学建模算法与应用 书中仅提供了lingo和matlab的版本 但是python的数据处理能力更加出色 因此考虑在学习的过程中将代码全部用python实现 第一章 线性规划 基础代码
  • 用 Rust 编写一个简单的词法分析器

    词法分析是编译器和解释器的第一个环节 相对而言也比较简单 词法分析器 有时也称为单元生成器 tokenizer 或者扫描器 scanner 将源代码转换为词法单元 这个过程称为词法分析 本文代码设计复刻自 用Go语言自制解释器 词法分析器一
  • 力扣每日一题——最大间距

    题目链接 class Solution public int maximumGap vector
  • Nodejs全局配置

    在软件的安装 目录下自己新建两个文件夹 node gobal 和 node cache 进入cmd命令行 输入一下的命令设置全局模块的安装路径到node gobal文件夹 缓存到node cache文件夹 npm config set pr
  • C语言-指针变量作为函数参数

    指针变量作为函数参数 函数的参数类型不仅仅是整型 浮点型 字符型也可以是指针类型 它的作用是将一个变量的地址传到另外一个函数中 常见的是传数组的首地址 文章目录 指针变量作为函数参数 一 示例1 二 示例2 三 示例3 提示 以下是本篇文章
  • LeetCode 811. Subdomain Visit Count(哈希表的简单运用,c++,python)

    A website domain like discuss leetcode com consists of various subdomains At the top level we have com at the next level
  • android手机如何到导出电话号码,手机通讯录怎么导入到新手机?这招太给力了!...

    手机通讯录怎么导入到新手机 这招太给力了 2020年01月01日 14 41作者 网络编辑 宏伟 分享 手机通讯录怎么导入到新手机 很多人在第一次接触iPhone的时候 往往会遇到老手机通讯录联系人转移的问题 望着通讯录长长的名单 如果一个
  • debug跳出循环_Debug中经常遇到的一些问题

    在调试中经常遇到的问题 1 这个变量在什么地方被改变了呢 或是这个变量在什么时候才变成了某个值 2 程序运行中报了一条message 这是在什么地方报出来的 3 我想调试在嵌套的循环中外面一层第XXX条 里面一层第YYY条时候的处理 一次次
  • Raspberry Pi 托管 Flask 服务器监控植物生长数据

    使用 Raspberry Pi 3 Model B 和 Arduino 的简单项目 从传感器读取数据并将其显示在 Flask 网站上 所需材料 简述 项目是关于使用土壤湿度传感器和 DHT 11 温度和湿度传感器监测花朵 还包括蜂鸣器 因为
  • 真的太重要了,面试出现的概率达到了 99%!!!对于哈希表的知识(建议收藏)

    哈希表 1 哈希表的引入 2 哈希冲突 1 概念 2 避免哈希冲突负载因子调节 3 哈希冲突的解决方法 重重重点 3 Java 类集的关系 1 哈希表的引入 前言 顺序结构 以及 平衡树 中 元素关键码与其存储位置之间没有对应的关系 因此在
  • 利用百度api实现ocr识别发票

    一 准备工作 1 百度智能云申请一个文字识别的api 里面每个月有1000次调用测试应该够用 2 一个springboot项目 二 主要代码 pom依赖引入
  • conda 安装各种包失败报错:failedCondaHTTPError: HTTP 000 CONNECTION FAILED An HTTP error occurred when

    1 在Anaconda Prompt安装所需要的的包时 出现这种错误 我们会发现 我们也使用了清华的镜像了 还是失败 重复失败 怎么办 conda install absl py Solving environment failed Con
  • 一篇文章掌握整个JVM,JVM超详细解析!!!

    JVM 先想想一些问题 1 我们开发人员编写的Java代码是怎么让电脑认识的 2 为什么说java是跨平台语言 3 Jdk和Jre和JVM的区别 4 为什么要学习JVM 深入学习JVM 1 JVM运行时数据区 2 解析JVM运行时数据区 2
  • TVM 结构学习总结

    最近对深度学习编译器TVM学习了一下 了解各部分的功能 根据自己的理解进行总结 如有不正确请指正 话不多说上脑图 TVM为解决各种深度学习训练框架的模型部署到各种硬件而诞生 下图是TVM经典技术栈图 编译器层次抽象 编译器前端 接收C C
  • Matlab学习8-图像处理之线性与非线性锐化滤波、非线性平滑滤波

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 序统计滤波 二 拉普拉斯算子 三 梯度滤波 前言 空域滤波增强 卷积原理 多维连续卷积 线性平滑滤波 领域平均法 选择平均法 Wiener滤波 非线性平滑