当前位置: 首页 > article >正文

java实现zigzag扫描

在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag Scan)。给定一个n×n的矩阵,Z字形扫描的过程如下图所示:
在这里插入图片描述

链接中有直接可执行的java文件

二维数组扫描后变成一维数组

public static int[] two2one(final int input[][]) {int n = 0, x = 0, y = 0;int []output=new int [N*N];output[n] = input[x][y];n++;while (true) {if (x == 0 && y <= N - 2) {y++;output[n] = input[x][y];n++;while (true) {x++;y--;output[n] = input[x][y];n++;if (y == 0) {break;}}}if (y == 0 && x <= N - 2) {x++;output[n] = input[x][y];n++;while (true) {x--;y++;output[n] = input[x][y];n++;if (x == 0) {break;}}}if (x == N - 1 && y < N - 2) {y++;output[n] = input[x][y];n++;while (true) {x--;y++;output[n] = input[x][y];n++;if (y == N - 1) {break;}}}if (y == N - 1 && x < N - 2) {x++;output[n] = input[x][y];n++;while (true) {x++;y--;output[n] = input[x][y];n++;if (x == N - 1) {break;}}}if (x == N - 1 && y == N - 2) {y++;output[n] = input[x][y];break;}}// whilereturn output;}

在这里插入图片描述
扫描后的一维数据还原成二维数组

 public static int[][] one2two(final int input[]) {int n = 0, x = 0, y = 0;int [][]output=new int [N][N];output[x][y] = input[n];n++;while (true) {if (x == 0 && y <= N - 2) {y++;output[x][y] = input[n];n++;while (true) {x++;y--;output[x][y] = input[n];n++;if (y == 0) {break;}}}if (y == 0 && x <= N - 2) {x++;output[x][y] = input[n];n++;while (true) {x--;y++;output[x][y] = input[n];n++;if (x == 0) {break;}}}if (x == N - 1 && y < N - 2) {y++;output[x][y] = input[n];n++;while (true) {x--;y++;output[x][y] = input[n];n++;if (y == N - 1) {break;}}}if (y == N - 1 && x < N - 2) {x++;output[x][y] = input[n];n++;while (true) {x++;y--;output[x][y] = input[n];n++;if (x == N - 1) {break;}}}if (x == N - 1 && y == N - 2) {y++;output[x][y] = input[n];break;}}// whilereturn  output;}

在这里插入图片描述

http://www.lryc.cn/news/2413544.html

相关文章:

  • 信号采集系统设计要点
  • Myeclipse 错误An internal error has occured 解决办法
  • 定时任务
  • ListView的分页显示
  • django学习笔记一:搭建简易博客
  • 手把手教如何搭建Linux环境(搭建云服务器) (Linux基础篇p1)_linux系统搭建云平台
  • Windows修改右键新建菜单【Win10、Win11版】
  • 探秘高性能网络库:LiteNetLib
  • 博客大巴,自动登录,并发布信息开发小计。
  • dropbox 怎么使用_如何在一台PC上使用多个Dropbox帐户
  • 虾米穷逼 VIP 事件回顾和由此引发的思考
  • 每天一篇论文 316/365 用于欠驱动系统能量控制端到端学习的深拉格朗日网络
  • 大数据最全数据仓库建设方案详细:数据平台建设_三库数据平台建设方案(3),设计思想与代码质量优化+程序性能优化+开发效率优化
  • python challenge
  • Wifi 破解原理及教程
  • android 炫酷时间轴,这38款超级炫酷的时间轴特效代码案例,总有一款是你需要的...
  • 整理一些博客网站,助力快速搭建个人知识记录平台
  • 百度地图api初次申请及简单应用
  • Dialog.hide() or Dialog.dismiss()?
  • Matlab R2022a安装
  • 【OpenCV图像处理】三、图像的逻辑运算
  • winrar3.93
  • 某东令牌价js加密
  • 解决目前阶段翻译插件Translation谷歌翻译的问题
  • gameloft java 游戏_每一款JAVA游戏都是经典,但只有四款游戏,是90%玩家从小玩到大...
  • 绿坝花季护航,为何如此吸引眼球?
  • Oracle sql 复习题目总结
  • DDD 领域驱动设计落地实践系列:战略设计和战术设计
  • PCI简易通讯控制器驱动的安装办法
  • 【算法】----完全背包问题(动态规划)