您好、欢迎来到现金彩票网!
当前位置:斗牛棋牌 > 纹理分割 >

Opencv 分水岭算法用于图像分割

发布时间:2019-06-12 11:06 来源:未知 编辑:admin

  任何一幅灰度图像都可以被看成拓扑平面,灰度值高的区域可以被看成是山峰,灰度值低的区域可以被看成是山谷。我们向每一个山谷中灌不同颜色的水,随着水的位的升高,不同山谷的水就会相遇汇合,为了防止不同山谷的水汇合,我们需要在水汇合的地方构建起堤坝。不停的灌水,不停的构建堤坝直到所有的山峰都被水淹没。我们构建好的堤坝就是对图像的分割。这就是分水岭算法的背后哲理。

  但是这种方法通常都会得到过度分割的结果,这是由噪声或者图像中其他不规律的因素造成的。为了减少这种影响, OpenCV 采用了基于掩模的分水岭算法,在这种算法中我们要设置哪些山谷点会汇合,哪些不会,这是一种交互式的图像分割。我们要做的就是给我们已知的对象打上不同的标签。如果某个

  区域肯定是前景或对象,就使用某个颜色(或灰度值)标签标记它。如果某个区域肯定不是对象而是背景就使用另外一个颜色标签标记。而剩下的不能确定是前景还是背景的区域就用 0 标记。这就是我们的标签。然后实施分水岭算法。每一次灌水,我们的标签就会被更新,当两个不同颜色的标签相遇时就构建堤

  如下图所示,这些硬币紧挨在一起。就算你使用阈值操作,它们任然是紧挨着的。

  现在我们要去除图像中的所有的白噪声,这就需要使用形态学中的开运算。为了去除对象上小的空洞我们需要使用形态学闭运算。所以我们现在知道靠近对象中心的区域肯定是前景,而远离对象中心的区域肯定是背景。而不能确定的区域就是硬币之间的边界。

  所以我们要提取肯定是硬币的区域。腐蚀操作可以去除边缘像素。剩下就可以肯定是硬币了。当硬币之间没有接触时,这种操作是有效的。但是由于硬币之间是相互接触的,我们就有了另外一个更好的选择:距离变换再加上合适的阈值。接下来我们要找到肯定不是硬币的区域。这是就需要进行膨胀操作了。膨胀可以将对象的边界延伸到背景中去。这样由于边界区域被去处理,我们就可以知道那些区域肯定是前景,那些肯定是背景。

  剩下的区域就是我们不知道该如何区分的了。这就是分水岭算法要做的。这些区域通常是前景与背景的交界处(或者两个前景的交界)。我们称之为边界。从肯定是不是背景的区域中减去肯定是前景的区域就得到了边界区域。

  如结果所示,在阈值化之后的图像中,我们得到了肯定是硬币的区域,而且硬币之间也被分割开了。(有些情况下你可能只需要对前景进行分割,而不需要将紧挨在一起的对象分开,此时就没有必要使用距离变换了,腐蚀就足够了当然腐蚀也可以用来提取肯定是前景的区域。)

  现在知道了哪些是背景哪些是硬币了,那我们就可以创建标签(一个与原图像大小相同,数据类型为 in32 的数组),并标记其中的区域了。对我们已经确定分类的区域(无论是前景还是背景)使用不同的正整数标记,对我们不确定的区域使用 0 标记。我们可以使用函数nectedComponents()来做这件事。它会把将背景标记为 0,其他的对象使用从 1 开始的正整数标记。

  但是,我们知道如果背景标记为 0,那分水岭算法就会把它当成未知区域了。所以我们想使用不同的整数标记它们。而对不确定的区域(函数cv2.connectedComponents 输出的结果中使用 unknown 定义未知区域)标记为 0。

  结果使用 JET 颜色地图表示。深蓝色区域为未知区域。肯定是硬币的区域使用不同的颜色标记。其余区域就是用浅蓝色标记的背景了。现在标签准备好了。

  到最后一步:实施分水岭算法了。标签图像将会被修改,边界区域的标记将变为 -1.

  结果如下,有些硬币的边界被分割的很好,也有一些硬币之间的边界分割的不好。

  分水岭计算分两个步骤:一个是排序过程,一个是淹没的过程。首先对每个像素的灰度级进行从低到高的排序,然后从低到高实现淹没过程,对每一个局部极小值在h阶高度的影响域采用先进先出的结构进行判断及标注。分水岭...博文来自:衣带渐宽人憔悴

  1)分水岭算法原理:任何一幅灰度图像都可以被看成是拓扑平面,灰度值高的区域可以被看成是山峰,灰度值低的区域可以被看成是山谷,我们向每一个山谷中灌不同颜色的水,随着水位的升高,不同山谷的水就会相遇汇合,...博文来自:吐着泡泡说爱你的博客

  最近需要做一个图像分割的程序,查了opencv的源代码,发现opencv里实现的图像分割一共有两个方法,watershed和mean-shift算法。这两个算法的具体实现都在segmentation....博文来自:确定有穷自动机

  分水岭算法是比较经典的图像分割算法。最近看到一副区域检测和统计的图像,感觉可以通过分水岭算法进行实现,于是顺便对opencv的分水岭算法进行学习。由于示例是python的代码,没有C++的代码,所以打...博文来自:Dangkie的专栏

  看了书之后,还是不清楚分水岭函数中的标记图像的使用。标记图像在该函数中是怎么起作用?怎么标记一个前景,怎么标记背景?论坛

  分水岭在地理学上就是指一个山脊,水通常会沿着山脊的两边流向不同的“汇水盆”。分水岭算法是一种用于图像分割的经典算法,是基于拓扑理论的数学形态学的分割方法。如果图像中的目标物体是连在一起的,则分割起来会...博文来自:Feng某人迟到的技术专栏

  分水岭算法是一种图像区域分割法,在分割的过程中,它会把跟临近像素间的相似性作为重要的参考依据,从而将在空间位置上相近并且灰度值相近的像素点互相连接起来构成一个封闭的轮廓,封闭性是分水岭算法的一个重要特...博文来自:牧野的博客

  本文是基于《opecv2计算机视觉编程手册》中的案例对分水岭算法进行解读。书中及网络上对标记图像的解释模糊,本文谈了谈个人理解。...博文来自:u010741471的专栏

  任意的灰度图像可以被看做是地质学表面,高亮度的地方是山峰,低亮度的地方是山谷。给每个孤立的山谷(局部最小值)不同颜色的水(标签),当水涨起来,根据周围的山峰(梯度),不同的山谷也就是不同的颜色会开始合...博文来自:二毛的博客

  在VS2010,OpenCV进行分水岭的实现时。我遇到了一个问题:在做好种子图和背景图后,也无法分隔开同一个背景框内的多个种子点,也就是同一个128灰度的区域包围的多个255灰度的种子区域无法被区分开...博文来自:u011826081的博客

  #声明:如果有写的不对的地方欢迎指正!一、分水岭算法关于分水岭算法的具体原理我就不说了,网上搜一下很多。OpenCV中的watershed函数实现的分水岭算法是基于“标记”的分割算法,用于解决传统的分...博文来自:我心依旧_nuaa的博客

  今天本来想试试mser算法的,结果没看懂。就先看看类似的分水岭算法,用c++又有些看不懂,于是就在matlab先试试,matlab上面没有源码,就拿它的例子试了试,大概明白...博文来自:的博客

  注:本文非笔者原创,原文转载自:所谓分水岭算法有好多种实现算法,拓扑学,形态学,浸...博文来自:程序人生

  所谓分水岭算法有好多种实现算法,拓扑学,形态学,浸水模拟和降水模拟等方式。要搞懂就不容易了。WatershedAlgorithm(分水岭算法),顾名思义,就是根据分水岭的构成来考虑图像的分割。现实中我...博文来自:zhangSMILE123456的博客

  本篇博客主要介绍分水岭算法。任何一副图像都可以看成拓扑平面,灰度值高的区域可以看成是山峰,灰度值低的地方可以看成是山谷,我们向每一个山谷中灌注不同颜色的水,随着水位的上升,不用山谷的水就会相遇汇合,为...博文来自:CC

  我们在处理图像的时候,常常需要将图像的前景和背景做不同的处理,这时需要将前景和背景分割开。关于图像分割的方法我知道的有三种方法:K-means、分水岭和GrabCut算法进行物体分割。不能够肯定的比较...博文来自:星影L的博客

  前言        分水岭算法主要用于图像的分割!        这个算法需要输入一个灰度图,在接下来的洪水漫堤过程中,相邻的积水盆地之间的分水岭便慢慢构建起来。一般情况下,这会引起过分割,尤其是具有...博文来自:研究与专注

  分水岭算法实现分割分水岭分割方法,是一种基于拓扑理论的数学形态学的分割方法,其基本思想是把图像看作是测地学上的拓扑地貌,图像中每一点像素的灰度值表示该点的海拔高度,每一个局部极小值及其影响区域称为集水...博文来自:q8的专栏

  图像分割引言:图像分割是图像预处理的重要步骤之一,它的主要目标是将图像划分为不同的区域,这些区域与真实世界中的物体具有一定的关联成分。图像分割的方法大体分为以下三种:基于阈值的分割、基于边缘的分割和基...博文来自:两鬓已不能斑白的专栏

  一、原理GrabCut是graphcut的改进版,是迭代的graphcut。该算法利用了图像中的纹理(颜色)信息和边界(反差)信息,只要小量的用户交互操作即可得到比较好的分割效果。计算原理参考:点击打...博文来自:云中寻雾的博客

  图像分割指的是将数字图像细分为多个图像子区域的过程,在OpenCv中实现了三种跟图像分割相关的算法,它们分别是:分水岭分割算法、金字塔分割算法以及均值漂移分割算法。具体见别人的博文博文来自:drrlalala的专栏

  K均值(K-Means)算法是一种无监督的聚类学习算法,他尝试找到样本数据的自然类别,分类是K由用户自己定义,K均值在不需要任何其他先验知识的情况下,依据算法的迭代规则,把样本划分为K类。K均值是最常...博文

  Opencv图像分割:阈值化分割区域分割边缘分割卷积就是两个函数之间的相互关系,然后得出一个新的值,在连续空间做积分计算,然后在离散空间内求和的过程。在计算机视觉里面,可以把卷积当做一个抽象的过程,就...博文来自:keen_zuxwang的博客

  分水岭算法用于分割多个相邻的物体。原理灰度图像根据灰度值可以把像素之间的关系看成山峰和山谷的关系,高亮度(灰度值高)的地方是山峰,低亮度的地方是山谷。给每个孤立的山谷(局部最小值)不同颜色的水(lab...博文来自:weixin_34112900的博客

  kmeans是非常经典的聚类算法,至今也还保留着较强的生命力,图像处理中经常用到kmeans算法或者其改进算法进行图像分割操作,在数据挖掘中kmeans经常用来做数据预处理。opencv中提供了完整的...博文来自:linqianbi的博客

  前面博文中提到的图像阈值化,图像边缘检测,图像轮廓检测实际上都是一种图像分割法,图像分割在图像处理识别是非常重要的,这点没有做过图像识别或图像处理的人都很容易想到,就不多解释了。所以图像分割法就根据不...博文来自:清溪算法君老号

  此次研究两种图像分割法,分别是基于形态学的分水岭算法和基于图割理论的GrabCut算法。OpenCV均提供了两张算法或其变种。鉴于研究所需,记录一些知识点,开发平台为OpenCV2.4.9+Qt5.3...博文来自:DaveBobo的博客

  什么是图像分割?图像分割(ImageSegmentation)是图像处理最重要的处理手段之一。 图像分割的目标是将图像中像素根据一定的规则分为若干(N)个cluster集合,每个集合包含一类像素。 根...博文来自:zhu_hongji的博客

  第一天老师:你知道么,今天有人问了我一个问题。~.我:什么?老师:他说很难。~.我:关于什么的?老师:图像处理。~.我:喔,你说说看,我确实做了不少图像处理的东西(心里默念,你不知知道你给过我多少图像...博文来自:机器学习-深度学习-图像处理-opencv-matlab

  图像分割是按照一定的原则,将一幅图像分为若干个互不相交的小局域的过程,它是图像处理中最为基础的研究领域之一。目前有很多图像分割方法,其中分水岭算法是一种基于区域的图像分割算法,分水岭算法因实现方便,已...博文来自:iracer的博客

  简介如题,本篇就是讲解和使用opencv函数grabcut,来实现图像前景与背景的分离。函数原型1、opencv官方介绍:opencv官方grabcut介绍2、网上童鞋翻译解释:学习Ope...博文来自:羽凌寒

  任何灰度图都恶意被看作是一个地形面,高强度表示山峰和山丘,低强度则表示山谷。开始使用不同的水来填充每个孤立的山谷(局部最小值)。随着水的上升,来自不同山谷的水,开始融合。为了避免这种情况,在水合并的地...博文来自:Claroja

  Graph-BasedSegmentation是经典的图像分割算法,作者Felzenszwalb也是提出DPM算法的大牛。该算法是基于图的贪心聚类算法,实现简单,速度比较快,精度也还行。不过,目前直接...博文来自:Note of Transposition

  请问各位老师,像上面这幅图像,如果只想把果树部分提取并分割出来,应该如何处理呢? 我是一个学习OPENCV的新人,目前的做法是先把图像直方图均衡化,然后平滑去噪声, 之后做个了过滤器,想筛选RGB图论坛

  原文是Linux平台,图像格式PPM,比较不习惯,我改成了OpenCV,效果有一点点差别,应该是高斯滤波效果有差异。...博文来自:Note of Transposition

  官方文档–任何灰度图像都可以看作是一个地形面,高强度表示山峰和山,而低强度...博文来自:JS_XH的博客

  一、概述       从图像中将目标或部分目标分割出来,是我们在进行图像处理的操作,也是有意义的事情。在很多情况下,我们也希望将感兴趣的目标区域分割出来,比如将一个人的脸或手分割出来。具体有下面提到的...博文

  前两篇博客演示了广播式的websocket 推送。 广播式有自己的应用场景,但是广播式不能解决我门一个常见的场景,即消息由谁发送、由谁接收的问题。本例中演示了一个简单的聊天室程序。例子中只有两个用户...博文来自:哎幽的成长

  4、图纸统计工具 软件介绍:该工具可以统计已打开AutoCAD图纸模型空间中符合预订要求的实体的数量,进而可用于统计各项目的数量。...博文来自:jellymiki的博客

  深度卷积网络   涉及问题: 1.每个图如何卷积:   (1)一个图如何变成几个?   (2)卷积核如何选择? 2.节点之间如何连接? 3.S2-C3如何进行分配? 4.16-...博文来自:江南研习社

  tensorflow在ubuntu系统上按照官方文档安装起来相对容易,在centos上由于没有apt-get( yum)相对困难一些,本文会提到一些安装过程中遇到的一些坑及解放方案。...博文来自:zhangweijiqn的专栏

  以下流程是根据博客;并根据自己的实际经验而成,亲测可用。 以下路径多是绝对路径,需要...博文来自:xll_bit的博客

  上一篇文章说了python如何解析excel文件博文来自:waylyn_wu的专栏

  mnist数据集介绍、读取、保存成图片 1、mnist数据集介绍: MNIST数据集是一个手写体数据集,简单说就是一堆这样东西  MNIST的官网地址是 MNIST; 通过阅读官网我们可以知...博文来自:YF_Li123的博客

  一、信道的定义与调制信道的数学模型 1.信道的定义与分类         信道(Channel)是指以传输媒质为基础的信号通道。根据新到的定义,如果信道仅是指信号的传输媒质,这种信道称为狭义信道;如果...博文来自:Seth的博客

  前段时间看了一些关于LSTM方面的论文,一直准备记录一下学习过程的,因为其他事儿,一直拖到了现在,记忆又快模糊了。现在赶紧补上,本文的组织安排是这样的:先介绍rnn的BPTT所存在的问题,然后介绍最初...博文来自:天道酬勤,做一个务实的理想主义者

  强连通分量: 简言之 就是找环(每条边只走一次,两两可达) 孤立的一个点也是一个连通分量   使用tarjan算法 在嵌套的多个环中优先得到最大环( 最小环就是每个孤立点)   定义: int Ti...博文来自:九野的博客

  jquery/js实现一个网页同时调用多个倒计时(最新的) 最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦! //js ...博文来自:Websites

  command窗口是命令窗口,即为sqplus窗口,有命令提示符,识别sqlplus命令,基本的命令都可以执行 sql仅可执行DDL、select、DML等...博文来自:Ape55的博客

  题目点评 数据类型是所有程序都会涉及到的,是计算机语言比较基础知识,这种问题被问到的可能性其实并不大,这样的题目只要花点时间把它记下来就好了,难易程度一般。  两大类: 栈:原始数据类型(Und...博文来自:雄领IT的专栏

  4  软件设计   软件设计部分主要包括uboot移植、内核编译、系统移植、设备驱动编程、应用程序编程(QT编程、mysql数据库编程、控制系统编程)、各个模块的功能函数(部分是在windows下面的...博文来自:求是07的专栏

  上一篇文章讲解了SNMP的基本架构,本篇文章将重点分析SNMP报文,并对不同版本(SNMPv1、v2c、v3)进行区别! 四、SNMP协议数据单元 在SNMP管理中,管理站(NMS)和代理(Age...博文来自:假装在纽约

  一、概述最近在springboot项目引入thymeleaf模板时,使用非严格标签时,运行会报错。默认thymeleaf模板对html5标签是严格检查的。二、在项目中加NekoHTML库在Maven中...博文来自:Luck_ZZ的博客

  Confidence_jj:谢谢你!!有帮助,终于找到如何输出频谱图片的方法!

http://paris-hotels-fr.com/wenlifenge/184.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有