热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用watershed函数进行分水岭变换的图像分割

关于分水岭分割的理解可以看这篇文章图像分割之分水岭,比较形象。分水岭变换函数:watershed函数下面这是matlab官方给的watershed

关于分水岭分割的理解可以看这篇文章图像分割之分水岭,比较形象。

分水岭变换函数:

watershed函数

下面这是matlab官方给的watershed函数例子。

clear all; clc; close all; center1 &#61; -40;%第一个圆圆心的横坐标center2 &#61; -center1;%第二个圆圆心的横坐标dist &#61; sqrt(2*(2*center1)^2);%计算两个圆心之间的距离radius &#61; dist/2 * 1.4;%圆的半径为两者距离的一半的1.4倍&#xff0c;即两个圆肯定会相交lims &#61; [floor(center1-1.2*radius) ceil(center2&#43;1.2*radius)];%floor 向下取整 ceil向上取整 为整个图像的大小[x,y] &#61; meshgrid(lims(1):lims(2));%生成一个69*69的网格平面bw1 &#61; sqrt((x-center1).^2 &#43; (y-center1).^2) <&#61; radius;%计算每个坐标的跟&#xff08;-10&#xff0c;-10&#xff09;和&#xff08;10&#xff0c;10&#xff09;的距离&#xff0c;如果小于半径则置1&#xff0c;否则置0bw2 &#61; sqrt((x-center2).^2 &#43; (y-center2).^2) <&#61; radius;bw &#61; bw1 | bw2;%两个二值图像按位相或&#xff0c;合并在一起figure, imshow(bw,&#39;InitialMagnification&#39;,&#39;fit&#39;), title(&#39;bw&#39;)%显示两个相或之后的结果D &#61; bwdist(~bw);%对bw求反&#xff0c;然后求距离变换之后的结果figure, imshow(D,[],&#39;InitialMagnification&#39;,&#39;fit&#39;)%画出距离变换之后的结果title(&#39;Distance transform of ~bw&#39;)%标题D &#61; -D;%对距离变换之后的结果求负值,因为盆地涨水过程是从低到高&#xff0c;灰度值就从小到大
% D(~bw) &#61; -Inf;%把~bw中1的部分全部置为-Inf&#xff0c;也可以在下面让L(~bw)&#61;0% 功能&#xff1a;分水岭变换% 用法&#xff1a;L &#61; watershed(A) % 输入&#xff1a;A——输入矩阵(任意维数)% 输出&#xff1a;L——分水岭标记矩阵% 注&#xff1a;L为整数(>&#61;0)&#xff0c;标记0不属于分水岭区域&#xff0c;标记1属于第1个分水岭区域&#xff0c;标记2属于第2个分水岭区域&#xff0c;以此类推。% 默认对二维矩阵使用8连通&#xff0c;三维矩阵使用26连通&#xff0c;高维矩阵使用conndef(ndims(A),&#39;maximal&#39;)来定义连通性。% % L &#61; watershed(A, conn) specifies the connectivity to be used in the watershed computation. conn can have any of the following scalar values.% 输入&#xff1a;A——输入矩阵、conn——连通性% 输出&#xff1a;L——分水岭标记矩阵 L &#61; watershed(D); %-1的位置置为0&#xff0c;其他位置分别为1&#xff0c;2&#xff0c;3L(~bw)&#61;0% 功能&#xff1a;转换标记矩阵到RGB图像% 用法&#xff1a;RGB &#61; label2rgb(L) % 输入&#xff1a;L——标记矩阵(可由labelmatrix, bwlabel, bwlabeln, watershed返回) % 输出&#xff1a;RGB——彩色图像% 注&#xff1a;根据L的数值对应&#xff0c;默认对应到colormap(jet)的色彩&#xff0c;返回RGB矩阵 % RGB &#61; label2rgb(L, map)% 输入&#xff1a;L——标记矩阵(可由labelmatrix, bwlabel, bwlabeln, watershed返回)、map——颜色映射表 % 输出&#xff1a;RGB——彩色图像% 注&#xff1a;map为n*3的矩阵&#xff0c;可以通过MATLAB的colormap函数来返回&#xff0c;比如colormap(&#39;jet&#39;)等。也可以根据要求自己定义。默认为colormap(jet)。 % RGB &#61; label2rgb(L, map, zerocolor) defines the RGB color of the elements labeled 0 (zero) in the input label matrix L. As the value of zerocolor, specify an RGB triple or one of the strings listed in this table.% 输入&#xff1a;L——标记矩阵(可由labelmatrix, bwlabel, bwlabeln, watershed返回)、map——颜色映射表、zerocolor——对应于标记0的颜色 % 输出&#xff1a;RGB——彩色图像 b% 注&#xff1a;zerocolor可以取值如表1.1&#xff0c;默认为[1 1 1]&#xff0c;即白色。 % 表1.1 取值列表 % Value % Color % &#39;b&#39; % 蓝色% &#39;c&#39; % 蓝绿色% &#39;g&#39; % 绿色% &#39;k&#39; % 黑色% &#39;m&#39; % 洋红色% &#39;r&#39; % 红色% &#39;w&#39; % 白色% &#39;y&#39; % 黄色% RGB &#61; label2rgb(L, map, zerocolor, order)% 输入&#xff1a;L——标记矩阵(可由labelmatrix, bwlabel, bwlabeln, watershed返回)、map——颜色映射表、zerocolor——对应于标记0的颜色、order——标记矩阵和颜色映射表对应方式% 输出&#xff1a;RGB——彩色图像 % 注&#xff1a;order默认为noshuffle&#xff0c;即根据L的数值来对应颜色。另外可以取值为shuffle&#xff0c;说明使用伪随机方式来对应。rgb &#61; label2rgb(L,&#39;jet&#39;,[.5 .5 .5]);%label2rgb(L, map, zerocolor) ,&#64;jet彩色 &#64;gray灰色figure, imshow(rgb,&#39;InitialMagnification&#39;,&#39;fit&#39;)title(&#39;Watershed transform of D&#39;)


推荐阅读
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • 先看看ElementUI里关于el-table的template数据结构:<template><el-table:datatableData><e ... [详细]
  • 本文介绍了如何使用n3-charts绘制以日期为x轴的数据,并提供了相应的代码示例。通过设置x轴的类型为日期,可以实现对日期数据的正确显示和处理。同时,还介绍了如何设置y轴的类型和其他相关参数。通过本文的学习,读者可以掌握使用n3-charts绘制日期数据的方法。 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
  • 本文介绍了使用readlink命令获取文件的完整路径的简单方法,并提供了一个示例命令来打印文件的完整路径。共有28种解决方案可供选择。 ... [详细]
  • [echarts] 同指标对比柱状图相关的知识介绍及应用示例
    本文由编程笔记小编为大家整理,主要介绍了echarts同指标对比柱状图相关的知识,包括对比课程通过率最高的8个课程和最低的8个课程以及全校的平均通过率。文章提供了一个应用示例,展示了如何使用echarts制作同指标对比柱状图,并对代码进行了详细解释和说明。该示例可以帮助读者更好地理解和应用echarts。 ... [详细]
  • 引号快捷键_首选项和设置——自定义快捷键
    3.3自定义快捷键(CustomizingHotkeys)ChemDraw快捷键由一个XML文件定义,我们可以根据自己的需要, ... [详细]
author-avatar
不理坏女孩
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有