DCT变换(JAVA) - Go语言中文社区

DCT变换(JAVA)


对图像划分为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!]

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_29859497/article/details/72860223
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-07 20:45:55
  • 阅读 ( 1252 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢