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

    宣言:在此记录自己学习过程中的心得体会,同时积累经验,不断提高自己! 文章未经说明均属原创,学习笔记可能有大段的引用,一般会注明参考文献。 欢迎大家留言交流。转载请注明出处。
  • 相关阅读:
    hadoop基础学习---数据管理策略
    hadoop基础学习---基本概念
    hadoop配置
    linux配置java环境
    Linux使用expect实现自动登录的脚本
    机器学习系列-寒小阳
    深度学习与计算机视觉系列-寒小阳
    深度学习与计算机视觉(12)_tensorflow实现基于深度学习的图像补全
    深度学习与计算机视觉(11)_基于deep learning的快速图像检索系统
    深度学习与计算机视觉系列(10)_细说卷积神经网络
  • 原文地址:https://www.cnblogs.com/vegetable/p/4113936.html
Copyright © 2011-2022 走看看