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

news2024/11/27 12:34:34

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)的距离。

理想低通滤波器:

 其图像如下:

理想高通滤波器:

其图像如下:

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

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

相关文章

介绍strncpy函数

strncpy函数需要引用#include <string.h>头文件 函数原型&#xff1a; char *_Dest 是字符串的去向 char *_Source是字符串的来源 size_t_Count是复制字符串的大小 #include <stdio.h> #include <string.h> int main() { char arr[128] { \0 }; …

『亚马逊云科技产品测评』在当前飞速发展的AI人工智能时代云服务技术哪家强?

授权声明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 Developer Centre, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道 文章目录 引言一、亚马逊&阿里云发展历史介绍1.1 亚马逊发展历史1.2…

人工智能中的核心概念

1 概述 人工智能英文缩写为AI&#xff0c;是一种由人制造出来的机器&#xff0c;该机器可以模仿人的思想和行为&#xff0c;从而体现出一种智能的反应。 人工智能的产业链分为基础层、技术层、应用层三个层次。 基础层包括&#xff1a;芯片、大数据、算法系统、网络等多项基础…

云计算:Vmware 安装 FreeNAS

目录 一、实验 1.Vmware 安装 FreeNAS 2.配置Web界面 二、问题 1.iSCSI如何限定名称 2.LUN和LVM的区别 一、实验 1.Vmware 安装 FreeNAS &#xff08;1&#xff09;环境准备 VMware Workstation 17 FreeNAS相关安装部署镜像: 官网地址&#xff1a; https://download…

Amazon EC2使用测评

前言 每月/750小时为期 12 个月&#xff0c;通过 AWS 免费套餐使用创建就有750个小时的免费使用额度是真的很香&#xff0c;几乎可以免费使用一年&#xff0c;对于一些喜欢自己搭建博客的用户几乎是发福利&#xff0c;整整一年的免费使用&#xff0c;对于新手来说确实很好&…

Spring Boot+Mybatis设置sql日志打印

在全局配置文件添加以下内容&#xff1a;logging.level.com.demo.mapperdebug&#xff0c;com.demo.mapper&#xff1a;src下的mapper路径&#xff0c;debug&#xff1a;设置日志打印级别为debug&#xff0c;亦可设置为&#xff1a;ERROR、WARN、INFO application.properties …

【JAVA-Day68】异常处理的奥秘:深度解析 Java try-catch-finally 机制,高效应对异常问题

异常处理的奥秘&#xff1a;深度解析 Java try-catch-finally 机制&#xff0c;高效应对异常问题 &#x1f680; 异常处理的奥秘&#xff1a;深度解析 Java try-catch-finally 机制&#xff0c;高效应对异常问题 &#x1f680;摘要引言为什么要捕获异常 &#x1f60a;异常捕获的…

人工智能在金融与商业领域的智能化变革

导言 随着人工智能技术的不断发展&#xff0c;金融和商业领域正迎来一场智能化的变革。随着人工智能的不断发展&#xff0c;其在金融和商业领域的应用正成为业界瞩目的焦点。本文将深入探讨人工智能在金融和商业应用中的关键技术、应用场景以及对未来的影响。 1. 关键技术与算…

FPGA简易加减法计算器设计

题目要求&#xff1a; &#xff08;1&#xff09;设计10以内的加减法计算器。 &#xff08;2&#xff09;1个按键用于指定加法或减法&#xff0c;一个用于指定加数或被加数&#xff0c;还有两个分别控制加数或被加数的增加或减少。 &#xff08;3&#xff09;设置的结果和计算的…

饥荒Mod 开发(十三):木牌传送

饥荒Mod 开发(十二)&#xff1a;一键制作 饥荒Mod 开发(十四)&#xff1a;制作屏幕弹窗 一键传送源码 饥荒的地图很大&#xff0c;跑地图太耗费时间和饥饿值&#xff0c;如果大部分时间都在跑图真的是很无聊&#xff0c;所以需要有一个能够传送的功能&#xff0c;不仅可以快速…

一种解决Qt5发布release文件引发的无法定位程序输入点错误的方法

目录 本地环境问题描述分析解决方案 本地环境 本文将不会解释如何利用Qt5编译生成release类型的可执行文件以及如何利用windeployqt生成可执行的依赖库&#xff0c;请自行百度。 环境值操作系统Windows 10 专业版&#xff08;22H2&#xff09;Qt版本Qt 5.15.2Qt Creator版本5.0…

数字滤波器设计——Matlab实现数字信号处理<1>

目录 一.实验内容 二.代码分析 1.信号产生部分 2.利用傅立叶级数展开的方法&#xff0c;自由生成所需的x(t) 3.通过选择不同的采样间隔T&#xff08;分别选T>或<1/2fc&#xff09;&#xff0c;从x(t)获得相应的x(n) 3.对获得的不同x(n)分别作傅立叶变换&#xff0c…

[elementPlus] teleported 在 ElSubMenu中的用途

如图 一个菜单对应的路由结构如上图 如果做适配窄屏幕 如果在 <ElSubMenu :index"route.path" >中不加入 teleported 就会出现问题 加上就OK了 <ElSubMenu :index"route.path" teleported>

git 切换远程地址分支 推送到指定地址分支 版本回退

切换远程地址 1、切换远程仓库地址&#xff1a; 方式一&#xff1a;修改远程仓库地址 【git remote set-url origin URL】 更换远程仓库地址&#xff0c;URL为新地址。 git remote set-url https://gitee.com/xxss/omj_gateway.git 方式二&#xff1a;先删除远程仓库地址&…

前端对接 —— 周末

1.点击校验 点击校验 宇哥 记得过滤 不能校验的数据&#xff08;我后端还要检验吗&#xff1f;&#xff09; 2.前端数据对接 这个可以吗&#xff1f; 这种的可以吗&#xff1f;

基于多智能体系统一致性算法的电力系统分布式经济调度策略MATLAB程序

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 参考文献&#xff1a; 主要内容&#xff1a; 应用多智能体系统中的一致性算法&#xff0c;以发电机组的增量成本和柔性负荷的增量效益作为一致性变量&#xff0c;设计一种用于电力系统经济调度的算法&#x…

力扣第 375 场周赛 解题报告 | 珂学家 | 区间合并+组合数学

前言 整体评价 难得的手速场&#xff0c;这几题都比较套路&#xff0c;确实区间合并很久没考察到了。 不过T4有多种解&#xff0c;栈模拟/差分/链式并查集&#xff0c;都可以的。 欢迎star gitee github T1. 统计已测试设备 思路: 差分思维 class Solution {public int co…

持续集成交付CICD:基于 GitLabCI 与 JenkinsCD 实现后端项目发布

目录 一、实验 1. GitLabCI环境设置 2.优化GitLabCI共享库代码 3.JenkinsCD 发布后端项目 4.再次优化GitLabCI共享库代码 5.JenkinsCD 再次发布后端项目 一、实验 1. GitLabCI环境设置 &#xff08;1&#xff09;GitLab给后端项目添加CI配置路径 &#xff08;2&#xf…

CPU告警不用愁,用C语言编写CPU使用率限制程序

现在云服务已经深入千家万户了&#xff0c;不仅商用&#xff0c;私用也很多。很多云服务厂商也都有配套的服务器安全模块&#xff0c;可以检测网络流量异常、内存占用量和CPU占用率&#xff0c;并且允许人工设置告警阈值。例如&#xff0c;CPU持续大于90%10分钟&#xff0c;那么…