用matlab编程实现对图像的均值滤波,中值滤波和拉普拉斯算子锐化

2023-11-10

1 均值滤波

  • 均值滤波:用包含在滤波掩模邻域内的像素的平均灰度值去代替每个像素点的值。
  • 用途:用于模糊处理和减少噪声。
    盒滤波器:

    加权平均滤波器
% 均值滤波
clc;close all;clear all;
I = rgb2gray(imread('fig.png'));
F = imnoise(I,'gaussian',0, 0.02); % 加入高斯噪声
% F = imnoise(I,'salt & pepper',0.02); %加入椒盐躁声
v = 1/9*[1 1 1;1 1 1;1 1 1];  % 盒滤波器
v2 = 1/16*[1 2 1;2 4 2;1 2 1];  %  加权平均滤波器
[m, n] = size(I);
G = zeros(m,n);
H = zeros(m,n);
for x=1:m
    for y = 1:n
        if (x==1||y==1||x==m||y==n)
            G(x,y)=F(x,y);
            H(x,y)=F(x,y);
        else  % 对图像进行卷积处理
            G(x,y)=v(1,1) * F(x-1, y-1) + v(1,2) * F(x-1, y)+v(1,3) *F(x-1, y+1)...
                +v(2,1) * F(x, y-1)+v(2,2)* F(x, y)+v(2,3) * F(x, y+1)...
                +v(3,1) * F(x+1, y+1) + v(3,2) * F(x+1, y)+v(3,3)* F(x+1, y+1);
            H(x,y)=v2(1,1) * F(x-1, y-1) + v2(1,2) * F(x-1, y)+v2(1,3) * F(x-1, y+1)...
                +v2(2,1) * F(x, y-1)+v2(2,2)* F(x, y)+v2(2,3) * F(x, y+1)...
                +v2(3,1) * F(x+1, y+1) + v2(3,2) * F(x+1, y)+v2(3,3) * F(x+1, y+1);
        end
    end
end
figure
subplot(221)
imshow(I);
title('原始图像');
subplot(222)
imshow(uint8(F));
% title('加入椒盐噪声后的图像');
title('加入高斯噪声后的图像');
subplot(223)
imshow(uint8(G));
title('均值滤波后的图像');
subplot(224)
imshow(uint8(H));
title('加权均值滤波后的图像');

2 中值滤波

  • 中值滤波:先将掩模内欲求的像素及其领域的像素值排序(升序或降序),确定出中值,并将中值赋予该像素点。
  • 强迫突出的亮点(暗点)更象它周围的值,以消除孤立的亮点(暗点)。
  • 二维中值滤波的窗口形状和尺寸对滤波效果影响较大,不同的图像内容和不同的应用要求,往往采用不同的窗口形状和尺寸。常用的二维中值滤波窗口有线状、方形、圆形、十字形以及圆环形等。窗口尺寸一般先用3×3,再取5×5逐渐增大,直到滤波效果满意为止。就一般经验来讲,对于有缓变的较长轮廓线物体的图像,采用方形或圆形窗口为宜。对于包含有尖顶物体的图像,用十字形窗口,而窗口大小则以不超过图像中最小有效物体的尺寸为宜。如果图像中点、线、尖角细节较多,则不宜采用中值滤波。
  • 主要功能:使拥有不同灰度的点看起来更接近于它的邻近值。
  • 用途:去除椒盐噪声
% 中值滤波
clc;close all;clear all;
I = rgb2gray(imread('fig.png'));
% F = imnoise(I,'gaussian',0, 0.002);
F = imnoise(I,'salt & pepper',0.06);
[m, n] = size(I);
G = zeros(m,n);
for x=1:m
    for y = 1:n
        if (x==1||y==1||x==m||y==n)
            G(x,y)=F(x,y);
        else  % 选出第5大的数
            H = sort([F(x-1,y-1), F(x-1,y),F(x-1,y+1),F(x,y),... 
                F(x,y+1),F(x+1,y-1),F(x+1,y),F(x+1,y+1)]);
            G(x,y)=median(H);
        end
    end
end
figure
subplot(221)
imshow(I);
title('原始图像');
subplot(222)
imshow(uint8(F));
title('加入椒盐噪声后的图像');
subplot(223)
imshow(uint8(G));
title('中值滤波后的图像');

3 拉普拉斯算子锐化

  • 拉普拉斯微分算子强调图像中灰度的突变,弱化灰度慢变化的区域。这将产生一幅把浅灰色边线、突变点叠加到暗背景中的图像。
  • 对二元图像函数f(x,y)的拉普拉斯变换定义为:

Δ 2 f = [ f ( x + 1 , y ) + f ( x − 1 , y ) + f ( x , y − 1 ) + f ( x , y + 1 ) ] − 4 f ( x , y ) \Delta^2 f = [f(x+1,y) + f(x-1,y)+f(x,y-1)+f(x,y+1)]-4f(x,y) Δ2f=[f(x+1,y)+f(x1,y)+f(x,y1)+f(x,y+1)]4f(x,y)

对应的掩模为:

微分掩模的所有系数之和为0以保证灰度恒定区域的响应为0

将原始图像和拉普拉斯图像叠加在一起的简单方法可以保护拉普拉斯锐化处理的效果,同时又能复原背景信息。因此拉普拉斯算子用于图像增强的基本方法如下:

clc;close all;clear all;
F = rgb2gray(imread('fig.png')); 
[m,n]=size(F); 
G=zeros(m,n); 
H=zeros(m,n); 
w=[0,-1,0;-1,4,-1;0,-1,0]; 
for x=1:m     
    for y=1:n         
        if (x==1||y==1||x==m||y==n)            
            G(x,y)=F(x,y);         
        else
            G(x,y)=w(1,1)*F(x-1,y-1)+w(1,2)*F(x-1,y)+w(1,3)*F(x-1,y+1)...                 
                +w(2,1)*F(x,y-1)+w(2,2)*F(x,y)+w(2,3)*F(x,y+1)...                 
                +w(3,1)*F(x+1,y+1)+w(3,2)*F(x+1,y)+w(3,3)*F(x+1,y+1);                     
        end
    end
end
figure 
subplot(121) 
imshow(F) 
title('原始图像'); 
subplot(122) 
imshow(uint8(G)); 
title('拉普拉斯算子处理后的图像');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用matlab编程实现对图像的均值滤波,中值滤波和拉普拉斯算子锐化 的相关文章

  • Unused import statement

    Unused import statement 未使用的导入语句 File菜单 invalidate caches restart选项 点击即可
  • V-REP仿真之Python读取关节当前角度和驱动ur机械臂关节旋转

    V REP仿真之Python读取关节当前角度和驱动ur机械臂关节旋转 在建立与机械臂的通信之后 接着需要读取和驱动ur机械臂的关节角度 代码如下 coding UTF 8 import sim import time import sys
  • 2018看得见的未来:人工智能何去何从?

    2018看得见的未来 系列报道现在继续 本期重磅推出由云报和O Reilly Media共同策划的2018人工智能发展趋势 本系列报道将邀请内业的重量级厂商 专家 大咖 一起畅想2018年IT领域的大事小情 热点焦点 也欢迎有兴趣的厂商都参
  • el-upload自定义上传文件显示进度条

    el upload自定义上传文件时需要显示进度条 但使用http request会覆盖默认的上传行为 on progress也就不生效了 所以可以自定义上传的实现 效果图 功能实现 按钮
  • 微信小程序根据经纬度查看地图

    var longitude 101 234567 var latitude 202 123456 wx openLocation longitude Number longitude 经度或纬度必须是number类型 latitude Nu
  • linux关闭防火墙和打开防火墙

    永久打开或则关闭 chkconfig iptables on chkconfig iptables off 即时生效 重启后还原 service iptables start service iptables stop
  • XXX.axf: Error: L6218E: Undefined symbol xxx (referred from xxxx.o).

    MKD 报错 linking LCD axf Error L6218E Undefined symbol EnZK referred from ht128x64 o LCD axf Error L6218E Undefined symbol
  • 【shell】 =~的使用

    如下 read p need compile OEM installatoin package yes no IS OEM if z IS OEM then IS OEM No fi if Yes IS OEM yes IS OEM the
  • win10配置 tesseract 中文字符识别

    下载win10下的tesseract的安装包 https digi bib uni mannheim de tesseract 下载后双击进行安装 这里因为我们要识别中文字符 所以在安装界面中需要进行额外的语言勾选 展开Additional
  • centos7清理yum源

    1 删除起始的源 cd etc yum repos d rm f echo delete error 2 卸载yum rpm qa grep yum xargs I rpm e nodeps 3 下载最新的yum程序的rpm包 http m
  • 【HTML】不来看看HTML5的WebStorage吗

    HTML 不来看看HTML5的WebStorage吗 面试官 讲讲sessionStorage和localStorage的区别 回答 en 一个有限制 一个无 技术选型 做一个离线数据的缓存 回答 好像都能实现 随便用 引言 内容速递 看了
  • eval(function(p,a,c,k,e,d){e=function(c)加解密

    1 2 3 4 5 6 7 8
  • 初学STM32之看门狗

    初学STM32之看门狗 一 看门狗概述 1 什么是看门狗 单片机在工作中常常会受到来自外界电磁场的干扰 造成程序跑飞 而陷入死循环 程序的正常运行被打断 使得系统无法正常工作 造成整个系统陷入停滞状态 所以为了对单片运行状态进行实时监测 便
  • HTML <section> 标签

    实例 文档中的区段 解释了 PRC section h1 PRC h1 p The People s Republic of China was born in 1949 p section 定义和用法 section 标签定义文档中的节
  • Difference Between LiDAR and RADAR——LiDAR和RADAR的不同

    Difference Between LiDAR and RADAR 原文连接 https www differencebetween com difference between lidar and vs radar 翻译 RADAR和L
  • ifconfig命令不存在command not found

    ifconfig命令不存在command not found场景 刚刚装linux centos mini 想用远程工具链接 首先得查看一下ip吧 结果发现 ifconfig命令不存在 一个命令不存在 无非两种情况 情况一 不在环境变量中
  • 【云原生

    目录 四 通过 k8s 实现滚动更新 4 3 自定义滚动更新策略 取值范围 建议配置 总结 测试 自定义策略 重建式更新 Recreate 五 生产环境如何实现蓝绿部署 5 1 什么是蓝绿部署 5 2 蓝绿部署的优势和缺点 优点 缺点 5
  • 高精度光照传感器和普及型光照传感器的参数对比

    高精度光照传感器的技术参数 测量范围 0 200000lux 光谱范围 400 750nm 测量精度 2 分辨率 1lux 信号输出 电压型 供电电压 7V 24V DC 输出信号 0 4 2V 光照值 Lux Klux以上输出电压 0 4
  • 转置矩阵(Transpose of a matrix)

    定义 给定一个矩阵 A 将矩阵的行列互换得到的新矩阵称为转置矩阵 记为 转置矩阵的行列式不变 即 转置矩阵由下列动作建立 将 A 的横行写为 的纵列 将 A 的纵列写成 的横行 形式来说 m n 矩阵 A 的转置矩阵是 n m 矩阵 即 例

随机推荐

  • 2023华为OD机试真题【端口合并/贪心算法】

    题目描述 有 M 1 lt M lt 10 个端口组 每个端口组是长度为N 1 lt N lt 100 的整数数组 如果端口组间存在2个及以上不同端口相同 则认为这2个端口组 互相关联 可以合并 第一行输入端口组个数M 再输入M行 每行逗号
  • linux中使用nfs共享文件

    NFS需要使用远程过程调用 RPC 也就是说 我们并不是只要启动NFS 还需要启动RPC这个服务 服务器端 CentOS 7 4 ip 172 16 0 1 共享 tmp目录 共享 data目录给172 16 0 2 安装nfs yum i
  • Android中View绘制流程以及invalidate()等相关方法分析

    转载请注明出处 http blog csdn net qinjuning 前言 本文是我读 Android内核剖析 第13章 View工作原理总结而成的 在此膜拜下作者 同时真挚地向渴望了解 Android 框架层的网友 推荐这本书 希望你
  • WMS中Binder案例

    WMS中Binder案例 1 FWK层中AIDL形式 1 1 服务端实现Stub 1 2 客户端获取proxy 2 紧密相关SurfaceFlinger android12 release 1 FWK层中AIDL形式 Android 接口定
  • 示波器信号波形数据处理分析(周期、占空比、Skew等等) 软件函数分享,二次开发SDK

    这个作者我们一起学习是pianzi
  • 人工智能安全的核心观点:何时、为何、何事以及如何

    我们创立 Anthropic 是因为我们相信人工智能的影响可能与工业和科学革命的影响相当 但我们不相信它会顺利进行 而且我们还相信 这种程度的影响可能很快就会到来 也许在未来十年内 这种观点听起来难以置信或夸大其词 并且有充分的理由对此表示
  • 性能测试之cpu的性能诊断

    一 CPU基本知识 测试中CPU诊断是重要的性能指标 CPU是代码打交道最多的硬件之一 要想一个CPU工作就需要提供一些指令和数据 一般放在内存中 其中指令一般都是由代码编译而来 数据也是代码中需用到的 如int char 程序需要执行的部
  • Python中如何查看Pandas DataFrame对象列的最大值、最小值、平均值、标准差、中位数等

    如何查看Pandas DataFrame对象列的最大值 最小值 平均值 标准差 中位数等 我们举个例子说明一下 先创建一个dataframe对象df 内容如下 1 使用sum函数获得函数列的和 用法 df sum 2 使用max获取最大值
  • Qt中的主窗口QMainWindow

    GUI应用程序都有一个主窗口 虽然前面讲到的QWidget组件也可以定义生成主窗口 但是Qt还定义了一个专门用于实现主窗口的类QMainWindow 为什么 跟QDialog一样的道理 主窗口具有许多主窗口特有的元素组件 为了程序的复用性
  • 编程常用快捷键和doc命令

    常用快捷键 win r 打开运行 cmd命令行窗口 win e打开我的电脑 ctrl shift esc打开任务管理器 doc命令 打开doc win r 输入cmd shift右键任意文件夹选择在此处运行powershell窗口 在资源管
  • 【网站数据统计解决方案】快速了解pv、uv、spm、utm_source、埋点等知识

    前言 在访问阿里网站或者一些博客网站的时候 发现地址后面跟了 spm 1010 2135 3001 4477这种参数 以及在访问国外网站的时候会跟 utm source google utm medium cpc utm campaign
  • 番茄ToDo帮助文档

    说明 2020年7月开始使用 番茄ToDo App 目标是通过手机App这样的工具提升效率 养成习惯 提升自我管理能力 番茄ToDo帮助文档 什么是番茄ToDo 番茄工作法是简单易行的时间管理方法 是由弗朗西斯科 西里洛于1992年创立的一
  • 如何去除discuz的powered by discuz!代码

    这串代码 很多人都在问这个问题 今天在这里分享一下 方法 步骤 首选在FTP里面找到源文件夹template default common header common htm 右击编辑 2 打开后找到里面的这串代码 3 将后面的 Power
  • 创建和分析二维桁架和梁结构研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码及讲解 1 概述 创建和分析二维桁架和梁结构的研究可以涉及
  • python 实现二叉树

    本文不涉及二叉树概念的详细讲解 而着重利用 python 实现二叉树 其中穿插代码讲解 其它数据结构 链表 栈和队列 目录 节点 构造树 层遍历 添加节点 先序遍历 中序遍历 后序遍历 测试 在链表中 一个节点只能有一个后继节点和前驱节点
  • find grep 寻找文件字符

    如果你只想在 r 类型的文件中寻找特定字符串 可以使用以下命令 grep ri universal include r i 忽略大小写 r递归所有文件 如果你只想查找文件名包含 universal 且扩展名为 r 的文件 而不是文件内容 则
  • torch.cuda.is_available()为false的解决办法

    一 问题 在进行torch进行开发的过程中 我们习惯性的会使用pip install torch这样的方式来安装torch的包 其实这样的是安装CPU的torch 在导入包 执行下面代码的过程中 会出现结果为false import tor
  • win10通过conda安装pytorch gpu

    1 安装anaconda 到官网下载最新版的anaconda 下载对应的windows版本 地址 anaconda官网 下载后直接安装 安装完成后配置环境变量 具体可以百度anaconda安装说明 安装完成后 打开cmd 输入conda v
  • Nginx HTTPS实践

    Nginx HTTPS实践 文章目录 Nginx HTTPS实践 1 HTTPS基本概述 1 1 为何需要HTTPS 1 2 什么是HTTPS 1 3 TLS如何实现加密 2 HTTPS实现原理 2 1 加密模型 对称加密 2 2 加密模型
  • 用matlab编程实现对图像的均值滤波,中值滤波和拉普拉斯算子锐化

    1 均值滤波 均值滤波 用包含在滤波掩模邻域内的像素的平均灰度值去代替每个像素点的值 用途 用于模糊处理和减少噪声 盒滤波器 加权平均滤波器 均值滤波 clc close all clear all I rgb2gray imread fi