图像的结构如何?

时间:2009-11-05 15:20:17

标签: image image-processing image-manipulation structure

我正在考虑建立一个库来操纵图像(我将开发自己的图像类型),但首先我需要了解图像的结构

  • 如何安装?
  • 关于图层技术......
  • 哪里可以找到一些很好的资源来理解这些东西?

感谢。

7 个答案:

答案 0 :(得分:5)

这一切都取决于所讨论的图像格式。

但是,大多数图像格式包含以下内容:

  • 包含常规文件信息的标头(多长时间,格式,尺寸,颜色空间,压缩算法等)
  • 像素数据(可能被压缩,在这种情况下可能会应用其他一些结构)
  • 其他元数据(EXIF,...)

许多流行的图像格式(如JPEG或PNG)都有免费提供的文件格式规范。

如果您真的想处理更复杂的图像,包含图层等(可能是Photoshop或类似图像),那么事情会变得更加困难。它们还包含图层,因此多个像素数据块,可能是图层的元数据,在Photoshop的情况下甚至是矢量数据(用于图层蒙版和其他路径)等。

更重要的是,主要专有图像编辑软件使用的大多数主要文件格式往往没有完全指定,至少不公开。有资源,但期望它们最多不完整。

尽管如此,在没有太多先前的图像文件格式知识的情况下开始这样的项目可能不是一个可行的想法。

答案 1 :(得分:2)

每个需要了解数字图像基础知识的人的良好开端是Gonzalez和Woods,数字图像处理的经典着作的第2章。

一个简短的回答,粗略地说:用于内存操作,图像是2D数组。有很多变种,但2D阵列是经典的方式。

对于C,C ++和Python,请看一下OpenCV。对于Python,请参阅PIL。对于Java,请参阅JAI。最后,要了解“图像结构”的概述,请仔细查看IplImage structure in OpenCV documentation

答案 2 :(得分:1)

图片文件格式vary wildly。但是,根据您编码的语言/平台,您可能会使用一般化的方法处理图像并将其转换为您选择的格式。每个平台都有自己的构建和访问图像的方法,但是,如果没有声明您选择的编程平台,我几乎无法告诉您实质内容。

就个人而言,我更喜欢C#/ .NET。所以这里有一些关于该平台中图像处理的链接:

http://www.aspfree.com/c/a/C-Sharp/Basic-Image-Manipulation-using-GDI-and-C/ http://www.aspfree.com/c/a/Code-Examples/Handling-Animation-and-Bitmaps-Using-GDI-for-Image-Manipulation/

答案 3 :(得分:0)

每种图像格式都有不同的结构和压缩。

也许你应该更详细地解释你的目标。

答案 4 :(得分:0)

一个快速的亚马逊搜索产生了几本可能对这个主题非常有用的书籍。两者都基于openGL,这是最常见的图形库之一。第一部分是计算机图形学教科书的一般介绍,第二部分是openGL手册(俗称红皮书)。

Computer Graphics with OpenGL (3rd Edition)

OpenGL Programming Guide (The Red Book)

我个人可以证明这两本书的用处。

答案 5 :(得分:0)

如果您对各种图像文件格式的内部感兴趣,wotsit是一个非常好的开始。如果您更喜欢硬拷贝,请转到Encyclopedia of Graphics file formats。如果您想查看示例源代码,请查看imagemagick。它可以打开,转换为和保存最流行的用C ++编写的图像文件格式,并提供与大多数其他语言的接口。

答案 6 :(得分:0)

除非您做一些非常独特的事情,否则我建议您使用现有的文件格式。看看PNG或TIFF。它们非常灵活。

作为该领域的资深人士,我想说世界需要的最后一件事是新的图像文件格式。 ; - )