机器视觉技术与应用实战(Chapter Two-03)

2.5 图像滤波和增强

滤波的作用是:图像中包含需要的信息,也包含我们不感兴趣或需要屏蔽的干扰,去掉这些干扰需要使用滤波。

增强的作用是:通过突出或者抑制图像中某些细节,减少图像的噪声,增强图像的视觉效果。

对于空间域和频率域的专业解释如下:

空间域,又称图像空间,由图像像元组成的空间。在图像空间中以空间长度为自变量,直接对像元值进行处理称为空间域处理。

频率域,可以将一幅图像像元值在空间上的变化分解为具有不同振幅、空间频率和相位的简振函数的线性叠加,图像中各种频率成分的组成和分布称为空间频谱。也就是通常说的频谱图,描述了信号的频率结构及频率与该频率信号幅度的关系。

我的理解是这样的:

空间域和频域是表达图像的两种方式,图像还是同一个图像,它们是通过傅里叶变换进行转换,这个也是傅里叶变换在数字图像中最重要的地方。空间域关注的是图像的像素和它们的排列,而频域关注的是图像中的不同的频率的成分。空间域里面的像素值是它们的灰度值(即亮度),我们在空间域里面使用的方法有图像灰度修正、图像平滑、中值滤波,这些都是对像素灰度值进行处理。频域关注的点不同,它帮助我们分析图像中的纹理和结构,高频部分代表着边缘和细节,而低频部分代表着图像平滑区域(变化小的区域),在频域里面使用的方法有高通滤波、低通滤波等。

学习了解一下频谱,频谱可以在一定程度上展示频率的分布,用matlab对两张图像进行频谱分析,一张细节比较多(二维码),一张细节少:

       

代码如下:

img = imread('1.bmp');%1.bmp为灰度图像或二值图像
f = fft2(img);% FFT频谱中心化
f = fftshift(f);
% magnitude
mag = abs(f);
% phase
phase = angle(f);
% plot
subplot(211);imshow(img);title('riginal image');axis on;
subplot(212);imshow(log(mag+1),[]);title('Magnitude spectrum');axis on;

效果如下:

             

通过观察傅立叶变换后的频谱图,我们可以看出图像的能量分布,如果频谱图中暗的点数更多,那么实际图像是比较柔和的(因为各点与邻域差异都不大,梯度相对较小),反之,如果频谱图中亮的点数多,那么图像是尖锐的,细节纹理多的。正好印证了图一细节多,图二细节少情况。

———————————————————————————————————————————

空间域法:

1、图像修正可以使图像在空间域中增强,常见在3种情况:当图像成像不均匀(半边暗、半边亮)而对图像逐点进行不同程度的灰度修正,使灰度均衡;当图像部分或者整体曝光不足而进行灰度级修正,这样可以增强对比度;对于灰度直方图的修正,可以达到预期的图像特征,图像均衡化就是这类方法。

2、图像平滑对包含某点的一个小区域的各点灰度值进行平均值计算,用所得到的平均值代替该点的灰度值,这就是平时所说的平滑处理。如邻域平均法的3X3模板:

邻域平均处理的方法是以图像模糊为代价减小噪声,模板的尺寸越大,噪声减少得越显著。它的作用就是:使邻域灰度均匀,起到平滑灰度的作用。

3、中值滤波:采用一个含有奇数个点的滑动窗口,用窗口的各点灰度值的中值代替指定点(一般中心点)的灰度值。它的作用:处理图像噪声和脉冲干扰。但是对于细节多的图像不宜采用中值滤波。visionpro不能给图片加噪声,我拿以下visionpro里面的图片实现了一下中值滤波:

I = imread('3.bmp'); % 读取彩色图像
J=imnoise(I,'gaussian',0,0.01);%向图像I添加均值为0,方差为0.01的高斯白噪声。
img=imnoise(J,'salt & pepper',0.05);%向图像I添加强度为0.05的椒盐噪声。
% 对红、绿、蓝三个通道分别进行中值滤波
r1 = medfilt2(img(:,:,1), [3 3]);%3*3窗口
g1 = medfilt2(img(:,:,2), [3 3]);
b1 = medfilt2(img(:,:,3), [3 3]);
img1 = cat(3, r1, g1, b1);
r2 = medfilt2(img(:,:,1), [5 5]);%5*5窗口
g2 = medfilt2(img(:,:,2), [5 5]);
b2 = medfilt2(img(:,:,3), [5 5]);
img2 = cat(3, r2, g2, b2);
r3 = medfilt2(img(:,:,1), [7 7]);%7*7窗口
g3 = medfilt2(img(:,:,2), [7 7]);
b3 = medfilt2(img(:,:,3), [7 7]);
img3 = cat(3, r3, g3, b3);
subplot(2,2,1), imshow(img), title('原始图像');
subplot(2,2,2), imshow(img1), title('3*3滤波后的图像');
subplot(2,2,3), imshow(img2), title('5*5滤波后的图像');
subplot(2,2,4), imshow(img3), title('7*7滤波后的图像');

效果如下,原始图像是加了高斯噪声和椒盐噪声的:

频率域法:图像频域法通常是先对图像进行傅里叶变换,再对图像的频谱进行某种修正(如滤波),最后再修正图像进行傅里叶变换回到空间域中,从而达到增强图像的效果。它的好处是:把时域里面复杂卷积的滤波操作变成频率域里简单的乘积操作。

低通滤波器和高通滤波器:低通滤波器抑制频谱高频成分,让低频成分通过,起到了突出背景或平滑图像的作用。高通滤波器抑制图像频谱低频信号而保留高频信号,起到了图像锐化作用。H(u,v)是传递函数,D0代表了截止频率,D(u,v)代表了点(u,v)到频率原点(0,0)(u=v=0)的距离。

理想低通滤波器:

 其图像如下:

理想高通滤波器:

其图像如下:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2020 年网络安全应急响应分析报告

2020 年全年奇安信集团安服团队共参与和处置了全国范围内 660起网络安全应急响应事件。2020 年全年应急响应处置事件行业 TOP3 分别为:政府部门行业(146 起)医疗卫生行业(90 起)以及事业单位(61 起,事件处置数分别占应急处置所有行业的 22.1%、13.6%、9.2%。2020 年…

Mac如何安装stable diffusion

今天跟大家一起在Mac电脑上安装下stable diffusion,在midjourney等模型收费的情况下如何用自己的电脑算力用上免费的画图大模型呢?来吧一起实操起来 一、安装homebrew 官网地址:Homebrew — The Missing Package Manager for macOS (or Lin…

C语言预处理详解及其指令

预处理详解 1.预定义符号2.#define定义常量基本使用方法举例子如果在define定义的表示符后面加上分号会发生什么?用一下来解释 3. #define定义宏举例例1例2 4. 带有副作用的宏参数例如: 5. 宏替换的规则6. 宏函数的对比宏和函数的一个对比 7. #和##7.1 #运算符7.2 #…

DSP捕获输入简单笔记

之前使用stm32的大概原理是: 输入引脚输入一个脉冲,捕获1开始极性捕获,捕获的是从启动捕获功能开始计数,捕获的是当前的计数值; 例如一个脉冲,捕获1捕获上升沿,捕获2捕获下降沿;而两…

FPGA引脚分配的问题

今天在做一个FPGA的实验时,在引脚分配时失败了,出现了如下报错: 我当时分配的引脚是PIN_AE19,然而奇怪的是我之前并未分配这个引脚,我使用的开发工具是Quartus II 9.1 Web Edition,算个老版本了。 有的网站…

从 0 开始实现一个 SpringBoot + Vue 项目

从 0 开始实现一个 SpringBoot Vue 项目 从 0 开始实现一个 SpringBoot Vue 项目软件和工具创建 SpringBoot 后端项目创建 MySQL 数据库配置文件实现增删改查接口Model 层mapper 层service 层controller 层测试 从 0 开始实现一个 SpringBoot Vue 项目 软件和工具 后端开发…

海思平台isp之raw图回灌调试

文章目录 一、搭建环境二、配置参数三、回灌raw图isp调试中,经常会遇到一些特定场景的效果需要优化,但由于某些原因和成本考虑,开发人员无法亲临现场,这个时候采集场景raw图回灌到板端调试,就显得尤为方便了。 一、搭建环境 (1)建立板端与PQTool连接 板端进入SS928V100…

✺ch3——数学基础

目录 3D坐标系和点矩阵单位矩阵转置矩阵逆矩阵逆转置矩阵矩阵的运算矩阵加法()矩阵乘法() 常用的变换矩阵平移矩阵缩放矩阵旋转矩阵透视矩阵正射投影矩阵LookAt矩阵 向量加法和减法点积叉积 局部空间和世界空间——模型矩阵M视觉空间和合成相机——模型-视图矩阵MV用GLSL函数构…

【JVM从入门到实战】(八)垃圾回收(1)

内存泄漏:指的是不再使用的对象在系统中未被回收,内存泄漏的积累可能会导致内存溢出 什么是垃圾回收 Java中为了简化对象的释放,引入了自动的垃圾回收(Garbage Collection简称GC)机制。通过垃 圾回收器来对不再使用的…

6.鸿蒙app_hap_DevEco如何真机调试模式_app安装在手机中

真机调试 手机》设置》关于手机》HarmonyOS版本》软件版本,连续单击10次启动开发者模式 然后:设置》系统和更新》开发人员选项》打开USB调试功能。 电脑USB连接手机,手机USB连接类型,传文件(不要选择仅充电&#xf…

【CANN训练营】CANN算子开发进阶笔记

Ascend C Tilling计算 Tilling基本概念介绍 大多数情况下,Local Memory的存储,无法完全容纳算子的输入与输出的所有数据,需要每次搬运一部分输入数柜进行计算然后搬出,再敲运下一部分输入数据进行计算,直到得到完愁的…

阿里云对象存储OSS外网流出流量异常增多导致费用上升的解决方法

本文介绍在使用阿里云的对象存储 OSS服务过程中,外网流量消耗异常增多并导致异常的费用支出这一情况的问题发现、问题定位与几种不同的问题解决方法。 细细数来,写博客已经有近3的历史了,这成为了一项已经陪伴我大半人生的工作;也…

设计模式 五种不同的单例模式 懒汉式 饿汉式 枚举单例 容器化单例(Spring单例源码分析) 线程单例

单例模式 第一种 饿汉式 优点:执行效率高,性能高,没有任何的锁 缺点:某些情况下,可能会造成内存浪费 /*** author LionLi*/ public class HungrySingleton {private static final HungrySingleton hungrySingleton n…

05 动态渲染数据

概述 实际上动态渲染数据&#xff0c;在《使用CDN开发Vue3项目》中就已经学习过了&#xff0c;核心代码如下&#xff1a; <div id"vue-app">{{text}}</div> <script src"https://cdn.staticfile.org/vue/3.0.5/vue.global.js"></sc…

设计模式详解---单例模式

1. 设计模式详解 单例模式是一种创建对象的设计模式&#xff0c;它确保一个类只有一个实例&#xff0c;并提供全局访问点以获取该实例。 在单例模式中&#xff0c;类负责创建自己的唯一实例&#xff0c;并确保任何其他对象只能访问该实例。这对于需要共享状态或资源的情况非常有…

[楚慧杯 2023] web

文章目录 eaaevalupload_shell eaaeval 打开题目&#xff0c;源码给了用户密码 登陆后啥也没有&#xff0c;扫一下发现源码泄露www.zip <?php class Flag{public $a;public $b;public function __construct(){$this->a admin;$this->b admin;}public function _…

医疗智能化革命:AI技术引领医疗领域的创新进程

一、“AI”医疗的崛起 随着人工智能&#xff08;AI&#xff09;技术的崛起&#xff0c;"AI"医疗正在以惊人的速度改变着医疗行业的面貌。AI作为一种强大的工具&#xff0c;正在为医疗领域带来前所未有的创新和突破。它不仅在医学影像诊断、病理学分析和基因组学研究等…

京东体育用品销售数据分析与可视化系统

京东体育用品销售数据分析与可视化系统 前言数据爬取模块1. 数据爬取2. 数据处理3. 数据存储 数据可视化模块1. 数据查看2. 店铺商品数量排行3. 整体好评率4. 不同品牌市场占比5. 品牌差评率排名6. 品牌价格排名7. 品牌评论数量分布 创新点 前言 在体育用品行业&#xff0c;了…

ElasticSearch学习篇8_Lucene之数据存储(Stored Field、DocValue、BKD Tree)

前言 Lucene全文检索主要分为索引、搜索两个过程&#xff0c;对于索引过程就是将文档磁盘存储然后按照指定格式构建索引文件&#xff0c;其中涉及数据存储一些压缩、数据结构设计还是很巧妙的&#xff0c;下面主要记录学习过程中的StoredField、DocValue以及磁盘BKD Tree的一些…

实现el-table操作列点击弹出echarts

代码&#xff1a; <el-table-column :width"90"><template #default"scope"><el-popover placement"left-end" width"550" trigger"click"><div><div style"font-size: 18px; margin-left…