不同图像锐化算子提取的图像信息有哪些不同_传统图像处理

传统图像处理

一、边缘检测算子

①Sobel算子

bbd7032bee741be2c1c58b2d39c5ec83.png

该算子中引入了类似局部平均的运算,因此对噪声具有平滑作用,能很好的消除噪声的影响。与Prewitt算子相比,Sobel算子对于像素的位置的影响做了加权,可以降低边缘模糊程度,因此效果更好。

②Roberts 算子

3b906cdbd8a538d90aae4a00a5d9c4cf.png

没有经过图像平滑处理的,因此图像噪声一般得不到很好的抑制。

Roberts 算子的定位精度较高,对具有陡峭的低噪声图像。

③Prewitt算子

67670d98cafb2e6a9d128cd3339aef2b.png

在边缘处达到极值检测边缘,去掉部分伪边缘,对噪声具有平滑作用。

④Laplacian算子

4ff32a3c4d54b3dea87a7eb9cbfdfc86.png

Laplace算子对孤立象素的响应要比对边缘或线的响应要更强烈,因此只适用于无噪声图象。存在噪声情况下,使用Laplacian算子检测边缘之前需要先进行低通滤波。

二、平滑和锐化

锐化就是通过增强高频分量来减少图像中的模糊,在增强图像边缘的同时也增加了图像的噪声。锐化滤波器是为了突出显示图像的边界和其他的细节,这些锐化是基于一阶导数和二阶导数的。

一阶导数可以产生粗的图像边缘,并广泛的应用于边缘提取,二阶导数对于精细的细节相应更好,常被用于图像增强。

常用的算子为Sobel和Laplacian

平滑与锐化相反,过滤掉高频分量,减少图像的噪声是图片变得模糊。主要用于图像的去噪。平滑要使用滤波器,为不改变图像的相位信息,一般使用线性滤波器。

几种不同的平滑方法:1. 归一化滤波器 2. 高斯滤波 3. 中值滤波

三、Canny检测

Canny边缘检测算法可以分为以下5个步骤:

1) 使用高斯滤波器,以平滑图像,滤除噪声。

2) 计算图像中每个像素点的梯度强度和方向。

3) 应用非极大值抑制,以消除边缘检测带来的杂散响应。

4) 应用双阈值检测来确定真实的和潜在的边缘。

5) 通过抑制孤立的弱边缘最终完成边缘检测。

1 高斯平滑滤波

为了尽可能减少噪声对边缘检测结果的影响,所以必须滤除噪声以防止由噪声引起的错误检测。为了平滑图像,使用高斯滤波器与图像进行卷积,该步骤将平滑图像,以减少边缘检测器上明显的噪声影响。

2 计算梯度强度和方向

图像中的边缘可以指向各个方向,因此Canny算法使用四个算子来检测图像中的水平、垂直和对角边缘。边缘检测的算子(如Roberts,Prewitt,Sobel等)返回水平Gx和垂直Gy方向的一阶导数值,由此便可以确定像素点的梯度G和方向theta 。

3 非极大值抑制

非极大值抑制是一种边缘稀疏技术,非极大值抑制的作用在于“瘦”边。对图像进行梯度计算后,仅仅基于梯度值提取的边缘仍然很模糊。非极大值抑制则可以帮助将局部最大值之外的所有梯度值抑制为0,对梯度图像中每个像素进行非极大值抑制的算法是:

1)将当前像素的梯度强度与沿正负梯度方向上的两个像素进行比较。

2)如果当前像素的梯度强度与另外两个像素相比最大,则该像素点保留为边缘点,否则该像素点将被抑制。

4 双阈值检测

在施加非极大值抑制之后,剩余的像素可以更准确地表示图像中的实际边缘。然而,仍然存在由于噪声和颜色变化引起的一些边缘像素。为了解决这些杂散响应,必须用弱梯度值过滤边缘像素,并保留具有高梯度值的边缘像素,可以通过选择高低阈值来实现。如果边缘像素的梯度值高于高阈值,则将其标记为强边缘像素;如果边缘像素的梯度值小于高阈值并且大于低阈值,则将其标记为弱边缘像素;如果边缘像素的梯度值小于低阈值,则会被抑制。阈值的选择取决于给定输入图像的内容。

4432d3e02d8dfaa40aec639fc65a7756.png

5 抑制孤立低阈值点

到目前为止,被划分为强边缘的像素点已经被确定为边缘,因为它们是从图像中的真实边缘中提取出来的。然而,对于弱边缘像素,将会有一些争论,因为这些像素可以从真实边缘提取也可以是因噪声或颜色变化引起的。为了获得准确的结果,应该抑制由后者引起的弱边缘。通常,由真实边缘引起的弱边缘像素将连接到强边缘像素,而噪声响应未连接。为了跟踪边缘连接,通过查看弱边缘像素及其8个邻域像素只要其中一个为强边缘像素,则该弱边缘点就可以保留为真实的边缘

443a3232e8fb93454bd22db33fec74e0.png

四、HOG,方向梯度直方图

Histogram of Oriented Gridients,HOG,方向梯度直方图。

1.分割图像

因为HOG是一个局部特征,因此如果你对一大幅图片直接提取特征,是得不到好的效果的。原理很简单。从信息论角度讲,例如一幅640*480的图像,大概有30万个像素点,也就是说原始数据有30万维特征,如果直接做HOG的话,就算按照360度,分成360个bin,也没有表示这么大一幅图像的能力。从特征工程的角度看,一般来说,只有图像区域比较小的情况,基于统计原理的直方图对于该区域才有表达能力,如果图像区域比较大,那么两个完全不同的图像的HOG特征,也可能很相似。但是如果区域较小,这种可能性就很小。最后,把图像分割成很多区块,然后对每个区块计算HOG特征,这也包含了几何(位置)特性。例如,正面的人脸,左上部分的图像区块提取的HOG特征一般是和眼睛的HOG特征符合的。

HOG的图像分割策略,一般来说有overlap和non-overlap两种。

overlap指的是分割出的区块(patch)互相交叠,有重合的区域。non-overlap指的是区块不交叠,没有重合的区域。overlap可以防止对一些物体的切割,以眼睛为例,如果分割的时候正好把眼睛从中间切割并且分到了两个patch中,提取完HOG特征之后,这会影响接下来的分类效果,但是如果两个patch之间overlap,那么至少在一个patch会有完整的眼睛。overlap的缺点是计算量大,因为重叠区域的像素需要重复计算。non-overlap,缺点就是上面提到的,有时会将一个连续的物体切割开,得到不太“好”的HOG特征,优点是计算量小,尤其是与Pyramid(金字塔)结合时,这个优点更为明显。

2.计算每个区块的方向梯度直方图

将图像分割后,接下来计算每个patch的方向梯度直方图。步骤如下:

A.利用任意一种梯度算子,例如:sobel,laplacian等,对该patch进行卷积,计算得到每个像素点处的梯度方向和幅值。具体公式如下:

37acd110a4311c469524e586a2901e84.png

Ix和Iy代表水平和垂直方向上的梯度值,M(x,y)代表梯度幅度值,θ(x,y)代表梯度方向。

B.将360度(2*PI)根据需要分割成若干个bin,例如:分割成16个bin,每个bin包含22.5度,整个直方图包含16维,即16个bin。然后根据每个像素点的梯度方向,利用双线性内插法将其幅值累加到直方图中。

b51b1c05588ed6088b47be0db4bab3ef.png

C.(可选)将图像分割成更大的Block,并利用该Block对其中的每个小patch进行颜色、亮度的归一化,这一步主要是用来去掉光照、阴影等影响的,对于光照影响不剧烈的图像,例如很小区域内的字母,数字图像,可以不做这一步。而且论文中也提及了,这一步的对于最终分类准确率的影响也不大。

3.组成特征

将从每个patch中提取出的“小”HOG特征首尾相连,组合成一个大的一维向量,这就是最终的图像特征。可以将这个特征送到分类器中训练了。例如:有4*4=16个patch,每个patch提取12维的小HOG,那么最终特征的长度就是:16*12=192维。

步骤

1)灰度化(将图像看做一个x,y,z(灰度)的三维图像);

2)采用Gamma校正法对输入图像进行颜色空间的标准化(归一化);目的是调节图像的对比度,降低图像局部的阴影和光照变化所造成的影响,同时可以抑制噪音的干扰;

3)计算图像每个像素的梯度(包括大小和方向);主要是为了捕获轮廓信息,同时进一步弱化光照的干扰。

4)将图像划分成小cells(例如6*6像素/cell);

5)统计每个cell的梯度直方图(不同梯度的个数),即可形成每个cell的descriptor;

6)将每几个cell组成一个block(例如3*3个cell/block),一个block内所有cell的特征descriptor串联起来便得到该block的HOG特征descriptor。

7)将图像image内的所有block的HOG特征descriptor串联起来就可以得到该image(你要检测的目标)的HOG特征descriptor了。这个就是最终的可供分类使用的特征向量了。

对于64*128的图像而言,每16*16的像素组成一个cell,每2*2个cell组成一个块,因为每个cell有9个特征,所以每个块内有4*9=36个特征,以8个像素为步长,那么,水平方向将有7个扫描窗口,垂直方向将有15个扫描窗口。也就是说,64*128的图片,总共有36*7*15=3780个特征。

五、Haar

Haar特征是一种反映图像的灰度变化的,像素分模块求差值的一种特征。它分为三类:边缘特征、线性特征、中心特征和对角线特征。用黑白两种矩形框组合成特征模板,在特征模板内用 黑色矩形像素和减去白色矩形像素和来表示这个模版的特征值。例如:脸部的一些特征能由矩形模块差值特征简单的描述,如:眼睛要比脸颊颜色要深,鼻梁两侧比鼻梁颜色要深,嘴巴比周围颜色要深等。但矩形特征只对一些简单的图形结构,如边缘、线段较敏感,所以只能描述在特定方向(水平、垂直、对角)上有明显像素模块梯度变化的图像结构。

fa4ef58c94fb2df3177e520ecd7be29a.png

如上图A、B、D模块的图像Haar特征为:v=Sum白-Sum黑

C 模块的图像Haar特征为:v=Sum白(左)+Sum白(右)-2*Sum黑

这里要保证白色矩形模块中的像素与黑色矩形的模块的像素数相同,所以乘2

六、LBP,局部二值模式

LBPLocal Binary Pattern,局部二值模式。具有灰度不变性旋转不变性等显著优点。由于该特征的简单易算性,虽然其总体效果不如Haar特征,但速度则快于Haar,所以也得到了广泛的使用。

原始的LBP算子定义为在3∗3的窗口内,以窗口中心像素为阈值,将相邻的8个像素的灰度值与其进行比较,若周围像素值大于等于中心像素值,则该像素点的位置被标记为1,否则为0。这样,3∗3邻域内的8个点经比较可产生8位二进制数(通常转换为十进制数即LBP码,共256种),即得到该窗口中心像素点的LBP值,并用这个值来反映该区域的纹理信息。需要注意的是,LBP值是按照顺时针方向组成的二进制数。

7b8e6821b2f71f526ba751ef6f7cff3c.png

(1)首先将检测窗口划分为16×16的小区域(cell);

(2)对于每个cell中的一个像素,将相邻的8个像素的灰度值与其进行比较,若周围像素值大于中心像素值,则该像素点的位置被标记为1,否则为0。这样,3*3邻域内的8个点经比较可产生8位二进制数,即得到该窗口中心像素点的LBP值;

(3)然后计算每个cell的直方图,即每个数字(假定是十进制数LBP值)出现的频率;然后对该直方图进行归一化处理。

(4)最后将得到的每个cell的统计直方图进行连接成为一个特征向量,也就是整幅图的LBP纹理特征向量;

七、SIFT,尺度不变特征变换

SIFT,即尺度不变特征变换(Scale-invariant feature transform,SIFT),是用于图像处理领域的一种描述。这种描述具有尺度不变性,可在图像中检测出关键点,是一种局部特征描述子。

SIFT特征检测主要包括以下4个基本步骤:

  1. 尺度空间极值检测:

搜索所有尺度上的图像位置。通过高斯微分函数来识别潜在的对于尺度和旋转不变的兴趣点。

2. 关键点定位

在每个候选的位置上,通过一个拟合精细的模型来确定位置和尺度。关键点的选择依据于它们的稳定程度。

3. 方向确定

基于图像局部的梯度方向,分配给每个关键点位置一个或多个方向。所有后面的对图像数据的操作都相对于关键点的方向、尺度和位置进行变换,从而提供对于这些变换的不变性。

4. 关键点描述

在每个关键点周围的邻域内,在选定的尺度上测量图像局部的梯度。这些梯度被变换成一种表示,这种表示允许比较大的局部形状的变形和光照变化。

八、图像分割

①区域增长

区域增长实现的步骤如下:

1. 对图像顺序扫描!找到第1个还没有归属的像素, 设该像素为(x0, y0);

2. 以(x0, y0)为中心, 考虑(x0, y0)的4邻域像素(x, y)如果(x0, y0)满足生长准则, 将(x, y)与(x0, y0)合并(在同一区域内), 同时将(x, y)压入堆栈;

3. 从堆栈中取出一个像素, 把它当作(x0, y0)返回到步骤2;

4. 当堆栈为空时!返回到步骤1;

5. 重复步骤1 - 4直到图像中的每个点都有归属时。生长结束。

②区域分裂合并

1. 把一幅图像分成4份,计算每一份图像的最大灰度值与最小灰度值的差, 如果差在误差范围值外,则该份图像继续分裂。

2. 对于那些不需要分裂的那些份图像可以对其进行阈值切割了,例如某一块图像的最大灰度大于某个值,则该块图像变成255,否则变为0。

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

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

相关文章

文本聚类分析算法_聚类分析算法综述

前 言聚类是人类认识未知世界的一种重要的认知手段。在生产和生活中,人们往往面对非常复杂的事和物,如果能够把相似的东西归为一类,有明显区别的事物分属在不同的类别中,处理起来就大为简便。所谓“物以类聚,人以群分”,说的就是这个道理。譬如人们将生物分为动物和植物,又根据…

按照标题排序mysql_Oracle EBS Form中实现点击列标题进行排序

在做EBS表单开发时,虽然使用folder功能提供了排序功能,对多行数据块可以对前三列进行指定排序,也可以单击前三列的列标题进行排27.1 问题描述在做EBS表单开发时,虽然使用folder功能提供了排序功能,对多行数据块可以对前…

vscode导入本地jar包_go导入本地包踩坑(已解决!)

当我想要仿照C语言的大程序结构,来写go语言的程序,出现下面的报错(ps:系统是windows,文本编辑器(或称IDE)是vscode)然后vscode还会时不时地在右下角出现这样地提示信息对于go语言新手…

java super用法_Java基础面试题汇总

blog.csdn.net/ThinkWon/article/details/104390612Java概述何为编程编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路、方法、和手段通过计算…

java string返回_Java的String字符串内容总结

String--字符串获取字符串的长度使用Sring类的length()方法可获取字符串对象的长度,例:str.length();str代表指定的字符串对象;返回值为返回指定字符串的长度。例:获取字符串中指定字符的索引位置String类提供了indexOf()和lastIndexOf()方法…

汉诺塔java程序_Java编写一个汉诺塔的过程

[java]代码库/** 需求:用Java编写一个汉诺塔的过程* 汉若塔问题,就是把A柱子上面从大到小一次叠放的盘子借助B柱移到C柱上去,规则是一次只能移动一个盘子,大盘子不能放到小盘子之上** 思想:采用递归的方法来接* 1. 先将…

ajax 同步_第3部分-0:同步和异步,还有回调需要了解一下

同步是什么异步是什么 异步场景: (1)定时任务 (2)网络请求:Ajax 、图片加载 全面分析前端的网络请求方式 (3)事件绑定 异步产生知识点: 进程和线程 单线程 记一次 Vue 移…

音频重采样有什么用_最佳音频接口基本购买指南

音频接口是计算机实现录音功能的媒介设备,用于将乐器和麦克风发出的声音转换为数字信息,以便计算机可以理解并存储在硬盘上。在播放音频时,接口将数字音频文件重新转换为模拟信号,然后用监听音箱或耳机播放出来。简而言之&#xf…

java 正则 最后一个字符_正则表达式怎么匹配字符串中最后一串数字?

展开全部importretempDwellTime:666mre.search(r\d*,temp)printrepr(m.group()),m.start(),m.end()mre.search(r\d,temp)printrepr(m.group()),m.start(),m.end()printre.findall(r\d*,temp)输出:006661114[,,,,,,,,,,,666,]扩展资料正则表达式,校验数字…

lombok原理_听说学会用 Lombok 就可以让你早点下班?(你还不看)

听说隔壁用 Lombok 的六点就下班了,我也想六点下班!好的,那么这篇文章就介绍下什么是 Lombok,Lombok 做了什么以及 Lombok 是怎么做的?在介绍之前,先通过是否使用 Lombok 的效果来看下对比,首先…

idea jar包导入_IDEA 实用功能Auto Import:自动优化导包(自动删除、导入包)

下面介绍一下IDEA的一个能显著提升写代码效率的非常好用的功能设置—— Auto ImportAuto Import的功能是可以帮助我们自动删除无用的包Import(未被引用),以及自动Import填充尚未导入的包。完全智能化地帮助我们在开发程序时,省略了导包的操作&#xff0c…

@value 数组_为什么不推荐用for...in遍历数组

(一)for...in引发的一个报错两年前写的一个文章目录生成插件vue-outline,一直用着没出啥问题(本站的文章目录也是用该插件生成的)。但是最近一个网友在使用的时候却出现了异常报错,异常代码使用了一个for..…

mysql存储函数 cursor_MySQL的存储过程写法和“Cursor”的使用

MySQL的存储过程写法和“Cursor”的使用2008-03-11eNet&Ciweek本文中介绍了一个MySQL的存储过程,其中涉及Cursor的使用,示例如下:CREATE PROCEDURE justifyGroupNum()NOT DETERMINISTICSQL SECURITY DEFINERCOMMENT BEGIN/*how to run:ca…

mysql数据库字段变形_详解如何利用amoeba(变形虫)实现mysql数据库读写分离

摘要:这篇MySQL栏目下的“详解如何利用amoeba(变形虫)实现mysql数据库读写分离”,介绍的技术点是“MySQL数据库、数据库读写分离、amoeba、MySQL、读写分离、数据库”,希望对大家开发技术学习和问题解决有帮助。关于mysql的读写分离架构有很多…

bind blz mysql_MySQ DBAL重点剖析课程 企业级MySQL系统安全与DBA运维日常事务管理 运维DBA必备宝典...

MySQ DBAL重点剖析课程 企业级MySQL系统安全与DBA运维日常事务管理 运维DBA必备宝典本资源由JAD资源网收集整理丨www.jiuandun.com资源简介MySQ DBAL重点剖析课程,课程的重点在于企业级MySQL系统安全实战,和MySQL DBA运维的日常事务管理,也就…

怎样解决外键约束_《设计心理学》|找寻“设计师”所遇的真正问题与解决之道...

《设计心理学1》作者[美] 唐纳德A诺曼 。此书始终强调以人为本的设计哲学,将认知心理学和行为学等多学科的方法导入到设计之中。不仅着重于反思设计过程中出现的问题给用户带来的困扰,更着重于解决问题,用这些基本原则帮助设计师找到真正的问…

java dumpheap_java程序性能分析之thread dump和heap dump

一.dump基本概念在故障定位(尤其是out of memory)和性能分析的时候,经常会用到一些文件来帮助我们排除代码问题。这些文件记录了JVM运行期间的内存占用、线程执行等情况,这就是我们常说的dump文件。常用的有heap dump和thread dump(也叫javacore&#xf…

json string 格式_GO小知识之如何做JSON美化

经常有些小知识想分享出来,但又构不成体系,一直觉得文章形式发出不太合适。准备以 "知乎想法" 分享出来,但发现代码展示不太友好。还是发文章吧,该类分享将以 "小知识" 为前缀。后端http接口测试常需要打印 J…

java 对象引用 弱引用吗_谈谈Java对象的强引用,软引用,弱引用,虚引用分别是什么...

整体结构java提供了4中引用类型,在垃圾回收的时候,都有自己的各自特点。为什么要区分这么多引用呢,其实这和Java的GC有密切关系。强引用(默认支持模式)把一个对象赋给一个引用变量,这个引用变量就是一个强引用。强引用是我们最常见…

python图像几何变换_Python 图像处理 OpenCV (5):图像的几何变换

前文传送门: 图像缩放 图像缩放只是调整图像的大小,为此, OpenCV 为我们提供了一个函数 cv.resize() ,原函数如下: resize(src, dsize, dstNone, fxNone, fyNone, interpolationNone) src 表示的是输入图像&#xff0c…