一、原理

四叉树编码的基本思想是:首先将把一副图像或栅格地图( ,k>1,不足则补网)等分成四个一级字块,顺序为左上,右上,左下,右下;然后逐块检查其中所有格网属性值(或灰度值),若相同,则该字块不再分;若不同,则将该子块进一步分成四个二级子块;如此递归地分割,直到每个子块的属性或灰度均相等为止。

二、算法实现

 1 //实现四叉树编码2 3 #include"stdio.h"4 void Qutree(int arysize,int level,float curary[] )//arysize 表示矩阵长度,level表示等级,curary[]表示当前矩阵5 {6     7     float fi=curary[0];8     int i;9     //遍历当前数组,是否同构
10     for(i=0;i<=arysize*arysize-1;i++)
11     {
12         if(fi!=curary[i])
13         {
14             break;
15         }
16
17     }
18     if(i==arysize*arysize)
19     {
20         printf("%d,%f",level,fi);
21         printf("\n");
22         return;
23     }
24
25     else
26     {
27         arysize/=2;
28         float *ary1=new float[arysize*arysize];
29         float *ary2=new float[arysize*arysize];
30         float *ary3=new float[arysize*arysize];
31         float *ary4=new float[arysize*arysize];
32         for(i=0;i<arysize;i++)
33         {
34             for(int j=0;j<arysize;j++)
35             {
36                 //左上
37                 ary1[i*arysize+j]=curary[i*(arysize*2)+j];
38                 //右上
39                 ary2[i*arysize+j]=curary[i*(arysize*2)+(arysize+j)];
40                 //左下
41                 ary3[i*arysize+j]=curary[(arysize+i)*(arysize*2)+j];
42                 //右下
43                 ary4[i*arysize+j]=curary[(arysize+i)*(arysize*2)+(arysize+j)];
44             }
45         }
46
47       level++;
48       Qutree(arysize,level,ary1);
49       Qutree(arysize,level,ary2);
50       Qutree(arysize,level,ary3);
51       Qutree(arysize,level,ary4);
52
53     }
54
55 }
56 int main()
57 {
58     //float aa[16]={1,1,2,2,1,1,3,3,4,2,1,2,3,4,3,4};
59     //Qutree(4,0,aa);
60     float aa[64]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
61     Qutree(8,0,aa);
62     return 0;
63
64 }

参考资料:地理信息系统原理与算法(吴立新 、史文中编著)P176

四叉树算法原理与实现相关推荐

  1. CRF(条件随机场)与Viterbi(维特比)算法原理详解

    摘自:https://mp.weixin.qq.com/s/GXbFxlExDtjtQe-OPwfokA https://www.cnblogs.com/zhibei/p/9391014.html C ...

  2. 三维目标检测算法原理

    三维目标检测算法原理 输入输出接口 Input: (1)图像视频分辨率(整型int) (2)图像视频格式(RGB,YUV,MP4等) (3)左右两边的车道线位置信息摄像头标定参数(中心位置(x,y) ...

  3. 3D-2D:PnP算法原理

    3D-2D:PnP算法原理 1.问题背景-- 什么是PnP问题 ? 2.PnP问题的求解方法 2.1 P3P 2.1.1 算法的实际理解 2.1.2 算法的数学推导 2.1.3 算法的缺陷 2.2 直 ...

  4. MySQL索引背后的数据结构及算法原理【转】

    http://blog.codinglabs.org/articles/theory-of-mysql-index.html MySQL索引背后的数据结构及算法原理[转] 摘要 本文以MySQL数据库 ...

  5. 文本分类的基本思想和朴素贝叶斯算法原理

    文本分类的基本思想和朴素贝叶斯算法原理

  6. Bagging与随机森林算法原理小结

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 在集成学习原理小结中,我们讲到了集成学习有两个流派,一个是boos ...

  7. 干货 | 非常全面的谱聚类算法原理总结

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 谱聚类算法是目前最流行的聚类算法之一,其性能及适用场景优于传统的聚 ...

  8. 层次聚类算法原理总结

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 层次聚类(hierarchical clustering)基于簇间 ...

  9. 从传感器到算法原理,机器人、视觉避障尽在此文

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:计算机视觉life 避障是指移动机器人在行走过程中,通过 ...

  10. ORB算法原理解读【不错】

    ORB算法原理解读        这篇写得很好 ORB特征提取.匹配及位置估计   里面对匹配的讲解比较好 两个不同二进制之间的汉明距离指的是两个二进制串不同位的个数.两个二进制不同位的个数是越少越好 ...

最新文章

  1. 兼容IE8,滚动加载下一页
  2. 简单的PHP和MYSQL做投票系统_php mysql简单投票系统
  3. 制作基于http的yum源2
  4. 如果和对方的意见或者事件冲突了怎么办?让步
  5. python 合并重叠数据
  6. boost::describe模块实现枚举转字符串的测试程序
  7. N个数中选择M个数的组合(1MN)
  8. K-periodic Garland CodeForces - 1353E(贪心)
  9. 简单模拟实现简单的当登录延时的效果
  10. php返回支付状态,magento paypal返回支付状态
  11. 大鱼风控笔记 2:量化风控体系的实现要求
  12. 春节停车难?用 Python 找空车位!
  13. bzoj 2281: [Sdoi2011]黑白棋 bzoj 4550: 小奇的博弈(Nimk博弈+DP)
  14. 时间服务器+注册表,注册表缺失导致Windows Server 2008 R2时钟服务W32time不能自启
  15. opencv计算机视觉学习笔记一
  16. C#使用fastreport报表打印
  17. keras图像风格迁移
  18. inline详细讲解【C语言】
  19. 云计算革命-IT产业第三次变革,将如何影响人类社会
  20. 河北省教育厅计算机制度,河北省中小学计算机室规章制度.doc.docx

热门文章

  1. 初学python100例-案例23 python输出菱形图案 青少年python编程 少儿编程案例讲解
  2. SSD性能怎么测?看这一篇就够了!
  3. 软件测试python版本的决策表法解决preDate返回前一天日期
  4. 查询的端口 -解决端口被占用的问题
  5. Navicat Premium 15安装需要注意的几个细节
  6. XPS文件转换成PDF
  7. Arcmap实现航线按日期分段
  8. 王道训练营 Java 部分测试
  9. java 经纬度的距离计算工具包
  10. 编译原理-第一节(东南大学廖力老师)