freeman 链码

文章转自:http://blog.sina.com.cn/s/blog_6f57a7150100opue.html

假设简单图像:

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方向是相反的,如:

在opencv中点的x轴是横轴 , y轴是纵轴 和matlab上表示有点不同。

理解原理就得了


③8方向链码的分析一样。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值