我有一个3维字节数组。将三维字节数组转换为单字节数组
三维数组表示一个JPEG图像。每个通道/阵列代表RGB光谱的一部分。
我对保留黑色像素不感兴趣。黑像素由该非典型布置表示:
myarray[0,0,0] =0;
myarray[0,0,1] =0;
myarray[0,0,2] =0;
所以,我通过这样做byte[] AFlatArray = new byte[width x height x 3]
,然后分配相应的坐标值平坦化该3D阵列出到一维数组。
但就像我说过的我不想黑色像素。所以这个数组只能包含带有x,y坐标的彩色像素。我想要的结果是从仅包含非黑色像素的i维字节数组重新表示图像。我怎么做?
它看起来像我必须存储黑色像素以及由于xy坐标系统。我已经尝试写入二进制文件,但该文件的大小大于jpeg文件,因为jpeg文件是压缩的。
我需要一个单字节数组,因为我有一个具有红色绿色和蓝色组件的图像。我想存储2张图片的区别。所以,这是一个3个暗淡的阵列。由于不是所有的像素都会有所不同,我只想存储差异。但是,即使平坦化尺寸仍然大于图像的字节大小(因为它是一个JPEG和压缩)。
我正在使用emgu图像框架。当你枚举一幅图像的数据时,它可以给你3个通道,每个通道用一个字节数组中的维度表示。我正在使用的3个频道是(R)ed,(G)reen和(B)lue。我可以在HSL或HSV(等)的色彩空间工作,然后我可以使用3个色调,饱和度和亮度通道。
为什么你需要一个单字节数组,出于好奇? :) – Ryan
@minitech我有一个图像,它有红色的绿色和蓝色的组件。我想存储2张图片的区别。所以,这是一个3个暗淡的阵列。由于不是所有的像素都会有所不同,我只想存储差异。但是,即使平坦化尺寸仍然大于图像的字节大小(因为它是一个JPEG和压缩)。所以,没有人回答解决了我的问题,但他们确实回答了这个问题 –
我不明白两张图片之间的区别是如何构成一个三维数组。你的意思是一维有3个部分(RGB)? – Ryan