【发布时间】:2015-06-04 19:56:42
【问题描述】:
计算机如何将彩色或黑白图像转换为二进制? 相反,如何将二进制数据转换为图像?我的意思是问它实际上是如何处理图像数据的?
【问题讨论】:
标签: image image-processing jpeg
计算机如何将彩色或黑白图像转换为二进制? 相反,如何将二进制数据转换为图像?我的意思是问它实际上是如何处理图像数据的?
【问题讨论】:
标签: image image-processing jpeg
您的问题涉及许多变量。位深、色彩空间、压缩和存储格式。
但基本的想法有点像这样。
图像由像素组成。 100x100 大小的图像有 10,000 个像素。原始数据需要表示每个像素的颜色值。这就是位深度发挥作用的地方。如果每个像素只有 1 位,则只能表示两种颜色 - 例如,可能是黑色和白色。这不会产生特别有趣的图像。您可以通过使用点画来欺骗眼睛看到阴影。早期的计算机使用 4 位颜色,最多可提供 16 种颜色,这是一个开始,但事实证明 8 位颜色更有趣,允许 256 种颜色。随着计算机硬件的改进,每个像素的位数增加 - 16 位(65,536 色),然后最终达到 24 位(1600 万色)。
接下来是色彩空间。这描述了颜色信息如何存储在这些位中。例如 - 许多系统使用 32 位不仅存储颜色的红色、绿色和蓝色分量,而且还存储 alpha 级别(透明度)。一个基本示例是 ARGB 颜色空间/模型 - 前 8 位是 alpha,然后是红色、绿色和蓝色(每个 8 位)。
获得这些数据后,您需要选择存储方式。为了不丢失任何数据,您可以将其存储为最原始的格式 - 即:每一位。然而,这通常会产生大文件。例如:在 32 位下,100x100 像素的图像将占用 40K - 还不错……但是单帧高清素材呢? 1920x1080 像素 x 32 位?略低于 8MB。在那个尺寸下,1 秒的镜头将占用大约 200MB - 整部电影超过 1TB。这就是压缩的用武之地。
压缩是一个很大的话题——但让我们看一个非常简单的例子。如果我们尝试减少必须存储的位数怎么办?我们可以将许多非常相似的颜色转换为相同的颜色——这是过去在网络上经常做的事情。人们以 8 位 GIF 格式存储图像。随着位深度的降低,它们占用的空间要少得多,但根据您的图像的复杂程度,它通常会导致不太理想的视觉效果,渐变最终会出现条纹 - 或者照片看起来会像素化。
希望这能让您对图像的存储方式有所了解。结帐维基百科 - 关于我在这里触及的所有主题的更多深入信息。这是一个很好的起点:http://en.wikipedia.org/wiki/Color_depth
【讨论】: