2019-06-06 13:10:11 weixin_43172215 阅读数 28
  • OpenGL视频教程

    初级教程共11个课时,在教程中,我们将从基本的开始,你将学会如何创建窗口,然后,会学到如何创建一个三维的网格? 你会学到如何使用强大的着色器进行编程,如何创建纹理,如何使用光照, 终实现一套完整的渲染管线,得到一个猴子的模型。

    56468 人正在学习 去看看 黄棒清

确定图像旋转角度

图像旋转

图像剪切

图像的光照不均匀校正

由于在实验数据获取的时候不可避免的会有光照不均匀的情况出现,所以在对图像进
行预处理的时候,很重要的一个环节就是对图像中的不均匀亮度进行校正。首先对原始图像f(x,Y)的背景亮度做粗略的估计,将原始图像f(x,Y)分成大小为32x32的不重叠的方块,取子块中的最小值作为图像背景的照度,形成一个粗略估计的背景图像,将此背景图像扩展成和原图像f(x,y)大小相同的矩阵g(x,Y),使用三次插值函数对矩阵g(x,y)中的数据进行平滑,然后从原始图像f(x,Y)中减去经过数据平滑后的矩阵g(x,y,),即:q(x,y)=f(x,y) -g(x,y),通过对比可以看出处理后的结果中背景亮度分布均匀,工件纹理与背景之间的对比更加明显,纹理清晰易于辨别处理。

图像增强

图像增强(image enhancement)技术是不考虑图像降质的原因,只将图像中感兴趣的
特征有选择的突出,而衰减其不需要的特征,所以改善后的图像不一定要去逼近原图像。比如突出目标轮廓,去除各类噪声等等。从图像质量评价观点来看,图像增强的主要目的是提高图像的可懂度,更有利于人的视觉感知。

图像增强技术有两类方法:空间域法(Spatial Domain)和频率域法(Frequence
Domain)。

频率域法

就是在图像的某种变换域内,对图像的变换值进行运算,如先对图像进行傅立叶变换,再对图像的频域进行滤波处理,最后将滤波处理后的图像变换值反变换到空间域,从而获得增强后的图像。这是一种间接处理方法,其原理过程如图3.3所示。
图像增强 图像增强

空间域法

空间域法主要在空间域内对像素灰度值直接运算处理,如图像的灰度变换、直
方图修正、图像空域平滑和锐化处理等。

灰度修正

灰度修正是对图像在空间域进行增强的简单而效果明显的方法。根据图像不同降质现
象以及所需要的不同图像特征,可采用不同的修正方法。常用的方法主要有两种:
(1)针对图像某一部分或整幅图像曝光不足而使用的灰度级变换,其目的是增加图
像的对比度。
(2)直方图修正,能够使图像具有所需要的灰度分布,从而有选择的突出所需要的
图像特征,来满足人们的需要。

a.灰度变换

工件图像的对比度常常不理想,这是由于图像所包含的灰度范围较窄或像素的灰度分
布的非线性造成的。灰度变换就是利用点运算来修改图像像素的灰度,用来增强原图的各部分的反差,用于改善对比度。点运算是按逐个像元把一幅输入图像的亮度值f(x,Y)的动态范围,按函数映射或变换成输出图像g(x,y),使其动态范围扩展至指定范围或整个范围,可表示为:g(x,y)=@(x,y)
g(x,y)上每一点像素与f(x,y)上的像素对应相同的坐标位置。算子@有 线性,分段线性
和非线性等几种形式。本文所用到的是分段线性变换,如图3-4所示。(没图)

b.直方图修正

l、直方图概念
输入图像中某一灰度的像素数目ni所占总像素数目N的份额,p称为该灰度像素在该图像中出现的概率密度,它随灰度交换的函数称为输入图像的概率密度函数:p=ni/N (i=0,1⋯,L-1)其中L为灰度级总数目。
直方图变换是以概率理论为基础演绎出来的对灰度进行变换的又一种对比度增强技
术。为了改善一些目标的对比度,可修改各部分的灰度的比例关系,即可通过改造直方图的办法来实现。特别是把原图像直方图两端加以扩展,而中间峰值区域加以压缩,使得输出图像的概率密度见(蜀)所构成的整个直方图呈现均衡分布,如图3-6所示,则输出图像的清晰度会明显提高。
工件图像的直方图均衡化
对工件图像进行直方图均衡化,
(具体公式要再看)

图像平滑

图像平滑(Smoothing)的主要目的是减少噪声。工件图像在拍摄以及传输的过程中,
一定会受到噪声的干扰,另外,工件表面的一些毛刺以及粘在工件表面的细小切屑在图像中都会以噪声的形式出现,所以需要对工件图像进行消除噪声的处理。
a,均值滤波 b.中值滤波

中值滤波,高斯滤波(要再看下)

图像分割(特征提取??)

图像分割(Image Segmentation)是把图像分割成若干个特定的、具有独特性质的区
域并提取出感兴趣目标的技术和过程。在对图像的研究和应用中,人们往往仅对图像的某些部分感兴趣(目标或背景),它们一般对应图像中特定的、具有独特性质的区域。为了
分析和识别目标,需要将它们分割并提取出来
图像分割的基本概念是将图像中有意义的特征或者需要应用的特征提取出来。这些特
征可以是图像场的原始特征,如物体占有区的像素灰度值、物体轮廓曲线和纹理特征等;也可以是空间频谱,或直方图特征等。

图像分割是由图像处理转到图像分析的关键阶段。一方面,它是目标图像表达的基础,
对特征测量有重要的影响。另一方面,图像分割和分割的目标表达、特征提取和参数测量等将原始图像转化为数学表达式,使得利用计算机进行图像分析和理解成为可能。
例如有把分割算法分成三类的,①边缘检测②阈值分割和③区域生长。但事实上阈值分割的方法在本质上也是一种区域提取方法,所以③实际上包含了①。另外也有把分割算法分成六部分讨论的①阈值分割②像素分类③深度图像分割④彩色图像分割⑤边缘检测和⑥基于模糊集的方法。从算法的角度来看,各部分内容是有重叠的。

a.边缘检测的梯度算法

l、梯度边缘检测算法基本步骤
梯度边缘检测算法有以下四个步骤:
(1)滤波:边缘检测算法主要是基于图像强度的一阶和二阶导数,但导数的计算对噪声敏感,因此必须使用滤波器来改善与噪声有关的边缘检测器的性能。需要指出,大多数滤波器在降低噪声的同时也导致了边缘强度的损失,因此,增强边缘和降低噪声之间需要折中。
(2)增强:增强边缘的基础是确定图像各点领域强度的变化值。增强算法可以将领域(或局部)强度值有显著变化的点突显出来。边缘增强一般是通过计算梯度来完成的。
(3)检测:在图像中有许多点的梯度幅值比较大,而这些点在特定的应用领域中并不都是边缘,所以应该用某种方法来确定哪些点是边缘点。最简单的边缘检测判据是梯度幅值阈值判断。
(4)定位:如果某一应用场合要求确定边缘位置,则边缘检测的位置可在子像素分辨率上来估计,边缘的方位也可以被估计出来。
在边缘检测算法中,前三个步骤用的十分普遍。这是因为大多数场合下,仅仅需要边
缘检测器指出边缘出现在图像某一像素点的附近,而没有必要指出边缘的精确位置或方
向。

b 灰度阈值分割

只用一个阈值分割称为单阈值分割方法,如果用多个阈值分割称为多阈值分割方法
可将取阈值分割方法分为如下三类:
(1)基于各像素值得阈值阈值仅根据f(x,Y)来选取,所得到的阈值仅与全图各
像素的本身性质(像素值)有关。
(2)基于区域性质的阈值阈值是根据f(x,Y)和p(x,Y)来选取的,所得的阈值与
区域性质(区域内各像素的值,相邻像素值的关系等)有关。
(3)基于坐标位置的阈值阈值进一步(除根据f(x,y)和p(x,y)来选取外)还与x,Y
有关,即阈值要考虑位置(x,Y)来确定,则所得的闽值是与像素空间坐标有关的。确定第一类阈值的技术有时称为点相关技术,而确定第二类阈值的技术有时称为区域相关技术,确定第三类阈值的技术有时称为动态阈值技术。前两类也有称为全局闽值的,第三类也有叫局部阈值的。在一定意义上可以认为局部阈值化是全局阈值化技术的局部化特征。

全局阈值

l、极小值点阈值
将图像的灰度直方图的包络看作一条曲线,则选取直方图的谷可借助求曲线极小值的
方法。设用^(z)代表直方图,那么极小值点应同时满足:一阶导数=0,二阶导数>0
2、最优阈值
有时图像中目标和背景的灰度值有部分交错,这时如用一个全局阈值进行分割则总会
产生一定的误差。实际中常希望能尽可能减小误分割的概率,而选取最优阈值是一种常用的方法。设有这样一幅混有加性高斯噪声的图像,背景和目标的概率密度分别是n(z)和
见(z),整幅图像的混合概率密度:(2007年论文里找,没网弄不上图)
其中H和鲍分别是背景和目标区域的平均灰度值,q和吼分别是关于均值的均方差,丑
和昱分别是背景和目标区域灰度值的先验概率。根据概率定义有号+最=1,所以混合概
率密度式(3.29)中有5个未知的参数。如果能求得这些参数就可以确定混合概率密度。

动态阈值

当图像中有如下一些情况:有阴影、光照不均匀、各处的对比度不同、突发噪声、背
景灰度变化等等,如果只用一个固定的全局阈值对整幅图像进行分割,则由于不能兼顾图
像各处的情况而使分割效果受到影响。有一种解决办法是用与坐标相关的一组阈值来对图
像各部分分别进行分割。这种与坐标相关的阈值也叫动态阈值,这种取阈值的分割方法也
叫变化阈值法【31】。
l、阈值插值
具体步骤如下:
(1)将整幅图像分成一系列互相之间有50%重叠的子图像;
(2)做出每个子图像的直方图;
(3)检测各个子图像的直方图是否为双峰,如果是就进行阈值选取,否则不处理;
(4)根据对直方图为双峰的子图像得到的阈值,通过插值得到所有的子图像的阈值:
(5)根据各子图像的阂值,再通过插值得到所有像素的阂值,然后对图像进行分割。
2、水线阈值算法
水线(也称为分水岭或流域,Watershed)阈值算法和直接在最佳阈值处分割不同,它是一种特殊的白适应迭代阈值分割算法。实际中水线算法首先用一个比较高但得到的结构仍能把每个目标孤立开的阈值进行分割。然后,当阈值逐渐减小并且逼近最佳阈值时,不再合并原已分开的目标。这样就可以解决采用全局阈值方法在目标很接近时造成的目标合并问题。

总结

本章对常用的图像预处理算法进行了研究、分析和比较,从理论基础和实验分析两方
面对工件图像的几何变换、图像增强、边缘检测、图像分割等问题进行了阐述,并且找出了适用于工件图像的预处理算法,为后续章节的图像特征提取奠定了基础。本章的主要工作如下:
(1)由于诸多原因造成实验所得到的工件图像只有中间区域可用,所以介绍了工件图像的剪切方法,并简要介绍了工件图像光照不均匀校正的有效方法。
(2)在图像增强方法中,主要包括灰度修正(改善对比度)和图像平滑(消噪)两方面,通过对工件图像进行具体算法处理,比较之后得到了适用于工件图像增强的最佳办法。在实际应用中,我们选用灰度变换的方法来改善工件图像的对比度,选用中值滤波的方法对工件图像进行消噪。
(3)在图像分割方法中,简要地介绍了图像分割方法的基本概念,并对工件图像进行了边缘检测和灰度闽值分割算法的处理,结果比较之后发现在进行边缘检测时,Canny算子的检测结果最好,它能把比较细节的边缘检测出来,另外在对工件图像进行阈值分割时,最佳的方法为全局阈值法。

纹理分析的基本方法介绍

信号处理的角度 空域分析+时域分析
模式识别的角度 统计聚类√+文法推理
纹理算法 统计分析√+结构分析

像素空间投影统计分析法

适用性:针对纹理比较单一,方向性比较强的纹理
方法:1,强化边缘;2.提取单一行/列像素信息(归一化;2维->1维);3累计面积计算

灰度共生矩阵法

灰度共生矩阵是一幅图像的二次统计
将二阶直方图的频率表示改算成频数表示,然后将其表示成矩阵形式,这个矩阵就被称为灰度共生矩阵。这个矩阵是这样定义的:对于取定的方向Q和距离d,在方向为Q的直线上,一个像素灰度为i,另一个与其相距为d的像素的灰度为j的点对出现的频数作为这个矩阵的第(i,j)阵元的值,灰度共生矩阵的元素p(i,j| d,Q)描述在Q方向上,相隔d个像素距离的一对像素分别具有灰度层i和j的出现概率(频数)。
越均匀,频数越大,灰度共生矩阵法正是建立在估计图像的二阶组合条件概率密度函数基础上的一种重要的纹理分析方法。该方法是纹理分析的重要方法之一,它能够较精确地反映纹理粗糙程度和重复方向。
选不同方向的,就是不同角度的灰度共生矩阵,主对角线上元素很大
沿纹理方向的共生矩阵中,主对角线元素值很大,而其他元素的值全为零,这正说明了沿纹理方向上没有灰度变化。可见,大的主对角线元素提供了识别纹理方向的可能性。

元素值的离散性

灰度共生矩阵中元素值相对于主对角线的分布可用离散性来表示,它常常反映纹理的
粗细程度。离主对角线远的元素的归一化值高,即元素值的离散性大,也就是说,一定位置关系的两像素间灰度差大的比例高。离散性大意味着相邻像素问灰度差大的比例高,说明图像上垂直于该方向的纹理较细:相反,则图像上垂直于该方向上的纹理较租。当非主对角线上的元素的归一化结果全部为零时,元素值的离散性最小,即图像上垂直于该方向上不可能出现纹理。总的来说,离散性小的时候纹理较粗,离散性大的时候纹理较细。
(1)角二阶矩E(能量)
(2)惯性矩I(对比度)
(3)熵H
(4)局部均匀性工(逆差矩)
除了上述4个常用的纹理特征系数以外,还有诸如相关性、方差、和平均、和方差等
多个特征系数。

等灰度游程长度法

第g行第n列阵元等于在取定方向上灰度为g、游程长为n的情况出现的次数,记为P(g,n)

在这里插入图片描述
如果图像中各灰度的各游程长度接近于等分布时,RF3具有最低值。这时说明整个
图像的灰度分布是不均匀的。如果图像中某种灰度出现较多,即灰度较均匀一致时,RF3具有较高的值。这个指标从一个层面上反映了其灰度均匀性的情况。RF3较小通常表明纹理较细,变化较剧烈:RF3较大表明纹理较粗,变化平缓。
在这里插入图片描述
预处理过程包括剪切、光照不均匀校正、灰度修正、平滑、图像分割及边缘提取。将预处理后的图像用像素空间投影统计法进行分析,

我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

  1. 全新的界面设计 ,将会带来全新的写作体验;
  2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
  3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
  4. 全新的 KaTeX数学公式 语法;
  5. 增加了支持甘特图的mermaid语法1 功能;
  6. 增加了 多屏幕编辑 Markdown文章功能;
  7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
  8. 增加了 检查列表 功能。

功能快捷键

撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G

合理的创建标题,有助于目录的生成

直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

如何改变文本的样式

强调文本 强调文本

加粗文本 加粗文本

标记文本

删除文本

引用文本

H2O is是液体。

210 运算结果是 1024.

插入链接与图片

链接: link.

图片: Alt

带尺寸的图片: Alt

居中的图片: Alt

居中并且带尺寸的图片: Alt

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

如何插入一段漂亮的代码片

博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

// An highlighted block
var foo = 'bar';

生成一个适合你的列表

  • 项目
    • 项目
      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目 Value
电脑 $1600
手机 $12
导管 $1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列 第二列 第三列
第一列文本居中 第二列文本居右 第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPE ASCII HTML
Single backticks 'Isn't this fun?' ‘Isn’t this fun?’
Quotes "Isn't this fun?" “Isn’t this fun?”
Dashes -- is en-dash, --- is em-dash – is en-dash, — is em-dash

创建一个自定义列表

Markdown
Text-to-HTML conversion tool
Authors
John
Luke

如何创建一个注脚

一个具有注脚的文本。2

注释也是必不可少的

Markdown将文本转换为 HTML

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ(n)=(n1)!nN\Gamma(n) = (n-1)!\quad\forall n\in\mathbb N 是通过欧拉积分

Γ(z)=0tz1etdt . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.

你可以找到更多关于的信息 LaTeX 数学表达式here.

新的甘特图功能,丰富你的文章

Mon 06Mon 13Mon 20已完成 进行中 计划一 计划二 现有任务Adding GANTT diagram functionality to mermaid
  • 关于 甘特图 语法,参考 这儿,

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::

张三李四王五你好!李四, 最近怎么样?你最近怎么样,王五?我很好,谢谢!我很好,谢谢!李四想了很长时间,文字太长了不适合放在一行.打量着王五...很好... 王五, 你怎么样?张三李四王五

这将产生一个流程图。:

链接
长方形
圆角长方形
菱形
  • 关于 Mermaid 语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

Created with Raphaël 2.2.0开始我的操作确认?结束yesno
  • 关于 Flowchart流程图 语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件或者.html文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。


  1. mermaid语法说明 ↩︎

  2. 注脚的解释 ↩︎

2012-07-04 16:57:50 xiaojiegege123456 阅读数 71163
  • OpenGL视频教程

    初级教程共11个课时,在教程中,我们将从基本的开始,你将学会如何创建窗口,然后,会学到如何创建一个三维的网格? 你会学到如何使用强大的着色器进行编程,如何创建纹理,如何使用光照, 终实现一套完整的渲染管线,得到一个猴子的模型。

    56468 人正在学习 去看看 黄棒清

不同图像灰度不同,边界处一般会有明显的边缘,利用此特征可以分割图像。需要说明的是:边缘和物体间的边界并不等同,边缘指的是图像中像素的值有突变的地方,而物体间的边界指的是现实场景中的存在于物体之间的边界。有可能有边缘的地方并非边界,也有可能边界的地方并无边缘,因为现实世界中的物体是三维的,而图像只具有二维信息,从三维到二维的投影成像不可避免的会丢失一部分信息;另外,成像过程中的光照和噪声也是不可避免的重要因素。正是因为这些原因,基于边缘的图像分割仍然是当前图像研究中的世界级难题,目前研究者正在试图在边缘提取中加入高层的语义信息。

在实际的图像分割中,往往只用到一阶和二阶导数,虽然,原理上,可以用更高阶的导数,但是,因为噪声的影响,在纯粹二阶的导数操作中就会出现对噪声的敏感现象,三阶以上的导数信息往往失去了应用价值。二阶导数还可以说明灰度突变的类型。在有些情况下,如灰度变化均匀的图像,只利用一阶导数可能找不到边界,此时二阶导数就能提供很有用的信息。二阶导数对噪声也比较敏感,解决的方法是先对图像进行平滑滤波,消除部分噪声,再进行边缘检测。不过,利用二阶导数信息的算法是基于过零检测的,因此得到的边缘点数比较少,有利于后继的处理和识别工作。

各种算子的存在就是对这种导数分割原理进行的实例化计算,是为了在计算过程中直接使用的一种计算单位

Roberts算子:边缘定位准,但是对噪声敏感。适用于边缘明显且噪声较少的图像分割。Roberts边缘检测算子是一种利用局部差分算子寻找边缘的算子,Robert算子图像处理后结果边缘不是很平滑。经分析,由于Robert算子通常会在图像边缘附近的区域内产生较宽的响应,故采用上述算子检测的边缘图像常需做细化处理,边缘定位的精度不是很高

Prewitt算子:对噪声有抑制作用,抑制噪声的原理是通过像素平均,但是像素平均相当于对图像的低通滤波所以Prewitt算子对边缘的定位不如Roberts算子。

Sobel算子:Sobel算子和Prewitt算子都是加权平均,但是Sobel算子认为,邻域的像素对当前像素产生的影响不是等价的,所以距离不同的像素具有不同的权值,对算子结果产生的影响也不同。一般来说,距离越远,产生的影响越小。

Isotropic Sobel算子:加权平均算子,权值反比于邻点与中心点的距离,当沿不同方向检测边缘时梯度幅度一致,就是通常所说的各向同性。

在边沿检测中,常用的一种模板是Sobel 算子。Sobel 算子有两个,一个是检测水平边沿的;另一个是检测垂直平边沿的 。Sobel算子另一种形式是各向同性Sobel(Isotropic Sobel)算子,也有两个,一个是检测水平边沿的,另一个是检测垂直平边沿的 。各向同性Sobel算子和普通Sobel算子相比,它的位置加权系数更为准确,在检测不同方向的边沿时梯度的幅度一致。由于建筑物图像的特殊性,我们可以发现,处理该类型图像轮廓时,并不需要对梯度方向进行运算,所以程序并没有给出各向同性Sobel算子的处理方法。
    由于Sobel算子是滤波算子的形式,用于提取边缘,可以利用快速卷积函数,简单有效,因此应用广泛。美中不足的是,Sobel算子并没有将图像的主体与背景严格地区分开来,换言之就是Sobel算子没有基于图像灰度进行处理,由于Sobel算子没有严格地模拟人的视觉生理特征,所以提取的图像轮廓有时并不能令人满意。  在观测一幅图像的时候,我们往往首先注意的是图像与背景不同的部分,正是这个部分将主体突出显示,基于该理论,我们可以给出阈值化轮廓提取算法,该算法已在数学上证明当像素点满足正态分布时所求解是最优的。

上面的算子是利用一阶导数的信息,属于梯度算子范畴。

Laplacian算子:这是二阶微分算子。其具有各向同性,即与坐标轴方向无关,坐标轴旋转后梯度结果不变。但是,其对噪声比较敏感,所以,图像一般先经过平滑处理,因为平滑处理也是用模板进行的,所以,通常的分割算法都是把Laplacian算子和平滑算子结合起来生成一个新的模板。

Laplacian算子一般不以其原始形式用于边缘检测,因为其作为一个二阶导数,Laplacian算子对噪声具有无法接受的敏感性;同时其幅值产生算边缘,这是复杂的分割不希望有的结果;最后Laplacian算子不能检测边缘的方向;所以Laplacian在分割中所起的作用包括:(1)利用它的零交叉性质进行边缘定位;(2)确定一个像素是在一条边缘暗的一面还是亮的一面;一般使用的是高斯型拉普拉斯算子(Laplacian of a Gaussian,LoG),由于二阶导数是线性运算,利用LoG卷积一幅图像与首先使用高斯型平滑函数卷积改图像,然后计算所得结果的拉普拉斯是一样的。所以在LoG公式中使用高斯函数的目的就是对图像进行平滑处理,使用Laplacian算子的目的是提供一幅用零交叉确定边缘位置的图像;图像的平滑处理减少了噪声的影响并且它的主要作用还是抵消由Laplacian算子的二阶导数引起的逐渐增加的噪声影响。

 

几种常用的边缘检测算子主要有Roberts边缘检测算子,Sobel算子、Prewitt算子、Krisch边缘算子,高斯-拉普拉斯算子。
边缘大致可以分为两种,一种是阶跃状边缘,边缘两边像素的灰度值明显不同;另一种为屋顶状边缘,边缘处于灰度值由小到大再到小的变化转折点处。
边缘检测的主要工具是边缘检测模板。我们以一个一维模板为例来考察边缘检测模板是如何作用的。假设有一个模板基于Roberts算子的边缘检测 和一幅图象基于Roberts算子的边缘检测

可以看出,图象中左边暗,右边亮,中间存在着一条明显的边缘,是一个典型阶跃状边缘。使用模板基于Roberts算子的边缘检测 进行模板操作后,结果如下

基于Roberts算子的边缘检测

可以看出,边缘检测后的图象在原图象暗亮边缘处的灰度值高很多。观察时,就能发现一条很明显的亮边,其他区域都很暗,这样就起到了边缘检测的作用。
模板的作用是将右邻点的灰度值减去左邻点的灰度值作为该点的灰度值。在灰度相近的区域内,这么做的结果使得该点的灰度值接近于0;而在边缘附近,灰度值有明显的跳变,这么做的结果使得该点的灰度值很大,这样就出现了上面的结果。这种模板就是一种边缘检测器,它在数学上的涵义是一种基于梯度的滤波器,习惯上又称边缘算子。我们知道,梯度是有方向的,和边缘的方向总是垂直的。模板是水平方向的,而上面那幅图象的边缘恰好是垂直方向的,使用模板就可以将它检测出来。如果图象的边缘是水平方向的,我们可以用梯度是垂直
方向的模板基于Roberts算子的边缘检测 检测它的边缘。如果图象的边缘是45。方向的,我们可以用模板基于Roberts算子的边缘检测 检测它的边缘。

常用的边缘检测模板有Laplacian算子、Roberts算子、Sobel算子、log(Laplacian-Gauss)算子、Kirsch算子和Prewitt算子等。

 

二.Roberts算子

 

如果我们沿如下图方向角度求其交叉方向的偏导数,则得到Roberts于1963年提出的交叉算子边缘检测方法。该方法最大优点是计算量小,速度快。但该方法由于是采用偶数模板,如下图所示,所求的(x,y)点处梯度幅度值,其实是图中交叉点处的值,从而导致在图像(x,y)点所求的梯度幅度值偏移了半个像素(见下图)。

 边缘检测

边缘检测

Roberts算子的推导:

 
Sobel算子

Sobel算子也有两个,一个是检测水平边缘的模板基于Sobel算子的边缘检测 ,另一个是检测水平边缘的模板基于Sobel算子的边缘检测 。与Prewitt算子相比,Sobel算子对于象素位置的影响作了加权,因此效果更好。

sobel算子的另一种形式是各向同性Sobel算子,也有两个模板组成,一个是检测水平边缘的基于Sobel算子的边缘检测 ,另一个是检测垂直边缘的基于Sobel算子的边缘检测。各向同性Sobel算子和普通Sobel算子相比,位置加权系数更为准确,在检测不同方向的边缘时梯度的幅度一致。

Sobel算子的推导:

Prewitt算子

Prewitt算子由两部分组成,检测水平边缘的模板

基于prewitt算子的边缘检测基于prewitt算子的边缘检测检测垂直边缘的模板

prewitt算子一个方向求微分,一个方向求平均,所以对噪声相对不敏感。

 

laplacian算子

Laplacian算子定义为

基于Laplacian算子的边缘检测

它的差分形式为
基于Laplacian算子的边缘检测


表示成模板的形式就是 基于Laplacian算子的边缘检测。Laplacian算子另外一种形式是基于Laplacian算子的边缘检测,也经常使用。Laplace算子是一种各向同性算子,在只关心边缘的位置而不考虑其周围的象素灰度差值时比较合适。Laplace算子对孤立象素的响应要比对边缘或线的响应要更强烈,因此只适用于无噪声图象。存在噪声情况下,使用Laplacian算子检测边缘之前需要先进行低通滤波。

 

2013-05-07 18:50:54 sangni007 阅读数 4303
  • OpenGL视频教程

    初级教程共11个课时,在教程中,我们将从基本的开始,你将学会如何创建窗口,然后,会学到如何创建一个三维的网格? 你会学到如何使用强大的着色器进行编程,如何创建纹理,如何使用光照, 终实现一套完整的渲染管线,得到一个猴子的模型。

    56468 人正在学习 去看看 黄棒清

不同图像灰度不同,边界处一般会有明显的边缘,利用此特征可以分割图像。需要说明的是:缘和物体间的边界并不等同,边缘指的是图像中像素的值有突变的地方,而物体间的边界指的是现实场景中的存在于物体之间的边界。有可能有边缘的地方并非边界,也有可能边界的地方并无边缘,因为现实世界中的物体是三维的,而图像只具有二维信息,从三维到二维的投影成像不可避免的会丢失一部分信息;另外,成像过程中的光照和噪声也是不可避免的重要因素。正是因为这些原因,基于边缘的图像分割仍然是当前图像研究中的世界级难题,目前研究者正在试图在边缘提取中加入高层的语义信息。

在实际的图像分割中,往往只用到一阶和二阶导数,虽然,原理上,可以用更高阶的导数,但是,因为噪声的影响,在纯粹二阶的导数操作中就会出现对噪声的敏感现象,三阶以上的导数信息往往失去了应用价值。二阶导数还可以说明灰度突变的类型。在有些情况下,如灰度变化均匀的图像,只利用一阶导数可能找不到边界,此时二阶导数就能提供很有用的信息。二阶导数对噪声也比较敏感,解决的方法是先对图像进行平滑滤波,消除部分噪声,再进行边缘检测。不过,利用二阶导数信息的算法是基于过零检测的,因此得到的边缘点数比较少,有利于后继的处理和识别工作。

各种算子的存在就是对这种导数分割原理进行的实例化计算,是为了在计算过程中直接使用的一种计算单位。


1.Sobel算子

其主要用于边缘检测,在技术上它是以离散型的差分算子,用来运算图像亮度函数的梯度的近似值, Sobel算子是典型的基于一阶导数的边缘检测算子,由于该算子中引入了类似局部平均的运算,因此对噪声具有平滑作用,能很好的消除噪声的影响。Sobel算子对于象素的位置的影响做了加权,与Prewitt算子、Roberts算子相比因此效果更好。

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

                       

检测水平边沿 横向模板 :           检测垂直平边沿 纵向模板:

图像的每一个像素的横向及纵向梯度近似值可用以下的公式结合,来计算梯度的大小。

                                                                             

然后可用以下公式计算梯度方向。

                                                                           


在以上例子中,如果以上的角度Θ等于零,即代表图像该处拥有纵向边缘,左方较右方暗。

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


2. Isotropic Sobel算子

Sobel算子另一种形式是(Isotropic Sobel)算子,加权平均算子,权值反比于邻点与中心点的距离,当沿不同方向检测边缘时梯度幅度一致,就是通常所说的各向同性Sobel(Isotropic Sobel)算子。模板也有两个,一个是检测水平边沿的 ,另一个是检测垂直平边沿的 。各向同性Sobel算子和普通Sobel算子相比,它的位置加权系数更为准确,在检测不同方向的边沿时梯度的幅度一致。


3. Roberts算子

罗伯茨算子、Roberts算子是一种最简单的算子,是一种利用局部差分算子寻找边缘的算子,他采用对角线方向相邻两象素之差近似梯度幅值检测边缘。检测垂直边缘的效果好于斜向边缘,定位精度高,对噪声敏感,无法抑制噪声的影响。1963年,Roberts提出了这种寻找边缘的算子。
Roberts边缘算子是一个2x2的模板,采用的是对角方向相邻的两个像素之差。从图像处理的实际效果来看,边缘定位较准,对噪声敏感。适用于边缘明显且噪声较少的图像分割。Roberts边缘检测算子是一种利用局部差分算子寻找边缘的算子,Robert算子图像处理后结果边缘不是很平滑。经分析,由于Robert算子通常会在图像边缘附近的区域内产生较宽的响应,故采用上述算子检测的边缘图像常需做细化处理,边缘定位的精度不是很高。


4. Prewitt算子

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

 对数字图像f(x,y),Prewitt算子的定义如下:

G(i)=|[f(i-1,j-1)+f(i-1,j)+f(i-1,j+1)]-[f(i+1,j-1)+f(i+1,j)+f(i+1,j+1)]|
G(j)=|[f(i-1,j+1)+f(i,j+1)+f(i+1,j+1)]-[f(i-1,j-1)+f(i,j-1)+f(i+1,j-1)]|
则 P(i,j)=max[G(i),G(j)]或 P(i,j)=G(i)+G(j)
经典Prewitt算子认为:凡灰度新值大于或等于阈值的像素点都是边缘点。即选择适当的阈值T,若P(i,j)≥T,则(i,j)为边缘点,P(i,j)为边缘图像。这种判定是欠合理的,会造成边缘点的误判,因为许多噪声点的灰度值也很大,而且对于幅值较小的边缘点,其边缘反而丢失了。

Prewitt算子对噪声有抑制作用,抑制噪声的原理是通过像素平均,但是像素平均相当于对图像的低通滤波,所以Prewitt算子对边缘的定位不如Roberts算子。

因为平均能减少或消除噪声,Prewitt梯度算子法就是先求平均,再求差分来求梯度。水平和垂直梯度模板分别为:

检测水平边沿 横向模板                 检测垂直平边沿 纵向模板:

该算子与Sobel算子类似,只是权值有所变化,但两者实现起来功能还是有差距的,据经验得知Sobel要比Prewitt更能准确检测图像边缘。


5.Laplacian算子

Laplace算子是一种各向同性算子,二阶微分算子,在只关心边缘的位置而不考虑其周围的象素灰度差值时比较合适。Laplace算子对孤立象素的响应要比对边缘或线的响应要更强烈,因此只适用于无噪声图象。存在噪声情况下,使用Laplacian算子检测边缘之前需要先进行低通滤波。所以,通常的分割算法都是把Laplacian算子和平滑算子结合起来生成一个新的模板。

拉普拉斯算子也是最简单的各向同性微分算子,具有旋转不变性。一个二维图像函数的拉普拉斯变换是各向同性的二阶导数,定义

                                                                           

了更适合于数字图像处理,将拉式算子表示为离散形式:

另外,拉普拉斯算子还可以表示成模板的形式,如下图所示,


离散拉普拉斯算子的模板:, 其扩展模板:


拉式算子用来改善因扩散效应的模糊特别有效,因为它符合降制模型。扩散效应是成像过程中经常发生的现象。

Laplacian算子一般不以其原始形式用于边缘检测,因为其作为一个二阶导数,Laplacian算子对噪声具有无法接受的敏感性;同时其幅值产生算边缘,这是复杂的分割不希望有的结果;最后Laplacian算子不能检测边缘的方向;所以Laplacian在分割中所起的作用包括:(1)利用它的零交叉性质进行边缘定位;(2)确定一个像素是在一条边缘暗的一面还是亮的一面;一般使用的是高斯型拉普拉斯算子(Laplacian of a Gaussian,LoG),由于二阶导数是线性运算,利用LoG卷积一幅图像与首先使用高斯型平滑函数卷积改图像,然后计算所得结果的拉普拉斯是一样的。所以在LoG公式中使用高斯函数的目的就是对图像进行平滑处理,使用Laplacian算子的目的是提供一幅用零交叉确定边缘位置的图像;图像的平滑处理减少了噪声的影响并且它的主要作用还是抵消由Laplacian算子的二阶导数引起的逐渐增加的噪声影响。

 


6.Canny算子

该算子功能比前面几种都要好,但是它实现起来较为麻烦,Canny算子是一个具有滤波,增强,检测的多阶段的优化算子,在进行处理前,Canny算子先利用高斯平滑滤波器来平滑图像以除去噪声,Canny分割算法采用一阶偏导的有限差分来计算梯度幅值和方向,在处理过程中,Canny算子还将经过一个非极大值抑制的过程,最后Canny算子还采用两个阈值来连接边缘。

Canny边缘检测算法

step1: 用高斯滤波器平滑图象;

step2: 用一阶偏导的有限差分来计算梯度的幅值和方向;

step3: 对梯度幅值进行非极大值抑制

step4: 用双阈值算法检测和连接边缘

详解:http://www.cnblogs.com/cfantaisie/archive/2011/06/05/2073168.html


(1)图象边缘检测必须满足两个条件:一能有效地抑制噪声;二必须尽量精确确定边缘的位置。

(2)根据对信噪比与定位乘积进行测度,得到最优化逼近算子。这就是Canny边缘检测算子。

(3)类似与Marr(LoG)边缘检测方法,也属于先平滑后求导数的方法。



2019-09-22 11:06:35 ytkml2016 阅读数 144
  • OpenGL视频教程

    初级教程共11个课时,在教程中,我们将从基本的开始,你将学会如何创建窗口,然后,会学到如何创建一个三维的网格? 你会学到如何使用强大的着色器进行编程,如何创建纹理,如何使用光照, 终实现一套完整的渲染管线,得到一个猴子的模型。

    56468 人正在学习 去看看 黄棒清

 

眼底图像分析需要首先获取ROI 感兴趣区,这样在后续的处理中能有效避免ROI 区域外的像素的影响,降低运算的复杂度。

一般选取彩色眼底图像最能反映光照情况的红色通道灰度图进行处理,包括两步:阈值处理和形态学腐蚀操作

我们用彩色眼底图像的红色通道做了mask 掩膜图,得到满意的结果。

代码如下:

#从目录下读取彩色眼底图,

img_ori = cv2.imread('./dataset/1.jpg')

#调整到图像统一尺寸

img_resized = cv2.resize(img_ori, (width, height), interpolation=cv2.INTER_CUBIC)

#分离出红色通道

b,g,r = cv2.split(img_resized)

#对红色通道图进行CLAHE 处理

clahe = cv2.createCLAHE(cliplimt=2.0,titleGrideSize=(8,8))

img_clahe_red = clahe.apply(r)

# 获得 红色通道的掩膜图

img_red_mask = get_redmask(img_clahe_red)

#保存掩膜图

cv2.imwrite('./mask/1_mask.png',img_red_mask )

----------下面是掩膜图处理函数 --------------

def get_redmask(img_red):

# 采用红色通道的阈值为 10 过滤非 ROI区 , 即取图像最大亮度区200~255 之间的 5%

ret, img_threshold = cv2.threshold(img_red,10,255,cv.THRESH_BINARY)

#创建 半径为 3 的圆形结构元素做kernel

kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3, 3))

# 对 ROI 区进行腐蚀运算

img_erode = cv2.erode(img_threshold, kernel, iterations=1)

# 对显示结果 

cv2.imshow('redm', img_erode)

#返回 结果

return img_erode

2015-04-10 17:22:00 a511244213 阅读数 867
  • OpenGL视频教程

    初级教程共11个课时,在教程中,我们将从基本的开始,你将学会如何创建窗口,然后,会学到如何创建一个三维的网格? 你会学到如何使用强大的着色器进行编程,如何创建纹理,如何使用光照, 终实现一套完整的渲染管线,得到一个猴子的模型。

    56468 人正在学习 去看看 黄棒清
1.运动检测定义

运动检测是指在指定区域能识别图像的变化,检测运动物体的存在并避免由光线变化带来的干扰。但是如何从实时的序列图像中将变化区域从背景图像中提取出来,还要考虑运动区域的有效分割对于目标分类、跟踪等后期处理是非常重要的,因为以后的处理过程仅仅考虑图像中对应于运动区域的像素。然而,由于背景图像的动态变化,如天气、光照、影子及混乱干扰等的影响,使得运动检测成为一项相当困难的工作。

2.运动检测原理

早期的运动检测如 MPEG1 是对编码后产生的 I 帧进行比较分析,通过视频帧的比较来检测图像变化是一种可行的途径。原理如下:MPEG1 视频流由三类编码帧组成,它们分别是:关键帧(I 帧) ,预测帧(P 帧)和内插双向帧(B 帧) 。I帧按 JPEG 标准编码,独立于其他编码帧,它是 MPEG1 视频流中唯一可存取的帧, 每 12 帧出现一次。截取连续的 I 帧,经过解码运算,以帧为单位连续存放在内存的缓冲区中,再利用函数在缓冲区中将连续的两帧转化为位图形式,存放在另外的内存空间以作比较之用,至于比较的方法有多种。此方法是对编码
后的数据进行处理,而目前的 MPEG1/MPEG4 编码都是有损压缩,对比原有的图象肯定存在误报和不准确。

3.下面介绍目前几种常用的算法

a.背景减除(Background Subtraction)

  背景减除方法是目前运动检测中最常用的一种方法,它是利用当前图像与背景图像的差分来检测出运动区域的一种技术。它一般能够提供最完全的特征数据,但对于动态场景的变化,如光照和外来无关事件的干扰等特别敏感。 最简单的背景模型是时间平均图像, 大部分的研究人员目前都致力于开发不同的背景模型,以期减少动态场景变化对于运动分割的影响。

b.时间差分(Temporal Difference)

时间差分(又称相邻帧差)方法是在连续的图像序列中两个或三个相邻帧间采用基于像素的时间差分并且阈值化来提取出图像中的运动区域。时间差分运动检测方法对于动态环境具有较强的自适应性,但一般不能完全提取出所有相关的特征像素点,在运动实体内部容易产生空洞现象。

c.光流(Optical Flow)

基于光流方法的运动检测采用了运动目标随时间变化的光流特性,如 Meyer[2]等通过计算位移向量光流场来初始化基于轮廓的跟踪算法,从而有效地提取和跟踪运动目标。该方法的优点是在摄像机运动存在的前提下也能检测出独立的运动目标。然而,大多数的光流计算方法相当复杂,且抗噪性能差,如果没有特别的硬件装置则不能被应用于全帧视频流的实时处理。当然,在运动检测中还有一些其它的方法,例如运动向量检测法,适合于多维变化的环境,能消除背景中的振动像素,使某一方向的运动对象更加突出的显示出来,但运动向量检测法也不能精确地分割出对象。

没有更多推荐了,返回首页