假设简单图像:
f =
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1
1
1
0
1
1
1
1
求其边界:
>> t=boundaries(f,4)
t =
[19x2 double]
边界的坐标为:
>> t{:}
ans =
1
1
1
2
2
2
2
3
2
4
1
4
1
5
2
5
3
5
4
5
5
5
5
4
5
3
5
2
4
2
3
2
3
1
2
1
1
1
求其Freeman链码(4方向数):
>> c=fchcode(t{:},4) %注意fchcode的第一个参数是n*2的点集,而边界t是cell类型的
c =
x0y0: [1 1]
fcc: [0 3 0 0 1 0 3 3 3 3 2 2 2 1 1 2 1 1]
diff: [3 1 0 1 3 3 0 0 0 3 0 0 3 0 1 3 0 3]
mm: [0 0 1 0 3 3 3 3 2 2 2 1 1 2 1 1 0 3]
diffmm: [0 1 3 3 0 0 0 3 0 0 3 0 1 3 0 3 3 1]
分析:
①首先,4方向链码的方向数定义为:
链码定义为:
含义:根据当前边界点相对于上一个边界点像素的坐标增量(Δx,Δy)来确定当前边界点的Freeman编码。
②两个示例:
注意:链码的第一个不是起始点的;x,y轴的方向定义与data cursor所标示的x,y方向是相反的,如:
③8方向链码的分析一样。
④//一阶差分怎么算出来的?
f =
求其边界:
>> t=boundaries(f,4)
t =
边界的坐标为:
>> t{:}
ans =
求其Freeman链码(4方向数):
>> c=fchcode(t{:},4) %注意fchcode的第一个参数是n*2的点集,而边界t是cell类型的
c =
分析:
①首先,4方向链码的方向数定义为:

链码定义为:

含义:根据当前边界点相对于上一个边界点像素的坐标增量(Δx,Δy)来确定当前边界点的Freeman编码。
②两个示例:


注意:链码的第一个不是起始点的;x,y轴的方向定义与data cursor所标示的x,y方向是相反的,如:

③8方向链码的分析一样。
④//一阶差分怎么算出来的?