平均数组中的像素数据

用户名

我正在尝试解决读取图像的问题。我需要排除像素中的蓝色通道,以免产生RG图像。

这是我到目前为止没有用过的D;

我是否需要创建一个新的BufferedImage并将每个平均像素(没有蓝色通道)应用到它?我不知道该怎么做。

马库斯A.

对于初学者,将倒数第二行的代码更改为此,然后查看是否有帮助:

image.setRGB(i, j, (redData[i][j] << 16) | (greenData[i][j] << 8));

但是,这样一来,您最终得到的图像将与原始图像大小相同,只不过您放下了蓝色通道,并在其他通道上求平均(有点像模糊),但只在左上角每个2x2块

如果要实际创建四分之一尺寸的图像,则确实确实需要创建BufferedImage宽度和高度减半的新图像,然后将上述行更改为:

newImage.setRGB(i/2, j/2, (redData[i][j] << 16) | (greenData[i][j] << 8));

这是应该执行的代码的更新版本(未经测试):

public static BufferedImage isolateBlueChannelAndResize(BufferedImage image) {
    int imageWidth  = image.getWidth();
    int imageHeight = image.getHeight();
    // Round down for odd-sized images to prevent indexing outside image
    if ((imageWidth  & 1) > 0) imageWidth --;
    if ((imageHeight & 1) > 0) imageHeight--;

    BufferedImage newImage = new BufferedImage(imageWidth/2, imageHeight/2, image.getType());

    for (int i = 0; i < imageWidth; i += 2) {
        for (int j = 0; j < imageHeight; j += 2) {
            int r1 = (image.getRGB(i  , j  ) >> 16) & 0xff;
            int r2 = (image.getRGB(i+1, j  ) >> 16) & 0xff;
            int r3 = (image.getRGB(i  , j+1) >> 16) & 0xff;
            int r4 = (image.getRGB(i+1, j+1) >> 16) & 0xff;
            int red = (r1 + r2 + r3 + r4 + 3) / 4;   // +3 rounds up (equivalent to ceil())

            int g1 = (image.getRGB(i  , j  ) >>  8) & 0xff;
            int g2 = (image.getRGB(i+1, j  ) >>  8) & 0xff;
            int g3 = (image.getRGB(i  , j+1) >>  8) & 0xff;
            int g4 = (image.getRGB(i+1, j+1) >>  8) & 0xff;
            int green = (g1 + g2 + g3 + g4 + 3) / 4;   // +3 rounds up (equivalent to ceil()) 

            newImage.setRGB(i/2, j/2, (red << 16) | (green << 8));
        }
    }

    return newImage;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

扩展Java中的像素数组

来自分类Dev

如何理解频率图像中描述的平均像素数?

来自分类Dev

将图像像素数据转换为坐标数组

来自分类Dev

从hdc获取像素数据作为数组

来自分类Dev

如何从包含二进制像素数据的数组列表中创建新图像

来自分类Dev

查找等于指定颜色的numpy数组中的像素数

来自分类Dev

如何从SFML中的像素数组加载sf :: Image?

来自分类Dev

识别SDL中的像素数据格式

来自分类Dev

Java旋转像素数组

来自分类Dev

如何从TBitmap获取像素数组?

来自分类Dev

Java旋转像素数组

来自分类Dev

解释PNG像素数据

来自分类Dev

从JPG图像读取像素数据

来自分类Dev

从xvfb读取像素数据

来自分类Dev

QImage精确读取像素数据

来自分类Dev

如何从.PNG获取像素数据?

来自分类Dev

如何从画布获取像素数据

来自分类Dev

Hipi平均像素数程序由于cloudera quickstart vm中的纱线容器错误而失败

来自分类Dev

将像素数组转换为Java中的Image时,数组索引超出范围

来自分类Dev

回复:迅速从UIImage / CGImage获取像素数据作为数组

来自分类Dev

从加载到numpy数组中的图像中按颜色计算像素数

来自分类Dev

将ffmpeg帧转换为C中的YUV像素数组

来自分类Dev

打开jpeg或png图像作为c或c ++中的像素数据

来自分类Dev

从OpenGL中的默认帧缓冲区读取像素数据:FBO与PBO的性能

来自分类Dev

在浏览器中显示RGB8像素数据

来自分类Dev

覆盖DICOM中的像素数据时应替换哪些DICOM UID?

来自分类Dev

在覆盖DICOM中的像素数据时,应替换UID以外的哪些DICOM标签?

来自分类Dev

如何在openCV中修改cv :: Mat的像素数据?

来自分类Dev

如何从整个图像的缓存像素数据中获取画布ImageData的矩形部分?

Related 相关文章

热门标签

归档