如何将2D数组转换为灰度png.现在我有这个:
BufferedImage theImage = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);
for(int y = 0; y<100; y++){
for(int x = 0; x<100; x++){
theImage.setRGB(x, y, image[y][x]);
}
}
File outputfile = new File("saved.bmp");
ImageIO.write(theImage, "png", outputfile);
Run Code Online (Sandbox Code Playgroud)
但是图像是蓝色的.我怎样才能使它成为灰度.
image [] []包含0到256之间的整数.
可能重复:
在HTML/CSS中将图像转换为灰度
我怎样才能把一个彩色图像转换为灰色或黑色/白色图像像这样的网站使用CSS?
可以单独使用CSS还是需要JavaScript(jQuery)?
谢谢.
编辑:
谢谢你的回答.我注意到诀窍是制作两种不同的彩色图像 - 一种是全彩色,另一种是黑白.我希望这可以在一张图片中完成.所以没有办法做到这一点,除了'技巧'?
我有一个代表我想要清理的深度信息的图像序列.有一些异常值(强度低于25的值,0-255范围),我希望用一个可接受的替代方案填充(局部特定区域的平均值可能是一个很好的猜测).
有人能看到一个简单的方法吗?我试图使用中值滤波器(滤波器大小为10)用NaN代替不需要的值,但它确实使情况恶化,相反通过用一般平均值代替它们来改善.

PS有人已经建议我使用快速小波重建,但我真的不知道从哪里开始......
我实现的解决方案(在阅读tmpearceinpaint_nans建议之前)是:
img2 = img;
img2(img < .005) = mean(img(:));
H = fspecial('disk',10);
img3 = imfilter(img2,H,'symmetric');
img4 = img;
img4(img < .3) = img3(img < .3);
filterSize = 10;
padopt = {'zeros','indexed','symmetric'};
IMG = medfilt2(img4, [1 1]*filterSize, padopt{p});
Run Code Online (Sandbox Code Playgroud)

我正在从相机中检索原始图像,图像的规格如下:
我将图像检索为字节数组,并具有2400(1/2*80*60)字节长的数组.下一步是将字节数组转换为位图.我已经用过了
BitmapFactory.decodeByteArray(bytes, 0, bytes.length)
Run Code Online (Sandbox Code Playgroud)
但是没有返回可显示的图像.我查看了这篇文章并将下面的代码复制到我的Android应用程序中,但是我得到了一个"不足以容纳像素的缓冲区"运行时错误.
byte [] Src; //Comes from somewhere...
byte [] Bits = new byte[Src.length*4]; //That's where the RGBA array goes.
int i;
for(i=0;i<Src.length;i++)
{
Bits[i*4] =
Bits[i*4+1] =
Bits[i*4+2] = ~Src[i]; //Invert the source bits
Bits[i*4+3] = -1;//0xff, that's the alpha.
}
//Now put these nice RGBA pixels into a Bitmap object
Bitmap bm = Bitmap.createBitmap(Width, Height, Bitmap.Config.ARGB_8888);
bm.copyPixelsFromBuffer(ByteBuffer.wrap(Bits));
Run Code Online (Sandbox Code Playgroud)
在帖子的底部,原始海报与我目前有相同的错误.但是,他的问题已通过上面粘贴的代码修复.有没有人对如何将原始图像或RGBA数组转换为位图有任何建议?
非常感谢!
更新:
我按照Geobits的建议,这是我的新代码
byte[] seperatedBytes = new byte[jpegBytes.length * 8]; …Run Code Online (Sandbox Code Playgroud) 我有一个灰度TIF文件.我需要将它转换为RGB /从中读取,以我可以使用它的方式.
img = Image.open(GIF_FILENAME)
rgbimg = img.convert('RGB')
for i in range(5):
print rgbimg.getpixel((i, 0))
Run Code Online (Sandbox Code Playgroud)
转换.("RGB")将自动生成所有内容(255,255,255),即使图片是一个非常黑暗的大多数黑色图片.
如果我只读取灰度数字,我会得到大约1400到1900的数字.
我还需要将图片的副本保存为RGB Jpeg.图片有问题:[这里]:http://imgur.com/kEwfFs3
我该怎么做呢?
我一直在尝试为 DICOM 图像创建图像查看器。我的程序几乎正确地读取所有 8 位彩色和灰度图像。但是,当我尝试使用图像的前 8 位打开 16 位图像时,某些部分丢失了(使用 16 位的像素将显示为黑色而不是白色)。我真的不知道如何使用窗口中心、窗口宽度、重新缩放斜率和截距。请帮助我给出将 16 位图像转换为 8 位图像的确切步骤。另外,我不需要查看使用任何压缩技术来存储像素的文件。提前致谢。
我最近在和keras玩得很开心,我想知道一个人如何解决这个问题。
我有100张图像的序列。它们是连续100天每天的雷达图图像。我想预测第二天的图像。
这些图像可以解释为nxm尺寸的矩阵(不是正方形)。
可以将其调整为lstm nn吗?您将如何解决这个问题?
感谢您分享想法!
我发现VGG16网络已在(彩色)imagenet数据库(如.npy)上进行了预训练。是否在可用的imagenet数据库的灰度版本上预先训练了VGG16网络?
(在灰色1通道输入上使用conv1.11层的3通道过滤器的常规“技巧”对我来说还不够。我正在研究网络性能的逐步提高,因此我需要了解如何当预训练的模型“看着”灰度输入时,转移学习就表现出来。
谢谢!
我想在Qt 5.12中将0到255之间的整数矩阵可视化为灰度图像。首先,我构建了一个示例256x256 uchar数组,每行的值在0到255之间。然后我尝试以QImage和format_grayscale作为格式显示图像。但是令人困惑的是,生成的图像在最后一行中包含受干扰的像素。
结果图像

我还创建了一个灰度彩色图,并尝试使用format_indexed8,但结果相同。这是我的代码。
uchar imageArray[256][256];
for (int i = 0; i < 256; i++)
{
for (int j = 0; j < 256; j++)
{
imageArray[i][j] = uchar(j);
}
}
QImage image(&imageArray[0][0],
256,
256,
QImage::Format_Grayscale8);
Run Code Online (Sandbox Code Playgroud)