图像边缘提取

news2024/11/24 10:33:27

什么是图像边缘:

图象的边缘是指图象局部区域亮度变化显著的部分,该区域的灰度剖面一般可以看作是一个阶跃,既从一个灰度值在很小的缓冲区域内急剧变化到另一个灰度相差较大的灰度值。

什么是灰度值:

指图像中点的颜色深度,范围一般从0到255,白色为255,黑色为0.

边缘有正负之分,就像导数有正值也有负值一样:由暗到亮为正,由亮到暗为负

什么是边缘提取:

边缘检测主要是图象的灰度变化的度量、检测和定位。
说人话就是检测出某一块区域灰度值(RGB)变化贼大的地方,如下图: 

 高频信号&低频信号:

图像中的低频信号和高频信号也叫做低频分量和高频分量。简单一点说,图像中的高频分量,指的是图像强度(亮度/灰度)变化剧烈的地方,也就是边缘(轮廓,上图左边就是);
图像中的低频分量,指的是图像强度(亮度/灰度)变换平缓的地方,也就是大片色块的地方。
人眼对图像中的高频信号更为敏感。

怎么理解呢?不说人话就是边缘的变化率的绝对值很大.这啥玩意儿,导数嘛(卖个关子,往下看).

边缘检测的步骤:

1)滤波:边缘检测的算法主要是基于图像强度的一阶和二阶导数,但导数通常对噪声很敏感,因此必须采用滤波器来改善与噪声有关的边缘检测器的性能。常见的滤波方法主要有高斯滤波。
2)增强:增强边缘的基础是确定图像各点邻域强度的变化值。增强算法可以将图像灰度点邻域强度值有显著变化的点凸显出来。在具体编程实现时,可通过计算梯度幅值来确定。
3)检测:经过增强的图像,往往邻域中有很多点的梯度值比较大,而在特定的应用中,这些点并不是我们要找的边缘点,所以应该采用某种方法来对这些点进行取舍。实际工程中,常用
的方法是通过阈值化方法来检测。

边缘检测的原理:

关于边缘检测的基础来自于一个事实, 即在边缘部分,像素值出现”跳跃“或者较大的变化。 如果在此边缘部分求取一阶导数,就会看到极值的出现。
而在一阶导数为极值的地方,二阶导数为0,基于这个原理,就可以进行边缘检测。

一阶导数的物理意义:切线斜率变化的速度,表示的是一阶导数的变化率.

二阶导数的物理意义:函数的凹凸性(例如加速度的方向总是指向轨迹曲线凹的一侧).

如图:左边是正常的函数f(t)右边是它的一阶导数f'(t),圆圈用来表示它的斜率的变化,左图这里是变化最快的,右图的定点表示的就是变化率(斜率)的数值.

求二阶导数呢?

 look!那就是看一阶导数的变化率喽.

图像锐化:

图像锐化(image sharpening)是补偿图像的轮廓,增强图像的边缘及灰度跳变的部分,使图像变得清晰。
图像锐化是为了突出图像上的物的边缘、轮廓,或某些线性目标要素的特征。这种滤波方法提高了地物边缘与周围像元之间的反差,因此也被称为边缘增强。

来,看妞,懂了吧

常见手段:

拉普拉斯变换核函数

 

图像平滑:

图像平滑是指用于突出图像的宽大区域、低频成分、主干部分或抑制图像噪声和干扰高频成分的图像处理方法,目的是使图像亮度平缓渐变,减小突变梯度,改善图像质量。

继续看妞,DDDD

常见手段:

Prewitt算子:

Prewitt算子是一种一阶微分算子的边缘检测,利用像素点上下、左右邻点的灰度差,在边缘处达到极值检测边缘,去掉部分伪边缘,对噪声具有平滑作用 。其原理是在图像空间利用两个方向
模板与图像进行邻域卷积来完成的,这两个方向模板一个检测水平边缘,一个检测垂直边缘。

 

Sobel算子:

Sobel算子包含两组3x3的矩阵,分别为横向及纵向模板,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。实际使用中,常用如下两个模板来检测图像边缘:

 

缺点是Sobel算子并没有将图像的主题与背景严格地区分开来,换言之就是Sobel算子并没有基于图像灰度进行处理,由于Sobel算子并没有严格地模拟人的视觉生理特征,所以提取的图像轮廓有时并不能令人满意。如下图:使用Sobel进行灰度处理后的图像.

 

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

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

相关文章

C/C++性能提升之cache分析

在开发过程中,我们有时会碰到程序性能瓶颈,这时候需要我们查找热点代码,借用一些命令、工具去分析自己的程序,下面我就介绍一下如何使用perf工具分析程序的cache命中率。 在编写代码前先介绍一下我们的硬件平台,我电脑…

【LeetCode全题库算法速练】2、两数相加

文章目录 一、题目🔸题目描述🔸样例1🔸样例2🔸样例3 二、代码参考 作者:KJ.JK 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 &a…

chatgpt赋能python:Python多行代码一行展示:精简代码,高效编程的绝佳选择

Python多行代码一行展示:精简代码,高效编程的绝佳选择 介绍 在Python的开发中,我们经常需要编写较长的代码,在展示和调试代码时,多行代码会使代码显得过长和复杂。同时,多行代码还会增加代码中的空白行数…

chatgpt赋能python:Python处理颜色RGB简介

Python 处理颜色 RGB 简介 在现代 Web 设计中,颜色的使用非常重要。网站和应用程序的设计师通常需要控制经他们的项目中使用的颜色。最常见的颜色表示方法是 RGB,即红、绿、蓝。RGB 是一种添加光线颜色的方法,它基于红、绿和蓝三种颜色原料的…

Linux操作系统——第一章 进程

目录 基本概念 描述进程-PCB task_struct-PCB的一种 task_ struct内容分类 组织进程 查看进程 通过系统调用获取进程标示符 通过系统调用创建进程-fork初识 进程状态 进程状态查看 Z(zombie)-僵尸进程 僵尸进程危害 孤儿进程 进程优先级 基本概念 查看系统进程 …

【RestAPI】优秀Rest API设计规范

一、API 设计原则 将 REST 映射到 DDD 模式 实体、聚合和值对象等模式旨在对领域模型中的对象施加特定的约束。 在 DDD 的许多介绍文章中,模式是使用构造函数或属性 getter 和 setter 等面向对象的 (OO) 语言概念建模的。 设计 API 时,请考虑这些 API…

前后端分离的前端部署渲染方案总结

前后端分离主要是为了区分后端和前端,以前前端代码是直接将HTML和静态文件丢给后端,由后端完成数据动态交互,所以后端既要写后端逻辑,又要写前端的数据交互逻辑。 前后端分离后后端只需要提供接口,前端则必须要完成对…

安装lora+启动lora+训练一个model

一、安装步骤 conda create -n kohya_ss python3.10.8 cd code git clone https://github.com/bmaltais/kohya_ss.git cd kohya_ss 然后修改了setup.sh里面的xformers里面的下载地址(因为自带的那个地址,拉取需要1个小时,太慢了)…

chatgpt赋能python:Python基础词汇解析

Python基础词汇解析 作为一门流行且易学的编程语言,Python在很多场合得到了广泛的应用。在学习Python编程的过程中,掌握各类基础词汇是非常关键的。本文将介绍Python编程中一些常见且重要的基础词汇,帮助大家更好地了解和掌握Python编程。 …

chatgpt赋能python:Python多级雷达图绘制解析

Python多级雷达图绘制解析 雷达图(Radar Chart)是一种可视化工具,常用于多个指标的对比展示。与其他图形不同,雷达图中,数据不是放在X、Y轴上,而是以多边形的形式展现。利用Python语言,可以绘制…

chatgpt赋能python:Python声音检测:如何用Python实现声音检测

Python声音检测:如何用Python实现声音检测 声音检测是近年来越来越受到关注的技术,它可以应用在很多场合,如语音识别、安防监控等。Python作为一种强大的编程语言,也可以实现声音检测功能。本文将介绍Python声音检测的原理、实现…

chatgpt赋能python:Python多选:提升代码效率的必备工具

Python 多选:提升代码效率的必备工具 如果你是一个有多年 Python 编程经验的工程师,那么你肯定会知道 Python 多选是一个非常实用的工具。它可以帮助你提高代码的效率,减少编程的时间和工作量。在本文中,我们将介绍 Python 多选的…

模拟实现 Spring IOC(详解)

文章目录 前言Spring IoCSpring IoC 概述Spring IoC 技术难点Spring IoC 框架思考需求分析 Spring IoC 技术难点实现Spring IoC 模拟实现Bean工厂模式实现Bean注解的循环依赖基础建立 前言 Spring是一种 Java 开发框架,其主要功能有两个:IoC(DI)和AOP。…

什么是高并发?

目录 什么是高井发系统 1.1 什么是高井发 1.2 高井发系统有哪些关键指标 1.2.1 响应时间 1.2.2 吞吐量 1.2.3 每秒请求数(QPS) 1.2.4 每秒事务数 (TPS) 1.2.5 访问量 (PV) 1.2.6 独立访客 (UV) 1.2.7 网络流量 1.3 为什么学习高并发系统 1.32在面试中脱颖而出 什么…

Android:Selector + Layer-lists + Shape 实现 “缺右下角Button“

UI需求:实现"缺右下角的渐变Button"效果 实现方式有两种: 一.UI绘制.9背景图,Selector直接实现 二.使用Shape与Selector、Layer-lists实现 UI给的设计稿里没有Button背景图,我用Shape做完了他告诉我他有做背景图&…

字符串搜索算法:暴力搜索,KMP

目录 前言废话暴力搜索KMP算法 前言废话 最近脑子有点昏昏沉沉,喝点那种红枣泡的白酒居然神奇的好了一些,感觉很舒服。看来喝少量的酒可以让人更清醒,长期喝可能有养生的效果? 写道这里去百度了下,发现红枣还真有养生效…

js中this关键字的作用和如何改变其上下文

一、this 关键字的作用 JavaScript 中的 this 关键字引用了所在函数正在被调用时的对象。在不同的上下文中,this 的指向会发生变化。 在全局上下文中,this 指向全局对象(在浏览器中是 window 对象,在 Node.js 中是 global 对象&…

CV | Emotionally Enhanced Talking Face Generation论文详解及代码实现

本博客主要讲解了Emotionally Enhanced Talking Face Generation(情感增强的谈话人脸生成)论文概括与项目实现,以及代码理解。 Emotionally Enhanced Talking Face Generation Paper :https://arxiv.org/pdf/2303.11548.pdf Code: GitHub - s…

ROS:服务数据(srv)的定义与使用

目录 一、服务模型二、创建功能包三、自定义服务数据3.1定义srv文件3.2在package.xml中添加功能包依赖3.3在CMakeLists.txt中添加编译选项3.4编译生成语言相关文件 四、创建代码并编译运行(C)4.1创建代码4.2编译4.3运行 一、服务模型 Client发布显示某个…

价值8800元SEO自动化养权重流量站课程分享(升级版)!

本来想做培训收8800,但是我怕大伙骂我(说我割韭菜),所以我决定免费把这套自动化批量养站的技术和流程详细给大家分享出来。有些朋友可能是手动养,我觉得这种思路是没错的,但是有点鸡肋,先说下缺…