matlab自带的分水岭算法,我已经注释了一部份,但其它一些代码看得不是很懂....

发布时间:2024-05-14 13:09 发布:上海旅游网

问题描述:

function L = watershed(varargin)
[A,conn] = parse_inputs(varargin{:});
try
[junk,idx] = sort(A(:));
catch
[junk,idx] = sort(double(A(:)));% 如果没有指定排序方法,就把它变换成double型的
end
L = watershed_vs(A,conn,idx-1);

% 以下是将分水岭中的山脊线去掉,将所有标记过的像素变为一个分水岭像素的更高标记邻接点.
conn = conn2array(conn);
L(imdilate(L,conn) > L) = 0;
function [A,conn] = parse_inputs(varargin)
checknargin(1,2,nargin,mfilename);
A = varargin{1};
checkinput(A,{'numeric' 'logical'}, {'real' 'nonsparse'}, ...
mfilename, 'A', 1);
if nargin < 2
conn = conndef(ndims(A), 'maximal');%用该函数提供的连通来处理更高维数的输入情况
else
conn = varargin{2};
if isa(conn,'strel')
conn = getnhood(conn);
else
checkconn(conn, mfilename, 'CONN', 2);
end
end

问题解答:

matlab自带的分水岭算法,我已经注释了一部份,但其它一些代码看得不是很懂....这个旅游问答期待您的解答,请登录账号或关注微信公众号回答这个问题。

热点新闻