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

分水岭变换函数:

watershed函数

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

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

分水岭变换的分割,watershed函数相关推荐

  1. OpenCV库中watershed函数(分水岭算法)的详细使用例程

    # 声明:如果有写的不对的地方欢迎指正! 一.分水岭算法 关于分水岭算法的具体原理我就不说了,网上搜一下很多.OpenCV中的watershed函数实现的分水岭算法是基于"标记"的 ...

  2. 【OpenCV】 - 图像分割之分水岭算法,watershed()函数的输出,对marker和image的改变

    一.背景 最近在学分水岭算法的opencv函数watershed()时,对函数执行完后image和marker的变化一无所知.懵懵懂懂. 于是便结合网上资料和自己现身说法,给大家分享一下[waters ...

  3. Watershed函数

    Watershed 做分水岭图像分割 C++:void watershed(InputArray image, InputOutputArray markers) c语言形式:void cvWater ...

  4. 分水岭算法--语义分割

    分水岭算法–语义分割 一.分水岭算法:把图像中的低密度的区域(变化小)看成山谷,高密度的区域(变化大)看成山峰.开始向山谷中注入水知道不同的山谷中的水开始汇聚.为了阻止不同山谷中的水汇聚,可以设置一些 ...

  5. Matlab watershed函数

    L = watershed(A) 对输入矩阵 A 进行分水岭变换,并标记不同的分水岭区域,得到标签矩阵 L . A 可以是任意维度的矩阵. L 中的元素是非负整数. 值为 0 的元素不属于一个独立的分 ...

  6. 图像分割经典算法--《分水岭算法》(Watershed)

    <Opencv分水岭算法--watershed自动图像分割用法> 本文转载自: https://blog.csdn.net/dcrmg/article/details/52498440 其 ...

  7. sqlserver中实现split分割字符串函数

    常用的. IF OBJECT_ID (N'fn_split') IS NOT NULL DROP FUNCTION  fn_split go CREATE  function dbo.fn_split ...

  8. SQL 字符串分割表函数

    1 --字符串分割表函数 2 declare @str varchar(1000) 3 declare @split varchar(10) 4 5 declare @i int; 6 declare ...

  9. MySQL 字符串分割 SUBSTRING_INDEX函数

    From: MySQL 字符串分割 SUBSTRING_INDEX函数 Sql代码 SUBSTRING_INDEX(str,delim,count) 用delim 分割str,取第count个子串 u ...

最新文章

  1. 最强 NLP 预训练模型库 PyTorch-Transformers 正式开源:支持 6 个预训练框架,27 个预训练模型...
  2. 【CV】Pytorch一小时教程添加损失函数图像可视化训练过程
  3. 功能自动化工具watiJ(转载)
  4. Spark系列-初体验(数据准备篇)
  5. C语言 | 关于e格式符的问题(附C例程)
  6. Eclipse断点调试出现Source not found
  7. python编程(pyautogui库)
  8. [开源 .NET 跨平台 Crawler 数据采集 爬虫框架: DotnetSpider] [三] 配置式爬虫
  9. MUI框架 按钮点击响应不好的问题解决办法
  10. “基因编辑婴儿”惹争议,那你知道机器学习在脱靶效应中的作用吗?
  11. java 读取资源文件最详细解读
  12. appium之定位方式
  13. Linux登录公开ftp命令,linux下登录ftp, lftp命令详解
  14. 【技术贴】解决Eclipse编译java源文件之后没有生成class文件|找不到class文件
  15. 计算机专科大学三年规划书,专科大学规划书范文
  16. 计算机二级office一星期可以过么,计算机二级Ms office一周过关攻略
  17. android loadsvm raw,OpenCV机器学习:Android上利用SVM实现手写体数字识别
  18. kNN_约会网站匹配效果改进实现代码
  19. 网易云音乐登录报错 status: 400, body: { code: -460, message: ‘网络太拥挤,请稍候再试!‘ } 解决
  20. [ Python ] 爬虫类库学习之 xpath,爬取彼岸图网的 小姐姐 图片

热门文章

  1. 【工业大数据】张洁教授现场剖析制造业大数据制造的思考与实践
  2. Swift Podcast: Chris Lattner 讲述 Swift 起源故事
  3. ts服务器cal文件激活,付费网课ts文件如何解密?m3u8无IV信息
  4. jvm原理(25)Java字节码文件结构剖析
  5. 全球著名的十位质量大师
  6. ai俄罗斯方块java_俄罗斯方块进阶--AI俄罗斯方块
  7. 常用物流快递单号查询API接口对接net源码示例_快递鸟
  8. (附源码)springboot萌宠宠物网店的开发与设计 毕业设计 011042
  9. arguments的使用:
  10. 清明节快到了,车辆尾号限行规则提前看!一文带你了解全国各地的尾号限行规则