`

图像深度的转化 16到8

 
阅读更多

对于小于16*16=256的图像是一定可以用图像深度8来表示,因为图像深度8可以表示256种不同点,16*16就是256个点,所有点不一样都可以表示。

 

例子中给出了转化的方法,同时考虑了透明像素点的问题。

例子中限定了传入的图像一定是16*16,保证可以转,实际上更一般的情况是少于256个情况,直接转多余的话,找相近的点,不过那样的话选取哪256RGB点就比较的要有技巧了。

 

例子:

public class ImageSize {
	
	public static ImageData image16or24or32_to8depth(ImageData orgData) {
		if(orgData.width != 16 || orgData.height != 16)
			throw new IllegalArgumentException("Want width and height is 16, but width is "+
					orgData.width + "and height is " + orgData.height + ".");
		
		printImageDataInfo(orgData);

		List<RGB> list = new ArrayList<RGB>();
		Map<Integer,Integer> map = new HashMap<Integer,Integer>();
		
		RGB rgb;
		for(int h=0; h<16; h++) {
			for(int w=0; w<16; w++) {
				rgb = orgData.palette.getRGB(orgData.getPixel(w, h));
				if(!list.contains(rgb)) {
					list.add(rgb);
					map.put(h*16+w, list.size()-1);
				} else {
					map.put(h*16+w, list.indexOf(rgb));
				}
			}
		}
		
		PaletteData paletteData = new PaletteData(list.toArray(new RGB[0]));
		ImageData newData = new ImageData(16,16,8,paletteData);
		for(int h=0; h<16; h++) {
			for(int w=0; w<16; w++) {
				newData.setPixel(w, h, map.get(h*16+w));
			}
		}
		newData.transparentPixel = list.indexOf(orgData.palette.getRGB(orgData.transparentPixel));
		
		printImageDataInfo(newData);
		return newData;
	}

	private static void printImageDataInfo(ImageData imageData) {
		System.out.println(imageData);
		System.out.printf("%-15s : %d %n","width",imageData.width);
		System.out.printf("%-15s : %d %n","height",imageData.height);
		System.out.printf("%-15s : %d %n","depth",imageData.depth);
		System.out.printf("%-15s : %d %n","bytesPerLine",imageData.bytesPerLine);
		System.out.printf("%-15s : %d %n","data.length",imageData.data.length);
	}

	public static void main(String[] args) {
		String saved = "icons/ZZ_save.gif";
		String source = "icons/ZZ_source.gif";

		ImageData[] imageData = ImageUtil.readImage(source);

		if(imageData.length > 0) {
			ImageData data = imageData[0];
			
			ImageUtil.saveImage(saved, new ImageData[]{image16or24or32_to8depth(data)}, SWT.IMAGE_PNG);
		}
	}
}

 

 

主要函数:image16or24or32_to8depth。

分享到:
评论

相关推荐

    利用c++将16位图像转换为8位图像,支持批量

    标题中的“利用C++将16位图像转换为8位图像,支持批量”是指通过C++编程语言实现图像处理功能,将原本16位深度的图像数据转化为8位深度的图像,同时支持对多张图像进行批量转换。这种转换在图像处理领域中常见,因为...

    深视3D点云数据转换成HALCON深度图像和灰度图像。

    "深视3D点云数据转换成HALCON深度图像和灰度图像"这一主题涉及到多个关键知识点,包括3D点云的理解、HALCON图像处理软件的应用、深度学习以及C#编程语言的使用。 首先,我们需要理解3D点云。3D点云是由激光雷达、...

    深度学习+图像风格转换

    这一过程涉及到深度学习模型的训练和优化,通常使用预训练的卷积神经网络(Convolutional Neural Networks, CNNs)作为基础架构。 在图像风格转换中,VGG系列网络是非常常用的,如VGG16、VGG11、VGG13和VGG19。这些...

    (序列图像)16位转8位(OpenCV)

    在图像处理领域,数据通常以不同的位深度存储,如8位、16位或更高。8位图像每个像素用一个字节(8位)表示,可显示256种颜色,而16位图像则提供了更大的色彩范围,能表示65,536种颜色。在某些情况下,我们需要将16位...

    kinectV2.0深度图像与彩色图像的坐标映射

    2. **坐标转换**:利用这些参数,我们可以将深度图像的像素坐标(u, v)通过逆投影转化为3D世界坐标(X, Y, Z)。这个过程需要考虑深度图像的深度值(Z)。 3. **投影到彩色图像**:将得到的3D世界坐标通过彩色相机...

    kinectV2获取深度图像和彩色图像

    将获取到的深度和彩色图像数据转化为可以显示的格式,例如Bitmap。可以使用OpenCV库进行处理,它提供了丰富的图像处理功能,包括图像显示、转换和分析。 6. **内存管理** 使用完帧数据后,记得释放相关资源,关闭...

    数字图像处理 将24位真彩色BMP图像转化成8位BMP灰度图像

    数字图像处理-24位真彩色BMP图像转化成8位BMP灰度图像 数字图像处理是计算机科学和信息技术中的一门重要学科,它涉及到图像处理、图像分析和图像识别等领域。其中,图像格式转换是数字图像处理中的一项重要技术,...

    基于双目立体系统的图像深度信息提取测试,matlab2021a测试。

    第一:利用最简单的平行双目立体系统获取场景的深度图像,再根据深度图像在多视图视频通信中具体的对于压缩效率的问题作了初步的深度图像处理,比如深度图像边缘的锐化和图像的平滑性。本文将着眼点放在如何制作深度...

    Python-这是SirajRaval在YouTube上如何将文本转换为图像介绍深度学习16的代码

    【标题】:“Python-这是SirajRaval在YouTube上如何将文本转换为图像介绍深度学习16的代码” 涉及的知识点主要集中在使用Python编程语言和深度学习技术将文本转换为图像。Siraj Raval是一位知名的在线教育者,他在...

    图片转化单色,位深度为1的BMP文件

    总的来说,将图片转化成单色,位深度为1的BMP文件,涉及到图像处理的基本原理和技巧,如颜色空间转换、阈值处理以及图像格式的理解。通过学习和实践,我们可以更好地理解和控制这个过程,以满足各种特定的打印需求。

    基于深度学习的权重自适应的图像去噪算法matlab实现版本

    在图像去噪领域,深度学习模型如卷积神经网络(CNN)能够学习到图像特征,并通过反卷积操作恢复清晰图像。 权重自适应的图像去噪算法则是在深度学习框架下,根据图像不同区域的噪声特性动态调整权重,以达到更精确...

    基于cximage实现的图片格式和位深度转换

    位深度转换通常涉及到像素数据的重新排列和颜色空间的转换。CXImage提供了调整位深度的API,例如`SetDepth()`函数。以下是一个示例,将24位图像转换为8位: ```cpp if (image.SetDepth(8)) { if (!image.Save(...

    论文研究-一种基于深度的图像雾效模拟算法 .pdf

    这种算法在具体实现时,首先将深度图转化为透射率图,这一步涉及到场景深度与雾透射率之间比例关系的直接转换。之后,引导滤波被用来优化这些透射率,从而减少过度平滑或者过度强调边缘等问题。最终,这些优化后的...

    可用于深度学习或者图像处理研究的农作物病虫害数据集

    该数据集包含了水稻、玉米、小麦、甜菜、苜蓿、葡萄、柑橘 、芒果共8种作物的75000 多幅图像。前五种作物为大田作物(FC, field crops),后三种为经济作物(EC,economic crops)。该数据集可以用于深度学习与农...

    基于图像深度学习的无线电信号识别.pdf

    本文提出的是一种基于图像深度学习的无线电信号识别技术,这一技术思路与传统方法相比,显著提升了识别的智能化水平和在复杂电磁环境下的识别能力。 首先,文章提出了一种创新的技术思路,即将无线电信号转化为二维...

    基于深度学习的图像处理技术 (2).pdf

    图像处理技术作为生产生活中常见的技术问题,是将各种途径获得的图像信息通过一定的技术手段转化为数学信息,并通过计算机的程序或软件将数学信息进行一定数据处理的计数过程。 深度学习在图像处理方面的应用主要...

    基于深度学习的图像隐写研究进展.docx

    基于深度学习的图像隐写技术引入了深度学习的概念,将传统的依赖手工、先验知识设计的隐写方法转化为依赖于数据驱动网络自主学习的隐写方法。这使得图像隐写的隐蔽性得到了提高,且可以生成适合隐写的载体图像。基于...

    数字图像处理实验一彩色图像转灰度图像C语言.zip

    - **颜色模式**:彩色图像通常采用RGB(红绿蓝)三原色模型,每种颜色有8位表示,组合起来形成24位色彩深度的图像。 - **灰度图像**:灰度图像仅使用一个通道表示亮度,没有颜色信息。每个像素用8位表示,范围从0...

    基于深度学习的小波转化的数字水印去除算法

    【标题】"基于深度学习的小波转化的数字水印去除算法"主要涉及到现代信息技术中的数字图像处理、水印技术和深度学习应用。数字水印是一种在数字媒体中嵌入隐藏信息的技术,通常用于版权保护和防伪。而深度学习是人工...

Global site tag (gtag.js) - Google Analytics