Tag: 图像处理

谷歌应用引擎如何操纵图像数据? 你如何操纵像素数据?

我希望能够访问低级像素数据,以使用GAE完成信号处理算法(它消除了BufferedImages和Java.awt.image类的使用) 您可以通过以下方式访问图像数据: ImagesService imagesService = ImagesServiceFactory.getImagesService(); Image oldImage = ImagesServiceFactory.makeImageFromBlob(blobKey); byte[] imageData = oldImage.getImageData(); 所以这是问题所在: 彩色图像有4个波段(aRGB)但是当你得到图像数据时它是一个1D字节的数组。 1)GAE如何将图像数据存储到字节中? (我想它只是把2D数据放到一维数组中,它是灰度的吗?) 2)你如何操纵图像的各个色带和像素?

将彩色图像转换为灰度

我想将彩色图像转换为灰度。首先我获取彩色图像的数据并更改此数据但是当我想从这些数据创建一个gary图像时,我有一个像这样的错误… getData()maethod: public double[] getData(BufferedImage a){ double[] data2=new double[h*w]; int red=0,green=0,blue=0; int counter=0; for(int w1=0;w1<w;w1++){ for(int h1=0;h1> 16; green=(rgb)>>8; blue=(rgb); data2[counter]=(red+green+blue)/3; counter++; } } return data2; } createimage()方法: void createImage(){ double[] data1=getData(colorImage); BufferedImage image = new BufferedImage(w, h, BufferedImage.TYPE_BYTE_GRAY); WritableRaster raster = image.getRaster(); int counter = 0 ; for(int i = 0; i<h; i++){ for(int […]

java图像白色提取

如何将每个图像用白色提取到单独的部分,如下所示? 从上面的图片中,提取后会有九个单独的部分 我尝试过几种算法,比如fillgrid但不完全符合我的预期。 这样我就可以将每个部分存储到PostGIS数据库中作为多边形几何体 我可以使用什么算法? 或者java或postgis库中有一个函数?

互补色 – 图像分析

我只是处理一个图像,看着颜色和对比度等事情。 我的问题是如何分析图像中的互补色并尝试有效地做到这一点。 首先我得到了像素rgb。 然后我转换为HSV并增加色调并返回到rgb,从而获得补色。 然后,我正在看它的衣柜邻居,看看这些是否是互补色。 如果给出这些是像素,很少会发现中心像素是互补的 – 因此我觉得这不是很有效。 或者另一个想法……如果存在具有互补色的区域,则根据颜色区域分割图像并计算从一个区域到另一个区域的距离。 有关如何有效编码的任何想法和想法? 谢谢

有一种简单的方法可以减少IndexedColorModel中的颜色数量吗?

我有一个大的8位PNG图像。 我使用Java将图像切割成较小的32×32图像。 我使用Java的ImageIO将PNG加载到BufferedImage ,然后调用它的getSubimage(x, y, 32, 32) 。 然后我使用ImageIO将每个区块写为PNG。 问题是生成的图像与原始图像具有相同的IndexColorModel 。 例如,一个32×32磁贴只有8种颜色,但它包含一个颜色模型,其中包含原始图像中的所有100多种颜色。 在写出PNG之前,我想从32×32磁贴的IndexColorModel删除未使用的颜色。 没有任何意义,包括图像中未使用的颜色的颜色数据,我希望图像尽可能小。 是否有内置机制来执行此操作,或者有人指向我(简单)方式来修改/减少ColorModel ? 谢谢!

Java PNG到JPG Bug

我正在尝试按照本教程将PNG图像转换为JPEG图像。 但我遇到了一个问题。 生成的图像具有粉红色层。 有没有人有这个问题的解决方案? 或者我应该使用什么代码才能将图像转换为所需的格式? 提前致谢!

红色镶边交通标志的颜色阈值

我想检测所有红色镶边交通标志(三角形和圆形)。 该算法必须高效且稳健,才能在现实世界中工作,因此我决定使用HSV空间,因为它是光不变的。 我遇到了检测红色对象的问题 ,答案是使用HSV的这个值范围:代码是用C ++编写的: inRange(hsv, Scalar(0, 70, 50), Scalar(10, 255, 255), mask1); inRange(hsv, Scalar(170, 70, 50), Scalar(180, 255, 255), mask2); Mat1b mask = mask1 | mask2; 由于我使用Java的OpenCV,我尝试过,但我发现不可能进行按位OR操作。 所以我尝试手动实现它而不是使用OpenCV。 我也尝试了相同的红色值范围,遗憾的是结果很可怕: 这是我的代码 Mat hsv = new Mat(); Mat rgb = Highgui.imread(scene, Highgui.CV_LOAD_IMAGE_COLOR); Imgproc.cvtColor(rgb, hsv, Imgproc.COLOR_RGB2HSV); Mat thresh = new Mat(hsv.size(), CvType.CV_8UC1); for(int x=0;x<hsv.rows();x++){ for(int y=0;y=H && […]

在Java中获取TIFF图像的像素值

ImageIO包不适用于.tif图像,我无法从.tif文件创建BufferedImage(我更熟悉的类)。 如何在Java中轻松获取TIFF图像的像素值? 我怎么能快点做到? 我没有图像处理的经验,一些示例代码将不胜感激! 谢谢!

以编程方式使图像的背景透明或白色

如果正在创建一个应用程序,其中一个人想要使图像的“ 背景 ”透明或白色,有没有办法做到这一点? 例如 : 在图像中, http://upload.wikimedia.org/wikipedia/commons/b/b9/Bronze_Statuette_of_a_Veiled_and_Masked_Dancer_1.jpg ,我想以编程方式转换图像,这样只剩下雕像和背景(即其余部分)图像)全是白色或透明的。 此外,用户可能会指出应该“保留”的图像部分,其余部分应全部为白色或透明。 如何才能做到这一点? 此外,如果有一个合适的java库或一段代码,它会很有帮助。 问候

在java中将图像拼接在一起

我正在尝试使用java将一些图像拼接在一起。 我有一堆图像,我想拼接在一起,它们都是相同的尺寸所以它实际上只是一个问题,我想它们将它们排列在一起。 我有它的工作,但它很慢,可能非常耗费内存。 我想知道是否有更简单的方法: public static void main(String[] args) throws IOException { int dim = 256; BufferedImage merged = null; for(int y = 0; y<10;y++) { for(int x = 0; x<10;x++) { URL url = new URL(someURL); BufferedImage nextImage = ImageIO.read(url); if(merged==null) merged=nextImage; else { BufferedImage tempMerged; tempMerged = new BufferedImage(10*dim,10*dim,merged.getType()); //Write first image for(int […]