四叉树通常用来以紧凑的形式对数字图像进行编码(1.根据叶子节点构造四叉树 2.根据四叉树结构对加密图像进行解码 3.输出解码后的图像信息 )
2017-10-05 21:34
681 查看
#include <iostream> #include<iomanip> #include <memory.h> #include<string> #include<stdio.h> using namespace std; int tree[400][4];///四叉树的数组 int leaf[350];///存储叶子节点 int image[16][16];///图像的矩阵 int m;///叶子节点的数量 int ProcessTree(int x)///构造四叉树 { int v[4];///4个叶子节点 int i,j,z; if(leaf[x]>-1)///是叶子节点时则返回叶子节点(递归的出口) return leaf[x]; for(i=0;i<4;i++)///递归构造四叉树 v[i]=ProcessTree(4*x+1+i); for(i=0;i<4;i++) { z=0; for(i=0;j<4;j++) if(v[i]>v[j]) z++; tree[x][z]=i; } return v[tree[x][0]]; } ///int image[16][16]; void BuildImage(int x,int x1,int y1,int x2,int y2)///根据四叉树的结构进行对四叉树的解码 { int i,j; if(leaf[x]>-1) { for(i=x1;i<=x2;i++) for(j=y1;j<=y2;j++) image[i][j]=leaf[x]; return; } BuildImage(4*x+1+tree[x][0],x1,y1,x1+(x2-x1)/2,y1+(y2-y1)/2); BuildImage(4*x+1+tree[x][1],x1+(x2-x1)/2+1,y1,x2,y1+(y2-y1)/2); BuildImage(4*x+1+tree[x][2],x1,y1+(y2-y1)/2+1,x1+(x2-x1)/2,y2); BuildImage(4*x+1+tree[x][3],x1+(x2-x1)/2+1,y1+(y2-y1)/2+1,x2,x1); } int main() { int i,j,k; int n; int m; int intensity; int N; cin>>N; while(N--) { memset(tree,0,sizeof(tree)); int num; int iCase; cin>>iCase; for(num=1;num<=iCase;num++) { cin>>n>>m; memset(leaf,0xff,sizeof(leaf)); for(i=0;i<m;i++) cin>>k>>intensity; leaf[k]=intensity; } ProcessTree(0); cin>>m; memset(leaf,0xff,sizeof(leaf)); for(i=0;i<m;i++) { cin>>k>>intensity; leaf[k]=intensity; } BuildImage(0,0,0,n-1,n-1); if(num>1) cout<<endl; printf("Case%d\n\n",num); for(i=0;i<n;i++) { for(j=0;j<n;j++) cout<<setw(4)<<image[i][j]; cout<<endl; } if(N) cout<<endl; } return 0; }
相关文章推荐
- js对图片base64编码字符串进行解码并输出图像示例
- JS 对图片base64编码字符串进行解码并输出图像
- js对图片base64编码字符串进行解码并输出图像示例
- 每天一道LeetCode-----以字符串的形式输出二叉树所有从根节点到叶子节点的路径
- 利用openssl进行BASE64编码解码、md5/sha1摘要、AES/DES3加密解密
- (二叉搜索树10.1.2)POJ 1577 Falling Leaves(根据删除叶子节点的顺序输出计算一颗二叉树的前序遍历序列)
- 对 web.config 节点信息进行加密
- 爬取网页时自动获取网页编码信息,并对特殊的乱码页面(压缩过的网页内容)用gzip进行解码。
- 编写一个程序,从标准输入读入字符,并把它们写出在标准输出中。 所有非字母字符都完全按照它的输入形式输出,字母字符在输出前进行加密
- 树 List Leaves 【用数组模拟了树状结构建树+搜索叶子节点+按照特殊规律输出每个叶子节点】
- 使用 Java 进行图像处理 - 编码输出高分辨率图像
- 使用 Java 进行图像处理 - 编码输出高分辨率图像
- ffmpeg用来进行编码解码,live555用来进行传输rtsp、rtp
- 集合练习。学生信息包括学号、姓名、出生日期、性别。把N个学生的信息放入一个集合中。可以根据学号,对学生信息进行检索。并可以根据生日进行排序输出。
- 利用openssl进行BASE64编码解码、md5/sha1摘要、AES/DES3加密解密
- 实用命令:利用openssl进行BASE64编码解码、md5/sha1摘要、AES/DES3加密解密
- 黑马程序员--转换流对象,输出方向,转换流编码效果,字符的编码和解码,String类的构造,方法getBytes,指定编码表,File类
- 利用openssl进行BASE64编码解码、md5/sha1摘要、AES/DES3加密解密
- 使用 Java 进行图像处理 - 图像编码输出
- 为什么要对数字信息进行编码