DCT变换(JAVA)

来源:互联网 发布:淘宝如何改最低折扣 编辑:程序博客网 时间:2024/06/06 02:17

对图像划分为8*8的像素块并进行DCT变换


经过上一篇博文(http://blog.csdn.net/qq_29859497/article/details/72860023)将一张图片进行转换颜色空间并将各个通道进行分离后,我们可以取得各个通道如亮度Y、饱和度Cb、色度Cr通道,对他们进行DCT变换处理。


DCT变换在当前的图像分析已经压缩领域有着极为广大的用途,我们常见的JPEG静态图像编码以及MJPEG、MPEG动态编码等标准中都使用了DCT变换。相应公式可自行百度~


DCT变换(JAVA):


public static double[][] DCTconvertion(double[][] f) {                 int sizeX = f.length;      int sizeY = f[0].length;      double[][] F = new double[sizeX][sizeY];      int u, v, x, y;      for(int xx = 0; xx < sizeX; xx += 8){          for(int yy = 0; yy < sizeY; yy += 8){                               for(int u1 = xx; u1 < xx + 8; u1++){                  u = u1 - xx;                  for(int v1 = yy; v1 < yy + 8; v1++){                      v = v1 - yy;                      double subSum = 0.0;                      for(int x1 = xx; x1 < xx + 8; x1++){                          x = x1 - xx;                          for(int y1 = yy; y1 < yy + 8; y1++){                              y = y1 - yy;                              subSum += Math.cos(((2.0*x + 1.0)*u*Math.PI)/(16.0)) * Math.cos(((2.0*y + 1.0)*v*Math.PI)/(16.0)) * f[x1][y1];;                          }                       }                  F[u1][v1] = Math.max(Math.min(((Cfunc(u) * Cfunc(v)) / 4.0) * subSum, 1024.0), -1024.0);              }          }           }    }       return F;}

可用一个二维数组保存DCT变换后的数据,当然可以在控制台将数据打印出来,打印二维数组printArray方法:


public static void printArray(int[][] F){      int X = F.length;      int Y = F[0].length;      for(int y = 0; y < Y; y++){          for(int x = 0; x < X; x++){               System.out.print(F[x][y] + "  ");               System.out.print("\t");          }          System.out.println("");      }         System.out.println(""); }

运行效果如下图:



这里写图片描述
这里写图片描述
这里写图片描述


这里写图片描述
这里写图片描述


(o゜▽゜)o☆[BINGO!]这里是小屋,欢迎戳(o゜▽゜)o☆[BINGO!]

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 油头发掉的厉害怎么办 头顶头发长得慢怎么办 每次洗头发都掉很多头发怎么办 拔了头发不长怎么办 6岁儿童头发稀少怎么办 2岁宝宝胆子小怎么办 坐到小孩的头怎么办 托班幼儿不刷牙怎么办 两岁的宝宝蛀牙怎么办 小孩在学校被打怎么办 油画棒画在墙上怎么办 宝宝把蜡笔吃了怎么办 吃鸡更新了怎么办开始 数字画涂料干了怎么办 广告画颜料干了怎么办 宝宝断奶后瘦了怎么办 腿一个粗一个细怎么办 两条小腿不一样粗怎么办 两岁宝宝坐不了怎么办 q糖孩子吃多了怎么办 q糖孩子吃的太多怎么办 ps图层不能覆盖怎么办 孩子的字写的不好怎么办 孩子爱打人怎么办 6招 一岁宝宝爱打人怎么办 2岁小朋友爱打人怎么办 小朋友爱动手怎么办4岁 5,6岁爱动手打人怎么办 七个月宝宝大便干燥怎么办 两岁宝宝吐奶怎么办 2岁宝宝轻微蛀牙怎么办 2岁宝宝喝水都吐怎么办 2岁宝宝吐的厉害怎么办 两岁宝宝个子矮怎么办 宝宝吐了一天了怎么办 3岁宝宝吃饭呕吐怎么办 3岁宝宝突然呕吐怎么办 11个月婴儿呕吐怎么办 2岁宝宝呕吐是怎么办 2岁宝宝呕吐腹泻怎么办 七个月的宝宝拉肚子怎么办