📄 bandtrace.m
字号:
function [BD,BWT]=bandtrace(BW)
%单次边界追踪
%[BW,Lt]=im2bw_t(I,T);
BD = [];%边界点坐标集合
BWT = BW;%擦除已扫描的边界点后二值图像
ST = fnd_stP(BWT);
dir = [-1,-1];
%NextPoint(r,c)=[r,c]+dir
%初始为左上方
Point = ST;
BD = [BD;ST];
NextP = Point + dir;
while (NextP(1)*NextP(2)==0) | (NextP(1)>=size(BWT,1)) | (NextP(2)>=size(BWT,2))
dir = dir_next(dir,0);
NextP = Point + dir;
end
BWT(Point(1),Point(2)) = 0;%擦除起始点
%BWT(NextP(1),NextP(2))
%while
totle = sum(sum(BWT));
i = 1;j = 0;
while (i<=totle) & ((NextP(1)~=ST(1)) | (NextP(2)~=ST(2)))
if BWT(NextP(1),NextP(2)) == 0
if j >= 8
NextP = Point;
break;
end
j = j + 1;
dir = dir_next(dir,0);
NextP = Point + dir;
else
j = 0;
%标记为边界点
BD = [BD;NextP];
BWT(NextP(1),NextP(2)) = 0;%擦除
Point = NextP;
dir = dir_next(dir,1);
NextP = Point + dir;
i = i + 1;
end
while (NextP(1)*NextP(2)==0) | (NextP(1)>=size(BWT,1)) | (NextP(2)>=size(BWT,2))
dir = dir_next(dir,0);
NextP = Point + dir;
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -