分水岭
分水岭变换
描述
分水岭变换发现“汇水盆地”或“分水岭脊线”在一个图像,把它作为一个表面光像素代表高海拔和暗像素代表低海拔。分水岭变换可用于段相邻地区的利益转化为不同的对象。
例子
矩阵计算分水岭变换和显示生成的标签
创建一个二进制图像包含两个重叠的圆形物体。显示图像。
center1 = -40;center2 = -center1;dist =√2 * 2 * center1) ^ 2);半径= dist / 2 * 1.4;lims =[地板(center1 - 1.2 *半径)装天花板(center2 + 1.2 *半径)];(x, y) = meshgrid (lims (1): lims (2));bw1 =√(x-center1)。^ 2 + (y-center1)。^2) <= radius; bw2 = sqrt((x-center2).^2 + (y-center2).^2) <= radius; bw = bw1 | bw2; imshow(bw) title(的二进制图像重叠对象的)
计算的距离变换补的二进制图像。每个像素的值在输出图像像素之间的距离,最近的非零像素的bw
。
D = bwdist (~ bw);imshow (D,[])标题(的二进制映像的距离变换)
把补的距离转换图像,光像素代表高海拔和暗像素代表低海拔的分水岭变换。
D = - D;imshow (D,[])标题(距离变换的补充)
计算分水岭变换。设置像素以外的ROI0
。
L =分水岭(D);L (~ bw) = 0;
显示生成的标签作为一个RGB图像矩阵。
rgb = label2rgb (L,“喷气机”,(。5。5。5);imshow (rgb)标题(“分水岭变换”)
计算三维二进制映像的分水岭变换
做一个3 d二进制图像包含两个重叠的领域。
center1 = -10;center2 = -center1;dist =√3 * 2 * center1) ^ 2);半径= dist / 2 * 1.4;lims =[地板(center1 - 1.2 *半径)装天花板(center2 + 1.2 *半径)];[x, y, z] = meshgrid (lims (1): lims (2));bw1 =√(x-center1)。^ 2 + (y-center1)。^ 2 +…(z-center1)。^ 2) < =半径;bw2 =√(x-center2)。^ 2 + (y-center2)。^ 2 +…(z-center2)。^ 2) < =半径;bw = bw1 | bw2;图、等值面(x, y, z, bw 0.5),轴平等的、标题(“BW”)包含x,ylabely,zlabelzxlim (lims) ylim (lims) zlim (lims)视图(3),camlight,照明高洛德
计算出距离变换。
D = bwdist (~ bw);图、等值面(x, y, z D / 2)半径、轴平等的标题(“距离变换的等值面”)包含x,ylabely,zlabelzxlim (lims) ylim (lims) zlim (lims)视图(3),camlight,照明高洛德
补充的距离变换,迫使物体像素正
,然后计算分水岭变换。
D = - D;D (~ bw) =正;L =分水岭(D);L (~ bw) = 0;图等值面(x, y, z L = = 1, 0.5)等值面(x, y, z L = = 2, 0.5)轴平等的标题(“分段对象”)包含x,ylabely,zlabelzxlim (lims) ylim (lims) zlim (lims)视图(3),camlight,照明高洛德
输入参数
一个
- - - - - -输入图像
数字数组|逻辑阵列
输入图像,指定为一个数字或逻辑阵列的维度。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|逻辑
康涅狄格州
- - - - - -像素连接
4
|8
|6
|18
|26
|3-by-3-by -…3的矩阵0
年代和1
年代
像素连接,指定为这个表中的值之一。默认的连接是8
对于二维的图像,和26
3 d图像。
价值 |
意义 |
|
---|---|---|
二维的连接性 |
||
|
边缘像素连接如果他们的联系。附近一个像素的相邻像素在水平或垂直方向。 |
当前像素显示在灰色。 |
|
像素连接如果边缘或角落联系。附近一个像素的相邻像素在水平、垂直或对角线方向。 |
当前像素显示在灰色。 |
三维的连接性 |
||
|
像素如果他们的脸碰相连。附近的一个像素的相邻像素:
|
当前像素显示在灰色。 |
|
边缘像素连接如果他们的脸或联系。附近的一个像素的相邻像素:
|
当前像素是立方体的中心。 |
|
像素连接如果他们的脸、边缘或角落联系。附近的一个像素的相邻像素:
|
当前像素是立方体的中心。 |
更高的维度,分水岭
使用默认值
。conndef
(ndims (A),“最大”)
连接也可以定义在一个更一般的方法对于任何维度通过指定3-by-3-by -…3的矩阵0
年代和1
年代。1
价值元素定义社区位置相对的中心元素康涅狄格州
。请注意,康涅狄格州
必须对其中心对称元素。看到指定自定义连接性为更多的信息。
请注意
如果你指定一个默认的连接,图像边缘的像素可能不被认为是边界像素。例如,如果康涅狄格州= [0 0 0;1 1 1;0 0 0)
元素第一和最后一行不认为是边界像素,因为根据连接的定义,它们不是连接到该地区以外的形象。
数据类型:双
|逻辑
输出参数
l
——标签矩阵
数值数组的非负整数
标签矩阵,指定为非负整数的数字数组。元素标签0
不属于一个独特的分水岭地区。元素标签1
属于第一个分水岭地区,标记为2的元素属于第二个分水岭地区,等等。
提示
这个函数使用的分水岭变换算法改变了版本5.4 (R2007a)图像处理工具箱™软件。前面的算法偶尔产生标记分水岭盆地不是连续的。如果您需要获得相同的结果与前面的算法,使用函数
watershed_old
。为了防止oversegmentation,去除浅从图像通过使用最小值
imhmin
在你使用的函数分水岭
函数。
算法
分水岭
算法使用了弗尔南多迈耶[1]。
引用
[1]Meyer,弗尔南多,”地形和分水岭线的距离,“信号处理38卷,1994年7月,页113 - 125。
扩展功能
C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。
使用笔记和限制:
分水岭
金宝app支持C代码的生成(需要MATLAB®编码器™)。注意,如果您选择通用MATLAB主机
目标平台,分水岭
生成的代码使用了一个预编译的,特定于平台的共享库。使用一个共享库保存性能优化,但限制的目标平台可以生成代码。有关更多信息,请参见类型的代码生成图像处理工具箱的支持金宝app。金宝app只支持二维图像
金宝app只支持
4
或8
连接金宝app支持图像包含65535个地区
输出类型总是
uint16
GPU的代码生成
生成NVIDIA的CUDA®代码®GPU使用GPU编码器™。
使用笔记和限制:
金宝app只支持二维图像
金宝app只支持
4
或8
连接金宝app支持图像包含65535个地区
输出类型总是
uint16
线程环境
在后台运行代码使用MATLAB®backgroundPool
与并行计算工具箱™或加速代码ThreadPool
。
这个函数完全支持线程的环境。金宝app有关更多信息,请参见MATLAB函数线程环境中运行。
版本历史
之前介绍过的R2006aR2022b:金宝app支持线程的环境
分水岭
现在支持金宝app线程的环境。
打开举例
你们possedez一个版本modifiee de cet(中央东部东京)为例。Souhaitez-vous打开cet(中央东部东京)为例用vos修改吗?
对MATLAB
你们有派对在联合国留置权,对应这个对MATLAB:
倒实行la对saisissez-la在fenetre德对MATLAB。Les navigateurs web不sup金宝appportent Les MATLAB命令。
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。