zoukankan      html  css  js  c++  java
  • 四叉树算法原理与实现

    一、原理

    四叉树编码的基本思想是:首先将把一副图像或栅格地图( ,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("
    ");
    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

    宣言:在此记录自己学习过程中的心得体会,同时积累经验,不断提高自己! 文章未经说明均属原创,学习笔记可能有大段的引用,一般会注明参考文献。 欢迎大家留言交流。转载请注明出处。
  • 相关阅读:
    mojo 接口示例
    MojoliciousLite: 实时的web框架 概述
    接口返回json
    centos 6.7 perl 版本 This is perl 5, version 22 安装DBI DBD
    centos 6.7 perl 5.22 安装DBD 需要使用老的perl版本
    商业智能改变汽车行业
    商业智能改变汽车行业
    读MBA经历回顾(上)目的决定手段——北漂18年(48)
    perl 升级到5.20版本
    Group Commit of Binary Log
  • 原文地址:https://www.cnblogs.com/vegetable/p/4113936.html
Copyright © 2011-2022 走看看