数字图像处理基础

目录

概述

仿射变换

常见的灰度处理算法

空间域滤波原理

空间域平滑滤波(低通滤波)

空间域锐化滤波(高通滤波)

傅里叶变换

频率域与空间域的对应关系

频率域滤波

形态学处理基础知识

边缘检测原理

检测孤立点

检测线

边缘检测

基于梯度算子的边缘检测

基于LoG算子的边缘检测

基于Canny算子的边缘检测


笔记来自1-图像处理基础_哔哩哔哩_bilibili

概述

图像由矩阵形式存储,像素颜色深浅用不同灰度值来表示。

如何访问图像——图像有宽、高、通道(RGB),以多维数组的形式访问即可 

仿射变换

仿射变换=线性变换(直线变换后还是直线,直线比例保持不变)+平移

操作方式:左乘变换矩阵

还有平移、偏移等

常见的灰度处理算法

【图像反转】

原理:灰度级数-当前灰度      s=L-1-r

 【对数变换】

可以把图像低灰度的地方提亮

【Gamma变换】

其实就是幂指数矫正,目的是将灰度较窄的区域拉伸为较宽的区域,可改变对比度

【直方图均衡化】

由于图像的对比度不强所以图像整体上较亮或较暗(也就是图像灰度集中在直方图的两端)

为了增加对比度,让图像看起来更清楚所以有了直方图均衡化

空间域滤波原理

空间域就是指的图像中的每个像素单元

空间域图像处理主要包括灰度变换和空间域滤波

所谓滤波就是对图像进行处理,比如降噪、平滑等

【滤波】

对于图像的每个像素,把核在图像上覆盖区域的每个像素相乘相加求平均,这个过程又被称为卷积,然后把值填入中心像素

空间域平滑滤波(低通滤波)

平滑空间滤波器(作用是模糊处理——大目标提取之前先去掉图像中的琐碎细节和 降低噪声——典型噪声是由于灰度级的急剧变化引起的)

包括:

1.平滑线性滤波器(盒状滤波器)

        所有系数都相等的滤波器

↑核的尺寸越大越模糊,且当目标的灰度与其相邻像素的灰度相近时,会有模糊目标的混合效应

作用:为了对感兴趣的物体得到一个粗略的描述而模糊一幅图像,模糊之后,小目标和背景被拉的很近,此时再根据大目标的灰度值选一个阈值就能很好的提取目标

2.中值滤波器

        用像素邻域内灰度值的中值来替换目标像素

主要用于去除椒盐噪声。因为中值滤波相当于是用中值替换了白点黑点代表的最大值最小值

 

3.高斯滤波器

        

所以sigema越大,类似平均模板; sigema越小,类似中值模板

详细原理:

不同于均值滤波器模版系数都是相同的,高斯滤波器的模板系数随着距离模板中心的增大而减小

一个二维的高斯函数:

其中(x,y)是点坐标,sigema是标准差。要得到一个高斯滤波器,就对高斯函数进行离散化

例如3x3的高斯滤波器目标这样获得:先以中心位置为坐标原点

然后将各个位置的坐标代入高斯函数中,得到的值就是模板系数

空间域锐化滤波(高通滤波)

作用:突出灰度的过渡部分(比如寻找边界,增强图像)

锐化空间滤波器(原理:锐化操作主要是对图像求一阶导数和二阶导数)

平滑滤波使用邻域的均值/中值来代替模板中心的像素,削弱他们之间的差别,以达到平滑图像和抑制噪声的目的;而锐化滤波器使用邻域的微分作为算子,增大邻域间像素的插值!

1.Prewitt算子——一阶微分算子。用不同方向的算子可以检测不同类型的边缘或线

        

2.Sobel算子——一阶微分算子。用不同方向的算子可以检测不同类型的边缘或线

Sobel模板的中间值是2,通过突出中心点达到平滑的目的,比Prewitt多了平滑功能

3.拉普拉斯算子——二阶微分算子,可以检测到灰度突变的点

得到锐化图像后,将原图像加上或减去锐化结果,得到增强后的图像

傅里叶变换

核心:任何周期函数都可以表示为不同频率的正弦和、余弦和的形式

————欧拉公式

 

【二维傅里叶变换】

频率域与空间域的对应关系

在空间域的乘积对应在频率域的卷积;在频率域的卷积对应在空间域的乘积

频率域滤波

暂略qwq

形态学处理基础知识

图像处理领域用形态学数学处理工具来提取表达和描绘区域形状的有用图像分量

结构元——研究一幅图像中感兴趣特性所用的小集合或子图像

 结构元平坦——结构元的值是否存在不同灰度级

【腐蚀】

二值图像:

把结构元的原点放在图像的每一个像素的位置,对于B与A重合的部分,当B是A重合部分的子集时,该位置被标记为1,否则全为0

灰度图像平坦结构元:

把结构元的原点放在图像的每一个像素的位置,在任何位置的腐蚀为:包含在与b区域重合区域中的f的所有值的最小值

灰度图像非平坦结构元

把结构元的原点放在图像的每一个像素的位置,在任何位置的腐蚀为:包含在与b重合区域中的f减去b中的值的最小值

 (在图像中,负值是会被截断为0的)

【膨胀】——填补目标区域中某些空洞以及消除包含在目标区域中的小颗粒噪声

二值图像

灰度图像平坦结构元

把结构元的原点放在图像的每一个像素位置,在任何位置的膨胀为包含在与b翻转重合区域中的f的所有值的最大值

灰度图像非平坦结构元

【开运算】

先腐蚀后膨胀。腐蚀可以断开微弱连接,然后膨胀可以再平滑边缘

【闭运算】

先膨胀后腐蚀。膨胀可以将距离比较近的区域合并起来,再腐蚀掉比较小的区域

边缘检测原理

——以灰度局部剧烈变化为基础,检测图像中的点、线边缘

方法:用一阶微分和二阶微分为工具来达到检测目的

计算导数的原理——可以用空间滤波器计算每个像素处的导数

检测原理——

(1)一阶导数产生较粗的边缘

(2)二阶导数对精细细节,如细线、孤立点和噪声有较强响应

(3)二阶导数在灰度斜坡和灰度台阶处会产生双边缘效应

(4)二阶导数的符号可以确定是从亮到暗还是从暗到亮 

检测孤立点

过程:

1.对输入图像用拉普拉斯核进行卷积

2.对卷积结果进行公式操作

检测线

原理:拉普拉斯算子

优点:各向同性,线性和位移是不变的,对细线和孤立点检测效果较好

缺点:对噪声敏感,对噪声有双倍加强作用。不能检测出边的方向,常产生双像素的边缘

边缘检测

——原理:通过灰度突变来定位边缘位置

几种边缘模型

 边缘检测的基本步骤

(1)降噪——可以用高斯滤波器、均值滤波器、中值滤波器等

(2)边缘点的检测

(3)边缘定位

接下来介绍边缘检测的几种主要方法

基于梯度算子的边缘检测

举例

 梯度算子——用于计算梯度偏导数的滤波器模板

后续:对梯度图像进行阈值处理,降低噪声的干扰

因此,梯度算子的不足:未对图像噪声和边缘本身特性采取预防措施

基于LoG算子的边缘检测

LoG算子标准符号

基于Canny算子的边缘检测

(1)首先用一个高斯函数平滑图像,计算结果的幅度,然后使用梯度幅度和方向来估计每一点处的方向和边缘强度

(2)由于是用梯度算子,所以边缘会比较宽,因此下一步要细化边缘,方法是非最大值抑制。该方法的本质是指定边缘法线的许多离散方向

(3)遍历强边缘中所有的非零像素,对于每一个非零像素,找弱边缘中与其连通的像素,标记为边缘。否则置为0,然后将修改过的弱边缘加到强边缘图中即可。

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

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

相关文章

软考之零碎片段记录(九)+复习巩固(四)

一、学习 1. 英语单词 delivery:交付 automation:自动化 build-in:内置 Iwell-konwn:众所周知 modern:现代 hands-off:无干预 labor-free:免人工 visual:可视化 object-oriented:面向对象的 structural:结构化的 2. 案例 E1: 租户信息 E2: 农户 E3: 租户 E4: 用户 3. 案例…

giteegit的连结使用

目标:在windows的本地的git上操作的项目存放到Gitee云端上 不适用于linux的terminal终端下 1.先下载好Git这个软件 2.创建一个文件夹(项目名称) 然后用gitbash的形式打开 3.创建ssh密钥到Gitee上 因为我们在Git与Gitee上的传输是通过ssh…

OpenCV图像处理——基于OpenCV的ORB算法实现目标追踪

概述 ORB(Oriented FAST and Rotated BRIEF)算法是高效的关键点检测和描述方法。它结合了FAST(Features from Accelerated Segment Test)算法的快速关键点检测能力和BRIEF(Binary Robust Independent Elementary Feat…

Golang | Leetcode Golang题解之第17题电话号码的字母组合

题目: 题解: var phoneMap map[string]string map[string]string{"2": "abc","3": "def","4": "ghi","5": "jkl","6": "mno","7": &…

数据处理|dataframe的连接操作merge

pd.merge() pd.merge(left, right, howinner, onNone, left_onNone, right_onNone,left_indexFalse, right_indexFalse, sortTrue,suffixes(_x, _y), copyTrue, indicatorFalse,validateNone)merge内部的各种参数 pd.left,pd.right left用来指代左边要拼接的dataframe right…

RocketMQ 之 IoT 消息解析:物联网需要什么样的消息技术?

作者:林清山(隆基) 前言: 从初代开源消息队列崛起,到 PC 互联网、移动互联网爆发式发展,再到如今 IoT、云计算、云原生引领了新的技术趋势,消息中间件的发展已经走过了 30 多个年头。 目前&a…

【论文阅读——Profit Allocation for Federated Learning】

1.摘要 由于更为严格的数据管理法规,如《通用数据保护条例》(GDPR),传统的机器学习服务生产模式正在转向联邦学习这一范式。联邦学习允许多个数据提供者在其本地保留数据的同时,协作训练一个共享模型。推动联邦学习实…

知识管理系统|基于Springboot和vue的知识管理系统设计与实现(源码+数据库+文档)

知识管理 目录 基于Springboot和vue的知识管理系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1、前台: 5.2.2 文章信息 5.3.1 论坛交流 2、后台 用户管理 5.1.2 文章分类 5.2.1 资料分类 四、数据库设计 五、核心代码 六、论文参考 七、最…

【面经】2023年软件测试面试题大全(持续更新)附答案

前阵子一位读者告诉我,某位大厂HR给他发了我之前做的面试题答案合集。 这个消息让我开心了一整天😂,因为这说明我之前做的面试题系列真的能帮助到部分测试同学,也算是侧面得到了一种认可吧。 坚持可是我们程序员家族的优良传统&a…

一款轻量、干净的 Laravel 后台管理框架

系统简介 ModStart 是一个基于 Laravel 的模块化快速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。 系统完全开源,基于 Apache 2.0 开源协议,免费且不限制商业使用。 系统特性 …

tensorflow.js 如何使用opencv.js通过面部特征点估算脸部姿态并绘制示意图

文章目录 前言一、实现步骤1. 获取所需特征点的索引2. 使用opencv.js 计算俯仰角、水平角和翻滚角cv.solvePnP介绍cv.solvePnP原理运行代码查看效果 3.绘制姿态示意直线添加canvas元素计算姿态直线坐标并绘制 总结 前言 在计算机视觉领域,估算脸部姿态是一项具有挑…

thinkphp6中使用监听事件和事件订阅

目录 一:场景介绍 二:事件监听 三:配置订阅 一:场景介绍 在项目开发中有很多这样的场景,比如用户注册完了,需要通知到第三方或者发送消息。用户下单了,需要提示给客服等等。这些场景都有一个…

rac数据库默认网关不通导致集群异常

集群CSSD进程reconfiguration完成,显示2个节点都在线。但ora.net1.network服务启动失败,且有依赖关系的资源随后启动失败并且已经达到上限。 查看两个节点的网络信息,发现两个节点的默认网关是不一致的。 修改故障节点网关 在RAC中&#xff0…

线程间的通信

文章目录 线程间的通讯技术就是通过等待和唤醒机制,来实现多个线程协同操作完成某一项任务,例如经典的生产者和消费者案例。等待唤醒机制其实就是让线程进入等待状态或者让线程从等待状态中唤醒,需要用到两种方法,如下&#xff1a…

dinov2爆肝记

一、网址 https://github.com/facebookresearch/dinov2 二、配置 pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ 三、雷 cuml-cu11无法安装,因为他只能linux 但我发现,没他也行 四、代码 注意: 下面代码…

用Python+OpenCV截取视频中所有含有字幕的画面

1、需求背景 有的视频文件的字幕已经压制到了视频的图像中,不能单独提取出字幕文件。网上的 “提取视频字幕” 网站多为提取视频中的字幕文件,而非识别视频图像中的字幕。少数通过OCR技术识别画面中字幕的工具需要在线运行、运行速度较慢,或…

Spark记录未整理

Spark记录未整理,请以较平静的心态阅读。 目的: 根据user_id进行分组,同时将同一user_id看过的anime_id转化为一个字符串数组(anime_ids),将anime_ids转化为二维的list [[[20, 81, 170, 263…],[]…]&#…

【芯片设计- RTL 数字逻辑设计入门 1.1 -- Verdi 使用入门介绍 1】

请阅读【芯片设计 RTL 数字逻辑设计扫盲 】 文章目录 Verdi 介绍Verdi 特点和功能Verdi 基本操作Verdi -elab与-dbdir区别-elab 参数介绍-dbdir 参数介绍区别总结Verdi 介绍 Verdi 是由Synopsys公司开发的一款业界领先的自动化电子设计自动化(EDA)工具,主要用于功能验证和调…

java数据结构与算法刷题-----LeetCode628. 三个数的最大乘积

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 文章目录 排序选择线性搜索最值 排序 解题思路:时间复杂度O( …

React - 你知道在React组件的哪个阶段发送Ajax最合适吗

难度级别:中级及以上 提问概率:65% 如果求职者被问到了这个问题,那么只是单纯的回答在哪个阶段发送Ajax请求恐怕是不够全面的。最好是先详细描述React组件都有哪些生命周期,最后再回过头来点题作答,为什么应该在这个阶段发送Ajax请求。那…