导航:首页 > 源码编译 > roberts算法参

roberts算法参

发布时间:2023-06-12 22:46:39

⑴ 图像分割算法总结

       图像处理的很多任务都离不开图像分割。因为图像分割在cv中实在太重要(有用)了,就先把图像分割的常用算法做个总结。

        接触机器学习和深度学习时间已经不短了。期间看过各种相关知识但从未总结过。本文过后我会尽可能详细的从工程角度来总结,从传统机器学习算法,传统计算机视觉库算法到深度学习目前常用算法和论文,以及模型在各平台的转化,量化,服务化部署等相关知识总结。

        图像分割常用算法大致分为下面几类。由于图像的能量范函,边缘追踪等方法的效果往往只能解决特定问题,效果并不理想,这里不再阐述。当然二值化本身也可以分割一些简单图像的。但是二值化算法较多,我会专门做一个文章来总结。这里不再赘述。

        1.基于边缘的图像分割算法:

            有利用图像梯度的传统算法算子的sobel,roberts,prewitt,拉普拉斯以及canny等。

            这些算法的基本思想都是采用合适的卷积算子,对图像做卷积。从而求出图像对应的梯度图像。(至于为什么通过如图1这样的算子卷积,即可得到图像的梯度图像,请读者复习下卷积和倒数的概念自行推导)由于图像的边缘处往往是图像像素差异较大,梯度较大地方。因此我们通过合适的卷积核得到图像的梯度图像,即得到了图像的边缘图像。至于二阶算子的推导,与一阶类似。优点:传统算子梯度检测,只需要用合适的卷积核做卷积,即可快速得出对应的边缘图像。缺点:图像边缘不一定准确,复杂图像的梯度不仅仅出现在图像边缘,可以能出现在图像内部的色彩和纹理上。

             也有基于深度学习方法hed,rcf等。由于这类网络都有同一个比较严重的缺陷,这里只举例hed网络。hed是基于FCN和VGG改进,同时引出6个loss进行优化训练,通过多个层输出不同scale的粒度的边缘,然后通过一个训练权重融合各个层的边缘结果。hed网络结构如下:

可以得到一个比较完整的梯度图像,可参考github的hed实现。优点:图像的梯度细节和边缘完整性,相比传统的边缘算子要好很多。但是hed对于边缘的图像内部的边缘并不能很好的区分。当然我们可以自行更改loss来尝试只拟合外部的图像边缘。但最致命的问题在于,基于vgg的hed的网络表达能力有限,对于图像和背景接近,或者图像和背景部分相融的图片,hed似乎就有点无能为力了。

        2.基于区域分割的算法:

            区域分割比较常用的如传统的算法结合遗传算法,区域生长算法,区域分裂合并,分水岭算法等。这里传统算法的思路是比较简单易懂的,如果有无法理解的地方,欢迎大家一起讨论学习。这里不再做过多的分析。

            基于区域和语意的深度学习分割算法,是目前图像分割成果较多和研究的主要方向。例如FCN系列的全卷积网络,以及经典的医学图像分割常用的unet系列,以及rcnn系列发展下的maskrcnn,以及18年底的PAnet。基于语意的图像分割技术,无疑会成为图像分割技术的主流。

            其中,基于深度学习语意的其他相关算法也可以间接或直接的应用到图像分割。如经典的图像matting问题。18年又出现了许多非常优秀的算法和论文。如Deep-Image-Matting,以及效果非常优秀的MIT的 semantic soft segmentation(sss).

            基于语意的图像分割效果明显要好于其他的传统算法。我在解决图像分割的问题时,首先尝试用了hed网络。最后的效果并不理想。虽然也参考github,做了hed的一些fine-tune,但是还是上面提到的原因,在我多次尝试后,最终放弃。转而适用FCN系列的网络。但是fcn也无法解决图像和背景相融的问题。图片相融的分割,感觉即需要大的感受野,又需要未相融部分原图像细节,所以单原FCN的网络,很难做出准确的分割。中间还测试过很多其他相关的网络,但都效果不佳。考虑到感受野和原图像细节,尝试了resnet和densenet作为图像特征提取的底层。最终我测试了unet系列的网络:

                unet的原始模型如图所示。在自己拍照爬虫等手段采集了将近1000张图片。去掉了图片质量太差的,图片内容太过类似的。爬虫最终收集160多张,自己拍照收集200张图片后,又用ps手动p了边缘图像,采用图像增强变换,大约有300*24张图片。原生unet网络的表现比较一般。在将unet普通的卷积层改为resnet后,网络的表达能力明显提升。在将resnet改为resnet101,此时,即使对于部分相融的图像,也能较好的分割了。但是unet的模型体积已经不能接受。

                在最后阶段,看到maskrcnn的实例分割。maskrcnn一路由rcnn,fasterrcnn发展过来。于是用maskrcnn来加入自己的训练数据和label图像进行训练。maskrcnn的结果表现并不令人满意,对于边缘的定位,相比于其他算法,略显粗糙。在产品应用中,明显还不合适。                

        3.基于图的分割算法

            基于深度学习的deepgrab,效果表现并不是十分理想。deepgrab的git作者backbone采用了deeplabv2的网络结构。并没有完全安装原论文来做。

论文原地址参考: https://arxiv.org/pdf/1707.00243.pdf

整体结构类似于encode和decoder。并没有太仔细的研究,因为基于resent101的结构,在模型体积,速度以及deeplab的分割精度上,都不能满足当前的需求。之前大致总结过计算机视觉的相关知识点,既然目前在讨论移动端模型,那后面就分模块总结下移动端模型的应用落地吧。

由于时间实在有限。这里并没有针对每个算法进行详细的讲解。后续我会从基础的机器学习算法开始总结。

⑵ 最小一乘法 (Least Absolutely Deviation)中y=a+bx中a、b的值一般是怎么确定的,希望能用公式表示出来

没有解析方法解,人们都是用数值方法解的。



下面是英文网络上摘来的关于LAD的词条。


里面写明了:LDA虽然看上去和二乘法差不多,但是却没有解析最优解(二乘法有解析最优解),但是人们开发了很多种数值递归解法,最常用的是单纯形(SimplexBased)方法,可化为线性规划的问题(例如BarrodaleandRoberts算法)。

⑶ 图片处理-opencv-10.图像锐化与边缘检测

 

Roberts算子又称为交叉微分算法,它是基于交叉差分的梯度算法,通过局部差分计算检测边缘线条。常用来处理具有陡峭的低噪声图像,当图像边缘接近于正45度或负45度时,该算法处理效果更理想。其缺点是对边缘的定位不太准确,提取的边缘线条较粗。

Prewitt是一种图像边缘检测的微分算子,其原理是利用特定区域内像素灰度值产生的差分实现边缘检测。由于Prewitt算子采用3 3模板对区域内的像素值进行计算,而Robert算子的模板为2 2,故Prewitt算子的边缘检测结果在水平方向和垂直方向均比Robert算子更加明显。Prewitt算子适合用来识别噪声较多、灰度渐变的图像。

dst = filter2D(src, ddepth, kernel[, dst[, anchor[, delta[, borderType]]]])

RSobel算子是一种用于边缘检测的离散微分算子,它结合了高斯平滑和微分求导。该算子用于计算图像明暗程度近似值,根据图像边缘旁边明暗程度把该区域内超过某个数的特定点记为边缘。Sobel算子在Prewitt算子的基础上增加了权重的概念,认为相邻点的距离远近对当前像素点的影响是不同的,距离越近的像素点对应当前像素的影响越大,从而实现图像锐化并突出边缘轮廓。Sobel算子的边缘定位更准确,常用于噪声较多、灰度渐变的图像。

Sobel算子根据像素点上下、左右邻点灰度加权差,在边缘处达到极值这一现象检测边缘。对噪声具有平滑作用,提供较为精确的边缘方向信息。因为Sobel算子结合了高斯平滑和微分求导(分化),因此结果会具有更多的抗噪性,当对精度要求不是很高时,Sobel算子是一种较为常用的边缘检测方法。

dst = Sobel(src, ddepth, dx, dy[, dst[, ksize[, scale[, delta[, borderType]]]]])

在进行Sobel算子处理之后,还需要调用convertScaleAbs()函数计算绝对值,并将图像转换为8位图进行显示

dst = convertScaleAbs(src[, dst[, alpha[, beta]]])

拉普拉斯(Laplacian)算子是n维欧几里德空间中的一个二阶微分算子,常用于图像增强领域和边缘提取。它通过灰度差分计算邻域内的像素,基本流程是:判断图像中心像素灰度值与它周围其他像素的灰度值,如果中心像素的灰度更高,则提升中心像素的灰度;反之降低中心像素的灰度,从而实现图像锐化操作。在算法实现过程中,Laplacian算子通过对邻域中心像素的四方向或八方向求梯度,再将梯度相加起来判断中心像素灰度与邻域内其他像素灰度的关系,最后通过梯度运算的结果对像素灰度进行调整。

Laplacian算子分为四邻域和八邻域,四邻域是对邻域中心像素的四方向求梯度,八邻域是对八方向求梯度。当邻域内像素灰度相同时,模板的卷积运算结果为0;当中心像素灰度高于邻域内其他像素的平均灰度时,模板的卷积运算结果为正数;当中心像素的灰度低于邻域内其他像素的平均灰度时,模板的卷积为负数。对卷积运算的结果用适当的衰弱因子处理并加在原中心像素上,就可以实现图像的锐化处理。

dst = Laplacian(src, ddepth[, dst[, ksize[, scale[, delta[, borderType]]]]])

由于Sobel算子在计算相对较小的核的时候,其近似计算导数的精度比较低,比如一个33的Sobel算子,当梯度角度接近水平或垂直方向时,其不精确性就越发明显。Scharr算子同Sobel算子的速度一样快,但是准确率更高,尤其是计算较小核的情景,所以利用3*3滤波器实现图像边缘提取更推荐使用Scharr算子

Scharr算子又称为Scharr滤波器,也是计算x或y方向上的图像差分,在OpenCV中主要是配合Sobel算子的运算而存在的。Scharr算子的函数原型如下所示,和Sobel算子几乎一致,只是没有ksize参数.

dst = Scharr(src, ddepth, dx, dy[, dst[, scale[, delta[, borderType]]]]])

Canny边缘检测算子(多级边缘检测算法)是一种被广泛应用于边缘检测的标准算法,其目标是找到一个最优的边缘检测解或找寻一幅图像中灰度强度变化最强的位置。最优边缘检测主要通过低错误率、高定位性和最小响应三个标准进行评价。

Canny算子的实现步骤如下:

edges = Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient]]])

LOG(Laplacian of Gaussian)边缘检测算子也称为Marr&Hildreth算子,它根据图像的信噪比来求检测边缘的最优滤波器。该算法首先对图像做高斯滤波,然后再求其拉普拉斯(Laplacian)二阶导数,根据二阶导数的过零点来检测图像的边界,即通过检测滤波结果的零交叉(Zero crossings)来获得图像或物体的边缘。

LOG算子该综合考虑了对噪声的抑制和对边缘的检测两个方面,并且把Gauss平滑滤波器和Laplacian锐化滤波器结合了起来,先平滑掉噪声,再进行边缘检测,所以效果会更好。 该算子与视觉生理中的数学模型相似,因此在图像处理领域中得到了广泛的应用。它具有抗干扰能力强,边界定位精度高,边缘连续性好,能有效提取对比度弱的边界等特点。

⑷ 数字图像处理(四) 数字增强

  本节主要目的是介绍图像增强的一些基本概念。来源于东北大学 魏颖教授的数字图像课程笔记。

  将图像中像素亮度(灰度级别)看成是一个随机变量, 则其分布情况反映了图像的统计特性,这可用Probability Density Function (PDF)来刻画和描述,表现为 灰度直方图 (Histogram)。
  灰度直方图是灰度级的函数,表示图像中 具有某种灰度级的像素的个数 ,反映了图像中每种灰度出现的频率。
  灰度直方图的 横坐标是灰度级 纵坐标是该灰度级出现的频度 ,它是图像最基本的统计特征。

  直方图均衡化处理是以 累积分布函数 变换法为基础的直方图修正法。假定变换函数为

  式中: 是积分变量,而 就是 的累积分布函数。
  累积分布函数是 的函数,并且单调地从0增加到1, 所以这个变换函数满足关于 在 内单值单调增加。在 内有 的两个条件。可以推导出,变换后的变量s的定义域内的概率密度是均匀分布的。
  用 的累积分布函数作为变换函数,可产生一幅 灰度级分布具有均匀概率密度 的图像。

  考虑到灰度变换不影响像素的位置分布,也不会增减像素数目。所以有

  应用到离散灰度级,设一幅图像的像素总数为 ,分 个灰度级。

  第 个灰度级出现的频数。第 个灰度级出现的概率 其中 , 。形式为:

  直方图均衡化,力图使 等长区间 内出现的像素数接近相等。

  图像由像素组成,视觉效果与像素的灰度有关。从而可以通过改变像素灰度值来改变图像的视觉效果。 灰度变换 是一种点操作,赋予每个像素新的灰度值,关键在于设计变换函数(映射规则)。本节主要介绍三种灰度变换方法: 线性灰度变换 分段线性变换 非线性变换

  1. 线性灰度变换

  当图象成象时曝光不足或过度, 或由于成象设备的非线性和图象记录设备动态范围太窄等因素。都会产生对比度不足的弊病,使图象中的细节分辨不清。这时可将灰度范围线性扩展。
  设 灰度范围为 , 灰度范围为 。

  假定原图像 的灰度范围为 ,希望变换后图像 的灰度范围扩展至 ,则线性变换可表示为:

  为了突出感兴趣的目标或灰度区间,相对抑制不感兴趣的灰度区域,可采用分段线性变换。常用的三段线性变换法数学表达式如下:

  噪声可以理解为“妨碍人们感觉器官对所接收的信源信息理解的因素”。例如,一幅黑白图像,其亮度分布假定为 , 那么对其起干扰作用的亮度分布 便称为图像噪声。

  噪声在理论上可以定义为“不可预测, 只能用概率统计方法来认识的随机误差”。将图像噪声看成是多维随机过程是合适的,描述噪声的方法完全可以借用随机过程及其概率分布函数和概率密度函数。
  但在很多情况下,这种描述方法很复杂,甚至不可能,而且实际应用往往也不必要,通常是用其 数字特征 即均值方差 相关函数 等进行处理。

  图像噪声按其产生的原因可分为 外部噪声 内部噪声 。外部噪声是指系统外部干扰从电磁波或经电源传进系统内部而引起的噪声,如电气设备、天体放电现像等引起的噪声。主要外部干扰如下:
(1) 由光和电的基本性质所引起的噪声。
(2) 电器的机械运动产生的噪声。如, 各种接头因抖动引起的电流变化所产
生的噪声;磁头、磁带抖动引起的抖动噪声等。
(3) 元器件材料本身引起的噪声。如, 磁带、 磁盘表面缺陷所产生的噪声
(4) 系统内部设备电路所引起的噪声。如, 电源系统引入的交流噪声,偏转
系统和箝位电路引起的噪声等。

  图像噪声从 统计特性 可分为 平稳噪声 非平稳噪声 两种。统计特性不随时间变化的噪声称为平稳噪声;统计特性随时间变化的噪声称为非平稳噪声。
  另外,按噪声和信号之间的关系可分为 加性噪声 乘性噪声
  假定信号为 ,噪声为 ,如果混合叠加波形是 形式,则称其为加性噪声;如果叠加波形为 形式, 则称其为乘性噪声。
  为了分析处理方便,往往将乘性噪声近似认为加性噪声,而且总是 假定信号和噪声是互相独立 的。

   (1)高斯噪声

  高斯噪声是一种源于电子电路噪声和由低照明度或高温带来的传感器噪声。高斯噪声也常称为正态噪声,符合高斯分布。是自然界中最常见的噪声。高斯噪声可以通过空域滤波的平滑滤波方法来消除。

  椒盐噪声又称双极脉冲噪声,其概率密度函数为:

  椒盐噪声是指图像中出现的噪声只有两种灰度值,分别为a和b,通常情况下脉冲噪声总是数字化为允许的最大或最小值,所以负脉冲以黑点(类似胡椒)出现在图像中,正脉冲以白点(类似盐)出现在图像中。

  出现位置是随机的,但噪声的幅值是基本相同的。

  出现在位置是一定的(每一点上),但噪声的幅值是随机的。

  改善降质图像的方法有两类: 图像增强 图像复原

  (1) 图像增强 :不考虑图像降质的原因, 只将图像中感兴趣的部分加以处理或突出有用的图像特征,故改善后的图像并不一定要去逼近原图像。主要目的是要提高图像的可懂度。(2) 图像复原 :针对图像降质的具体原因,设法补偿降质因素,使改善后的图像尽可能地逼近原始图像。

  图像增强处理的方法基本上可分为 空间域法 频域法 两大类。

  (1) 空间域法
  在原图像上直接进行数据运算,对像素的灰度值进行处理。它又分为两类:点运算和局部运算点运算:对图像作逐点运算局部运算:在与处理像点邻域有关的空间域上进行运算。

  (2) 频域法
  在图像的变换域上进行处理, 增强感兴趣的频率分量, 然后进行反变换,得到增强了的图像。

  线性滤波器是线性系统和频域滤波概念在空域的自然延伸。其特征是结果像素值的计算由下列公式定义:

  其中: 是模板的系数 是被计算像素及其邻域像素的值。就是利用模板(滤波器)进行的卷积运算。

   主要线性空域滤波器 :主要包括 低通滤波器 高通滤波器 带通滤波器 低通 滤波器主要用于:钝化图像、去除噪声; 高通 滤波器 主要用于边缘增强、边缘提取; 带通 滤波器主要用于删除特定频率。

   非线性滤波器的定义 :使用模板进行结果像素值的计算,结果值直接取决于像素邻域的值,而 不使用乘积和 的计算。 主要非线性滤波器有 :中值滤波、最大值滤波、最小值滤波。

  线性平滑滤波器: 均值滤波器

  分别采用 像素的方形均值滤波器得到的平滑结果。

  模板尺寸越大,图像越模糊,图像细节丢失越多

  低通空域滤波的缺点和问题如果图像处理的目的是去除噪声,那么,线性平滑低通滤波在 去除噪声的同时也钝化了边和尖锐的细节

   统计滤波器是非线性滤波 :滤波器模板包围的图像区域中像素排序,统计排序结果代替中心像素的值; 中值滤波器是应用最广泛的统计滤波器 ;中值滤波对一定类型的随机噪声(如椒盐噪声)提供了优秀的去噪能力,比小尺寸的线性平滑滤波器的模糊程度明显低。

   中值滤波的原理

  用模板区域内像素的中值,作为结果值 ;强迫突出的亮点(暗点)更象它周围的值,以消除孤立的亮点(暗点)

中值滤波算法的实现

   在去除噪声的同时,可以比较好地保留边的锐度和图像的细节。对于椒盐噪声,中值滤波效果比均值滤波效果好;对于高斯噪声,均值滤波效果比中值滤波效果好。

   最大值滤波可以去除图像中的暗斑,同时也会使亮斑增大;最小值滤波可以去除图像中的亮斑 ,同时也会增大暗斑。

   图像边缘是图像的基本特征之一,它包含对人类视觉和机器识别有价值的物体图像边缘信息。

   边缘是图像中特性(如像素灰度、纹理等)分布的 不连续处 ,图像周围特性有阶跃变化或屋脊状变化的那些像素集合。图像边缘存在于目标与背景、目标与目标、基元与基元的边界,它标示出目标物体或基元的实际含量,是图像识别信息最集中的地方。

   图像锐化就是要 突出图像边缘 抑制图像中非边缘信息 使图像轮廓更加清晰 。由于边缘占据图像的高频成分,所以边缘增强通常属于 高通滤波

   这里介绍三个方法:(1) 基本高通滤波模板;(2) 高频补偿滤波;(3) 图像微分,包括:一阶微分—梯度法;二阶微分—拉普拉斯算子;

   (1) 基本高通滤波模板

   我们先介绍高通滤波模板: 图像锐化是要增强图像频谱中的高频部分 ,就相当于 从原图像中减去它的低频分量 ,即原始图像经平滑处理后所得的图像。选择不同的平滑方法,会有不同的图像锐化结果。

  或:

   为原象, 为平滑后图像 为输出图像。

  设计模板系数的原则:1)中心系数为正值,外围为负值;2)系数之和为0

   基本高通空域滤波的缺点和问题 :高通滤波在增强了边的同时,丢失了图像的层次和亮度。

   (2) 高频补偿滤波(提升滤波)

  弥补高通滤波的缺陷,在增强边和细节的同时,不丢失原图像的低频成分。

  高频补偿比高通的优点是很明显的,即增强了边缘,又保留了层次。噪声对结果图像的视觉效果有重要的影响,高频补偿在增强了边的同时也增强了噪声。

   (3) 图像微分

   均值产生钝化 的效果,而 均值与积分 相似,由此而联想到, 微分 能不能产生相反的效果,即 锐化 的效果呢?结论是肯定的。图像微分主要有一阶微分和二阶微分。

   Roberts交叉梯度算子

  采用梯度微分锐化图像,同时会使噪声、条纹等得到增强,Sobel算子则在一定程度上克服了这个问题。

(1) 对图像中的随机噪声有一定的平滑作用。
(2) 边缘两侧元素得到了增强,边缘显得 粗而亮

  对数字图像来讲, 的二阶偏导数可表示为:

  采用拉普拉斯算子对图像的增强的基本方法可表示为:

   频率 平面与图像 空域 特性的 关系

  图像 变化平缓的部分 靠近频率平面的圆心,这个区域为 低频区域 ;图像中的 边、噪声、变化陡峻的部分 ,以放射方向离开频率平面的圆心,这个区域为 高频区域

(1) 用 乘以给定的图像 ,计算出它的傅立叶变换 。
(2) 选择一个变换函数 (频域滤波器)乘以 。
(3) 计算(2)的反DFT:
(4) 取(3)的实部
(5)用 乘以(4)的结果

  频域增强与空域增强的关系:1. 在实践中,小的空间模板比傅立叶变换用得多得多,因为它们易于实现。2. 对于很多在空域上难以表述清楚的问题,对频域概念的理解就显得十分重要。在图像压缩中更体会到。

  这里我们介绍频域滤波器的三种滤波器:1)低通滤波;2)高通滤波;3)同态滤波。

   (1)平滑(低通)滤波

  频域低通滤波的基本思想 , 是需要钝化图像的傅立叶变换形式, 是选取的一个滤波器变换函数 是通过 减少 的高频部分,来得到的结果运用傅立叶逆变换得到钝化后的图像。

   理想低通滤波器的定义

   平滑(低通)滤波—理想低通滤波

  (1)整个能量的92%被一个半径为5的小圆周包含,大部分尖锐的细节信息都存在于被去掉的8%的能量中。(2)小的边界和其它尖锐细节信息被包含在频谱的至多0.5%的能量中。(3)被钝化的图像被一种非常严重的振铃效果——理想低通滤波器的一种特性所影响。

  理想低通滤波器的平滑作用非常明显,但由于变换有一个陡峭的波形,它的反变换 有强烈的振铃特性,使滤波后图像产生模糊效果。因此这种理想低通滤波实用中不能采用。

⑸ 在图像处理中有哪些算法

太多了,去找本书看看吧!给个大概的介绍好了
图像处理主要分为两大部分:
1、图像增强
空域方法有 直方图均衡化
灰度线性变化
线性灰度变化
分段线性灰度变化
非线性灰度变化(对数扩展
指数扩展)

图像平滑
领域平均法(加权平均法
非加权领域平均法)
中值滤波
图像锐化
Roberts算子
Sobel算子
拉普拉斯算子

频域方法有
低通滤波
理想低通滤波
巴特沃斯低通滤波
指数低通滤波
梯形低通滤波
高通滤波
理想高通滤波
巴特沃斯高通滤波
指数高通滤波
梯形高通滤波
彩色图像增强(真彩色、假彩色、伪彩色增强)
2、图像模糊处理
图像模糊处理
运动模糊(维纳滤波
最小均方滤波
盲卷积
……


高斯模糊(维纳滤波
最小均方滤波
盲卷积
……

图像去噪处理
高斯噪声
(维纳滤波
样条插值
低通滤波
……

椒盐噪声
(中值滤波
……

⑹ Matlab关于图像边缘提取,用Sobel算子、Roberts算子、Prewitt算子,加QQ详谈 急用!!

4.2.1 Roberts算法原理

Roberts算子是一种最简单的算子,是一种利用局部差分算子寻找边缘的算子,他采用对角线方向相邻两象素之差近似梯度幅值检测边缘。检测垂直边缘的效果好于斜向边缘,定位精度高,对噪声敏感,无法抑制噪声的影响。

4.2.2 算法流程

Roberts算子在2×2领域上计算对角导数

(4-1)

成为Roberts交叉算子。在实际应用中为了简化计算,用梯度函数的Roberts绝对值来近似

(4-2)另外还可以用Roberts 最大算子来计算

(4-3)

上式能够提供较好的不变性边缘取向。对于同等长度但取向不同的边缘,应用Roberts最大值算子比应用Roberts交叉算子所得到的合成幅度变化小。Roberts边缘检测算子的卷积算子为

Roberts 边缘算子方向模版

由上面两个卷积算子对图像运算后,代入(3-7)式,可求得图像的梯度幅度值,然后选取门限TH,做如下判断>TH,为阶跃状边缘点为一个二值图像,也就是图像的边缘图像。4.4.1 Prewitt 算法原理

Prewitt边缘算子是一种边缘样板算子。Prewitt 从加大边缘检测算子的模板大小出发,由2×2 扩大到3×3 来计算差分算子,采用Prewitt 算子不仅能检测边缘点,而且能抑制噪声的影响。
Prewitt 采用计算偏微分估计的方法,由式(4-9)所示的两个卷积算子形成了Prewitt边缘算子,样板算子由理想的边缘子图像构成,依次用边缘样板去检测图像,与被检测区域最为相似的样板给出最大值,用这个最大值作为算子的输出

(4-9)

另一种方法是,可以将Prewitt算子扩展到八个方向,每个模版对特定的边缘方向做出最大响应,所有8个方向中最大值作为边缘幅度图像的输出,这些算子样板由离线的边缘子图像构成。依次用边缘样板去检测图像,与被检测区域最为相似的的样板给出最大值。定义Prewitt 边缘检测的算子模版如下:

(1)1方向 (2)2方向 (3)3方向 (4)4方

⑺ 数学难题

数码相机定位(数学建模) 我们组的答案,文章中的有些公式复制不上,大家就凑和这看吧,呵呵

数码相机定位

【摘要】 双目测试法的数码相机定位,精度准确的关键在于对相机内外参数的标定[1]。在不考虑切向畸和变径向畸变的前提下建立理想的针孔成像模型,通过基于Sobel算子图像的边缘检测法确定靶标上偏移以后的象上成像边缘在平面中的坐标,然后根据基于随机Hough变换的图形检测法确定成像上的靶标的圆心的坐标,采用传统的线性法求出相机参数初值,再用最小二乘法进行线性拟合优化初值,利用投影成像的几何关系容易得出要特征点在相机坐标系的坐标,进而求出相机的相对位置。

【关键词】双目测试 相机标定 线性法 靶标定位最小二乘法 Sobel算子边缘检测 随机Hough变换

一、 模型的基本假设与符号说明

1.模型的基本假设:

(1)假设拍摄时光线正常。

(2)假设 , 位于图像中心[2]

(3)假设成像过程严格遵守针孔成像模型无几何畸变

(4)假设实体靶标平面平行与世界坐标系的Ow-XwYw即 =0

2.符号说明:

(1) 以实物的固定点为原点建立世界坐标系Ow-XwYwZw。

(2) Pw表示实物上的观测点。

(3) 以O为原点建立以像素为单位的像平面的坐标系O-UV。

(4) 以主光轴和像平面的交点为原点建立以mm为单位的像平面物理坐标系O1-XY。

(5) Pd 为实际在像平面上的影像。

(6) 以相机的固定点为原点建立相机的坐标系Oc-XcYcZc.

二、 模型的建立

1.相机成像模型

相机的成像过程可以用传统的针孔成像模型来模拟,那么建立模型如图1所示包含世界坐标系Ow-XwYwZw、相机坐标系Oc-XcYcZc、像平面坐标系O-UV(像素单位)、像平面物理坐标系O1-XY(毫米单位)。Pw(Xw,Yw,Zw) 为世界坐标系中点Pw的坐标,Pc (Xc,Yc,Zc)为同一点在相机坐标系下的坐标, Pu(u,v)为理想针孔模型下Pw的像点坐标, Pu(x,y)则为理想情况下的像平面物理坐标。

图1-1

1.1针孔成像模型

根据针孔成像原理,世界坐标点Pw(Xw,Yw,Zw)到理想坐标点Pu(u,v)的齐次变换如下:

= (1-1)

其中A为内参矩阵,[R T]为相机外参矩阵,和T分别为平板相对相机的旋转矩阵和平移矩阵。定义如下[3]:

, ,

其中 , 分别分别表示在x方向和y方向上像点的物理坐标到图像坐标的比例系数, 、 表示主光轴与像平面交点的图像坐标。设世界坐标系的0-XY面平行于平板,则 =0,代入公式(1-1)式可得:

(1-2)

进一步消去s即可得到理想针孔成像的数学模型:

(1-3)

而实际像点物理坐标 到实际像点 的关系如下:

(1-4)

那么由公式(1-3)、(1-4)可得理想象点的物理坐标与世界坐标之间的关系:

(1-5)

2.相机标定模型

从实际成像模型可以看出需要标定的有6个外部参数,即旋转矩阵中反映的绕3个坐标轴的旋转角以及平移矩阵中沿3个坐标轴方向的位移,4个内部参数,即 、 , 。这里采用逐步推导求解的方法。

2.1投影矩阵模型

根据题意可知 在图像中心,所以选择其为初值,由公式(1-2)可得

(1-6)

那么可以设投影矩阵

(1-7)

则(1-9)可以重写为

(1-8)

将(1-8)消去 ,移项整理得

(1-9)

其中 T

每组像点与世界坐标点可以确定一个方程组,8组对应点则可求出未知参数 ,而图像坐标的取值存在误差,实际标定点应该多于8个,然后统计结果用正态分布来获取最接近实际值的结果。

2.2转换矩阵模型(外部参数)

先利用旋转矩阵R的正交性,通过变换可得

然后便可根据(1-7)求出旋转矩阵R和平移矩阵T。

2.3内部参数模型

根据转换矩阵模型可计算出 ,则由消去S的理想针孔成像模型(1-3)解得 。

3.求取成像坐标的模型的建立

依据图像处理算法得到的图象二值化、高通滤波、Sobel边缘算子的处理结果,再用Sobel算子进行处理后,又对它进行了二值化处理,最终得到了成像边缘上的一个点在成像平面上的坐标,把坐标值D[0][0]存放到数组D[m][n]中。如此重复有限次,获得图象边缘上的足够多的点,并把点的坐标值D[i][j]保存到数组D[m][n]中。在数组D[m][n]中任意取三点D[X1][Y1]、D[X2][Y2]、D[X3][Y3]根据基于随机Hough变换为基础直接提取椭圆的技术获取椭圆的重心这个重心就是实际图像对应的靶标Pd

3.1图像边缘检测

采用边缘检测来在实际的成像中取出任意多个份额有效的点常用的边缘检测算子有五种(梯度算法、Prewitt,Sobel,Roberts,Robins.Mar-Hildret等)在这里主要采用梯度算子,其优点是简单有效。

3.1.1边缘检测算法的基本步骤:

1)滤波:改善与噪声有关的边缘检测器的性能;一般滤波器降导

致了边缘的损失;增强边缘和降低噪声之间需要折衷。

2)增强:将邻域强度值有显着变化的点突显出来,边缘增强一般

是通过计算梯度幅值来完成的。

3)检测:最简单的边缘检测判据是梯度幅值阀值。

4)定位:边缘的位置和方位在子像素分辨率上估计,在平面坐标系中确定实际成像点的坐标。

3.2定理公式的整理

Sobel算子是一种一阶微分算子,它利用像素邻近区域的梯度值来计算1个像素的梯度,然后根据一定的阈值来取舍。它由下式给出:

M= (2)

其中的偏导数用下式计算

Sx=(a2+ca3+a4)-(a0+cd7+a6)

Sy=(a0+ca1+a2)+(a6+ca5+a4)

其中常熟c=2。Sx、Sy+可用卷积模板来实现,如下图:

-1
0
1

Sx=
-2
0
2

-1
0
1

(图3-1 卷积模板x)

1
2
1

Sy=
0
0
0

-1
-2
-1

(图3-2 卷积模板y)

图像中的每个点都用这两个模板做卷积。一个模板对通常的

垂直边缘响应最大.而另一个对水平边缘响应最大。两个卷积的最大值作为该点的输出值。运算结果是1幅边缘幅度图像。此算子对灰度渐变噪声较多的图像处理得较好

a0
A1
A2

A7
[i.j]
A3

A6
A5
A4

(图3-3 际对应的坐标)

对于平面中不规则图形可以用以及差分代替一阶微分

求梯度时对于平方和运算及开方运算,可以用两个分量的

绝对值之和表示,即:

Sobel梯度算子是先做成加权平均,再微分,然后求梯度,即:

G[f(x,y)]=|Δxf(x,y) |+|Δyf(x,y) |

上述各式中像素之间的关系见下图:

f(x-1,y-1)
f(x,y-1)
F(x+1,y_1)

f(x-1,y)
f(x,y)
f(x+1,y)

f(x-1,y+1)
f(x,y+1)
f(x+1,y+1)

(图3-4 像素关系表)

3.3.基于随机Hough变换的椭圆型检测法求椭圆中心模型

算法简要描述如下:设D为图像空间的边缘点集;P为参数空间的参数单元集,是动态链表结构。从D中随机采样5点,计算这5点所确定的二次曲线参数P,看是否存在一参数PC和P的误差在容许范围之内。若有,则将参数单元PC的计数值score加1并将参数单元PC更新;若没有,则在P中插入新的参数单元P。当参数单元PC的计数值score达到指定阂值Nt(它是一个很小的数,例如2, 3)时,该参数对应的椭圆成为候选椭圆,判断该候选椭圆是否为真实椭圆,若是,则说明已检测到了一个椭圆,将落在该椭圆上的点从D中去掉,并释放P中所有参数单元占用的内存,然后继续检测下一个椭圆;否则,说明该侯选的椭圆为虚假椭圆,从P中去掉该参数单元,继续检测。

4.1具体标定的过程

二次曲线在空间坐标系中的表示:

Ax2+Bxy+Cy2+2Dx+2Ey+F=0 (4-1)

其中(x,y)为图像控件的坐标,A、B、C、D、E、F是二次曲线的参数,其中F是自由参数。

B2-AC<0 (4-2)

B2-AC<0且A=C (4-3)

若A、B、C满足(1-2)二次曲线为椭圆,若A, B, C满足(1-3)则二次曲线为圆。

将随机Hough变换(RHT)直接用于椭圆检测时,需随机采样5个点,由方程(1-1)得5个方程,由它们构成关于参数的线形方程组,对其进行求解,若有解且该解满足式(1-1),则对该解(也就是求得的参数)进行累积。

4.2椭圆中心提取方法

本算法是利用由椭圆的极点一极线性质开发的三点组到椭圆参数的收敛映射,是一个以随机Hough变换为基础直接提取椭圆的技术。

椭圆的基本性质

定义:若椭圆上的任意两点P和Q的切线交于点N,则称这两点间的连线PN为点A所对应的极线,点A为弦PN所对应的极点,三角形APN为椭圆的极三角形。如下图所示:

(图 3-5 椭圆中心的确定示意图)

性质1:如图3-5所示,极点A、极线P口的中点E与椭圆中心。共线。

性质2:如图3-5所示,若点D为射线OA与弧PN的交点,则过点D的切线平行

性质3:如图3-5所示,若三点组K, P和N在椭圆上,则此三点组所对应的3个极三角形APN, BPK, CNK的极线边PN, KP,NK上的中线延长线必共点于椭圆的中心Oo

利用椭圆方程和椭圆的极点一极线性质可推导出椭圆点的方向和中心位置所应满足的约束条件。这样,就可以确定椭圆中心位置。即靶标象Pu的坐标。

在图像上(如下图3-6)根据上述的“求取成像坐标的模型的建立”利用边缘取点法,求取有限组点坐标数据记录到无穷大的一个二维数组D[i][j]记录到下表中

(图3-6 成像照片上的一个变形后的形状)

A'
B'
C'
D'
E'

X坐标
Y坐标
X坐标
Y坐标
X坐标
Y坐标
X坐标
Y坐标
X坐标
Y坐标

102.8
56.9
137.4
61.3
212.8
77.1
87.0
178.8
192.8
180.1

103.6
56.6
139.3
59.4
215.2
68.8
87.4
173.4
198.3
170.2

107.2
54.9
148.7
55.6
220.4
63.8
94.7
106.7
202.5
167.4

112.7
52.5
155.1
57.4
229.2
69.7
99.4
164.9
215.8
169.6

118.0
52.9
162.1
64.3
233.6
64.5
105.7
165.7
216.9
177.3

120.5
53.9
160.8
76.3
238.4
72.7
109.6
167.5
213.2
184.3

126.1
72.6
155.2
81.4
235.2
82.1
112.4
170.0
207.8
188.6

126.8
71.5
151.5
83.1
228.7
87.6
114.1
173.7
202.3
189.2

115.9
81.1
140.1
79.8
223.0
88.5
112.7
180.9
197.6
186.8

108.1
80.1
139.6
79.6
215.3
84.9
108.9
185.1
193.6
182.3

102.8
76.1
136.7
75.5
213.6
82.3
93.3
188.3
192.7
177.9

112.1
65.4
145.3
64.2
220.1
72.1
102.3
179.2
205.1
179.6

113.4
66.8
148.6
69.3
225.4
75.2
100.1
176.9
205.5
177.3

(表3-7 实际测量数据)

然后根据上述的“基于随机Hough变换的椭圆型检测法求椭圆中心模型”确定不规则图形的中心。分别如下:

推算的靶标象的坐标
靶标象对应的坐标

X坐标
Y坐标
X坐标
Y坐标

A'
112.1
65.4
113.4
66.8

B'
145.3
64.2
148.6
69.3

C'
220.1
72.1
225.4
75.2

D'
102.3
179.2
100.1
176.9

E'
205.1
179.6
205.5
177.3

(表3-8 实际靶标的位置和计算的到的靶标 )

4.求两相机距离d的模型

4.1求平面夹角

(图4-1 两平面夹角)

如上图4-1所示:在以左相机为基准的空间坐标系中原图象所在的平面可以通过世界坐标系和基准坐标系的转换公式(1-3)得到其在基准坐标系中的平面表示公式:

(4-1)

即上图中的CDEF平面在基准坐标系中的表示

又由于平面ABCD和基准平面的xy平面相平行,故平面ABCD的坐标表示也可以求出设其表示公式如下:

(4-2)

应为两平面无限延伸会得到一个交线(假设不是在特设的情况下两平面)通过公式()和公式()可以求出一条交线CD在空间坐标系中的表示,其公式表示:

下面利用空间点到直线的距离即图中直线O’Oc’和直线OO’的距离。在由点Oc点O、点O’构成的三角形平面中直线O’Oc’、 直线OO’和直线OOc的三角形中根据余弦定理知道角∠OO’Oc的角度即两个平面平面ABCD和平面CDEF间的面夹角。

4.2

(图4-2 求取d的示意图))

图中点说明:(此图为从整个空间上方的俯视图)

Oc:左侧相机的光学中心即三维原点

Oc’:右侧相机的三维原点

O: 实际物体所在三位坐标的原点该点在平面ABCD中

Pu: 左面相机理想成像点

Pu’: 右面相机理想点成像

直线OO’:Oc和Oc’在平面ABCD中的投影

平面ABCD: 空间俯视后对原图象的平面

通过点Pu向原图象ABCD做垂线,在直角三角形P’PuO和平面ABCD的三垂线定理计算出O’’O与OcO的夹角∠O’’OOc.同理可以求出∠O’OOc’,则根据平角定理可以求出∠OcOoC’:

∠OcOoC’=Л-∠O’OOc’-∠O’’OOc

在三角形O’OOc’中已经知道两边和两边夹角利用余弦定理可以求得相机的相对位置d:

三、 模型的求解

1. 相机成像模型和相机标定模型的求解

求解针孔成像模型必然要先进行相机内外参数的标定即相机标定模型。在引入先前的假设 在图像中心后求的投影矩阵,通过投影矩阵D分离其参数可以简化计算。然后根据多组对应点利用公式(9)即可求得D的参数。这里假设世界坐标的原点为靶标的中心(即正方形中心),则可得对应点的结果:

A
C
D
E

X坐标
Y坐标
X坐标
Y坐标
X坐标
Y坐标
X坐标
Y坐标

世界坐标系的坐标
-50
50
50
50
50
-50
-50
-50

像平面的坐标
113.4
66.8
225.4
75.2
100.1
176.9
205.5
177.3

用MATLAB求得

在利用投影矩阵的变换求得 后,便可通过(7)来求得转换矩阵 ,进而由(1-3)求出 。

2.成像坐标模型的求解

3.两相机距离d模型的求解

四、 模型检验方法和评价

五、 参考文献

[1]马颂德,张正友.《计算机视觉——计算理论与算法基础[M]》.北京:科学出版社,1998

[2] 毛剑飞 邹细勇 诸静. 改进的平面模板两步法标定摄像机 中国图象图形学报:A辑.2004,9(7).-846-852

[3]Heikkila J.Geometric camera calibration using Circular control

points l-J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2000,22(10):1066~ 1077.

Tag标签: 数学建模,数码相机定位,双面定位

⑻ Matlab边缘检测问题

用mesh语句似乎可以,具体也不了解你的情况,感觉怪怪的,发一段我以前些的程序,用罗伯特算子写的,把算子一改就是sobel了。两种边缘检测近似算法奉上:
clc
close all
clear all
%%%生成高斯平滑滤波模板%%%
%%%%%%%%%%%%%%%%%%%%%%%%%
hg=zeros(3,3); %设定高斯平滑滤波模板的大小为3*3
delta=0.5;
for x=1:1:3
for y=1:1:3
u=x-2;
v=y-2;
hg(x,y)=exp(-(u^2+v^2)/(2*pi*delta^2));
end
end
h=hg/sum(hg(:));
%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%读入图像%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%

f = imread('1111.tif'); % 读入图像文件
f=rgb2gray(im2double(f));
imshow(f)
title('原始图像');
[m,n]=size(f);
ftemp=zeros(m,n);
rowhigh=m-1;
colhigh=n-1;
%%%高斯滤波%%%
for x=2:1:rowhigh-1
for y=2:1:colhigh-1
mod=[f(x-1,y-1) f(x-1,y) f(x-1,y+1); f(x,y-1) f(x,y) f(x,y+1);f(x+1,y-1) f(x+1,y) f(x+1,y+1)];
A=h.*mod;
ftemp(x,y)=sum(A(:));
end
end
f=ftemp
figure,imshow(f)
title('通过高斯滤波器后的图像');

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %%%利用roberts算子进行边缘检测%%%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
sx=[-1 -2 -1;0 0 0;1 2 1];
sy=[-1 0 1;-2 0 2;-1 0 1];
for x=2:1:rowhigh-1
for y=2:1:colhigh-1
mod=[f(x-1,y-1) f(x-1,y) f(x-1,y+1); f(x,y-1) f(x,y) f(x,y+1);f(x+1,y-1) f(x+1,y) f(x+1,y+1)];
fsx=sx.*mod;
fsy=sy.*mod;
ftemp(x,y)=sqrt((sum(fsx(:)))^2+(sum(fsy(:)))^2);
end
end
fr=im2uint8(ftemp);
figure,imshow(fr)
title('用roberts算子边缘检测的原始图像');

%%%域值分割%%%
TH1=60; %设定阈值
for x=2:1:rowhigh-1
for y=2:1:colhigh-1
if (fr(x,y)>=TH1)&((fr(x,y-1) <= fr(x,y)) & (fr(x,y) > fr(x,y+1)) )
fr(x,y)=200;
elseif(fr(x,y)>=TH1)&( (fr(x-1,y) <=fr(x,y)) & (fr(x,y) >fr(x+1,y)))
fr(x,y)=200;
else fr(x,y)=50;
end
end
end
figure,imshow(fr)
title('用roberts算子边缘检测并细化后的图像');
%%%%%%%%%%%%%%%%%%%%%%%%%%
利用第一种近似算法进行边缘检测%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%3*3的sobel算子%%%%%%%%
sx=[-1 -2 -1;0 0 0;1 2 1];
sy=[-1 0 1;-2 0 2;-1 0 1];
%sx=[0 1 2;-1 0 1;-2 -1 0];
%sy=[-2 -1 0;-1 0 1;0 1 2];
for x=2:1:rowhigh-1
for y=2:1:colhigh-1
mod=[f(x-1,y-1) f(x-1,y) f(x-1,y+1); f(x,y-1) f(x,y) f(x,y+1);f(x+1,y-1) f(x+1,y) f(x+1,y+1)];
fsx=sx.*mod;
fsy=sy.*mod;
ftemp(x,y)=abs(sum(fsx(:)))+abs(sum(fsy(:)));
end
end
fs=im2uint8(ftemp);
figure,imshow(fs)
title('用第一种近似算法进行边缘检测的原始图像');
%%%域值分割%%%
TH2=200; %设定阈值
for x=2:1:rowhigh-1
for y=2:1:colhigh-1
if (fs(x,y)>=TH2)&((fs(x,y-1) <= fs(x,y)) & (fs(x,y) > fs(x,y+1)) )
fs(x,y)=200;
elseif(fs(x,y)>=TH2)&( (fs(x-1,y) <=fs(x,y)) & (fs(x,y) >fs(x+1,y)))
fs(x,y)=200;
else fs(x,y)=50;
end
end
end
figure,imshow(fs)
title('采用第一种近似算法进行边缘检测后的图像');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%利用第二种近似算法进行边缘检测%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%3*3的sobel算子%%%%%%%%
sx=[-1 -2 -1;0 0 0;1 2 1];
sy=[-1 0 1;-2 0 2;-1 0 1];
%sx=[0 1 2;-1 0 1;-2 -1 0];
%sy=[-2 -1 0;-1 0 1;0 1 2];
for x=2:1:rowhigh-1
for y=2:1:colhigh-1
mod=[f(x-1,y-1) f(x-1,y) f(x-1,y+1); f(x,y-1) f(x,y) f(x,y+1);f(x+1,y-1) f(x+1,y) f(x+1,y+1)];
fsx=sx.*mod;
fsy=sy.*mod;
ftemp(x,y)=max(abs(sum(fsx(:))),abs(sum(fsy(:))));
end
end
fs=im2uint8(ftemp);
figure,imshow(fs)
title('用第二种近似算法进行边缘检测的原始图像');
%%%域值分割%%%
TH2=200; %设定阈值
for x=2:1:rowhigh-1
for y=2:1:colhigh-1
if (fs(x,y)>=TH2)&((fs(x,y-1) <= fs(x,y)) & (fs(x,y) > fs(x,y+1)) )
fs(x,y)=200;
elseif(fs(x,y)>=TH2)&( (fs(x-1,y) <=fs(x,y)) & (fs(x,y) >fs(x+1,y)))
fs(x,y)=200;
else fs(x,y)=50;
end
end
end
figure,imshow(fs)
title('采用第二种近似算法进行边缘检测后的图像');

⑼ sobel锐化算法 式子怎么计算

Sobel算法与Priwitt算法的思路相同,属于同一类型,因此处理效果基本相同。Roberts算法的模板为2*2,提取出的信息较弱。 单方向锐化经过后处理之后,也可以对边界进行增强。 Priwitt与Sobel相比,有一定的抗干扰性。图像效果比较干净

阅读全文

与roberts算法参相关的资料

热点内容
dvd光盘存储汉子算法 浏览:758
苹果邮件无法连接服务器地址 浏览:963
phpffmpeg转码 浏览:672
长沙好玩的解压项目 浏览:145
专属学情分析报告是什么app 浏览:564
php工程部署 浏览:833
android全屏透明 浏览:737
阿里云服务器已开通怎么办 浏览:803
光遇为什么登录时服务器已满 浏览:302
PDF分析 浏览:486
h3c光纤全工半全工设置命令 浏览:143
公司法pdf下载 浏览:383
linuxmarkdown 浏览:350
华为手机怎么多选文件夹 浏览:683
如何取消命令方块指令 浏览:350
风翼app为什么进不去了 浏览:779
im4java压缩图片 浏览:362
数据查询网站源码 浏览:151
伊克塞尔文档怎么进行加密 浏览:893
app转账是什么 浏览:163