当我们读取RGB图像时,进行移位操作以分别获得R,G和B矩阵...是否可以读取灰度图像(JPEG)并直接操作其像素值。然后重写图片?
最终我必须在灰度图像上进行DCT操作。
答案 0 :(得分:2)
下面的代码会将灰度图像读取为简单的二维数组:
File file = new File("path/to/file");
BufferedImage img = ImageIO.read(file);
int width = img.getWidth();
int height = img.getHeight();
int[][] imgArr = new int[width][height];
Raster raster = img.getData();
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
imgArr[i][j] = raster.getSample(i, j, 0);
}
}
注意:raster.getSample(...)
方法有3个参数:x
- 像素位置的X坐标y
- 像素位置的Y坐标b
- 乐队回归。在灰度图像的情况下,我们应该/可能只获得 0 波段。