文章转自: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方向链码的分析一样。

freeman 链码相关推荐

  1. Freeman链码(弗雷曼链码)--matlab实现

    Freeman链码(弗雷曼链码)–matlab实现 clear; clc;close all; % 下面是对单幅图像处理的程序 I=imread('../images/8.jpg'); % I为一幅包 ...

  2. 使用Freeman链码提取影像边界

    使用Freeman链码提取影像边界 第一篇博客,还真不知道写些什么.恰好最近写了一个小功能,还是蛮有用,希望能帮到用得着的朋友,也为以后积累资料吧. 在GIS行业中,有时会计算影像的面积,希望提取出影 ...

  3. Freeman链码及其某些变化

    %Freeman链码及其某些变化 f=imread('noisy_circular_stroke.tif'); subplot(3,2,1),imshow(f),title('原图')h=fspeci ...

  4. opencv cvFindContour 轮廓 freeman链码

    CvMemStorage* storage = cvCreateMemStorage(0); CvSeq* contour = 0; //传入图像必须是8位单通道,将被修改 int iCount=cv ...

  5. Freeman链码差分

    在看冈萨雷斯的<数字图像处理(MATLAB版)>时,书上好像并没有说细说这个Freeman链码的差分是怎样计算的,所以自己想了一会,觉得可能是这样计算的: 例如书上举的例子(第328页)是 ...

  6. freeman链码,归一化链码,一阶差分链码,归一化一阶差分链码

    最近在做一些关于图像的东西,在用边界跟踪提取图像的边界之后要用链码编码之后才能进行下一步处理,所以查资料学习了一下标题里面提到的东西.在这里就不说这些东西的背景了,主要是通俗地解释一下这些东西的原理. ...

  7. 【OpenCV 例程 300篇】222. 特征提取之弗里曼链码(Freeman chain code)

    OpenCV 例程200篇 总目录 [youcans 的 OpenCV 例程 300篇]222. 特征提取之弗里曼链码(Freeman chain code) 目标特征的基本概念 通过图像分割获得多个 ...

  8. 弗里曼(Freeman)链码

    参考链接 定义:任选一个像素点作为起始点,与其相邻的像素分别在 8 个不 同 的 位 置上, 给它们赋予方向值 0-7(如图 1), 称为0-7 位链码方向值, 一个线条可以用Freeman 链码 的 ...

  9. 图像轮廓生成Freeman码

    ##图像轮廓生成Freeman码## 摘要 Freeman码是描述轮廓的另外一种形式,这篇博客我将会用matlab和OpenCV两个版本生成Freeman码.纵观网上很多介绍边缘轮廓的,都提到过Fre ...

最新文章

  1. matplotlib生成指定大小的空白的白色图(故意保存)实战:当然也可以保存正常的有内容的图像
  2. 何时(不)使用Java抽象类
  3. Computer:MediaPreview的简介、安装、使用方法之详细攻略
  4. 【数据结构与算法】之深入解析“最接近的三数之和”的求解思路与算法示例
  5. rust如何在木板上上传图片_通过编写一个简单的游戏来学习 Rust | Linux 中国
  6. U-Boot-2009-03移植笔记(移植准备)
  7. 命名规范、MVC 开发模式
  8. NAPI 技术在 Linux 网络驱动上的应用和完善
  9. 冲刺阶段(二) 第六天
  10. APM应用性能管理的过去二十年
  11. 给 VS2008 / VS2010 MFC 项目添加启动画面
  12. 无穷项和求极限(定积分)
  13. Android 获取经纬度处理
  14. Windows图片和传真查看器修复办法
  15. 洛谷每日三题之第六天
  16. 一种实用的BOOST电路_UC3842升压设计
  17. oracle数据库查看防火墙,Oracle数据库防火墙简介
  18. kali在高清屏幕下如何放大字体与图标
  19. WiFi分销小程序3.0.9独立版
  20. C++:使用vector中accumulate求和计算出错

热门文章

  1. 非侵入性脑刺激和太空探索
  2. 太阳能监控摄像头电不够用
  3. java多线程实现龟兔赛跑
  4. 《鸟哥的Linux私房菜 基础学习篇(第三版)》习题与解析(一)
  5. Beyond Compare 4破解版和破解教程
  6. jsp 和 servlet 有什么区别?
  7. 编程规范(阿里巴巴)
  8. python 用tkinter 做一个简易番茄钟
  9. Java鸡兔同笼问题
  10. 《introduction to information retrieval》信息检索学习笔记4 索引结构