我与分析图片的科学家一起工作。这些图片的颜色数量有限,其分析的一个主要组成部分是了解特定像素在每张图像中的分布情况。所以基本上我需要保存以进行全面分析的是每个像素的位置和颜色。我需要处理的图像与这些类似:
请注意,形状通常不是正方形或矩形,而是可以是任何形状。然而,情况总是如此:
- 有一种背景颜色将占据图像的 60-90%
- 只有 6 种不同的颜色在使用
- 图片大小从 100x100 像素到 1500x1000 像素不等
我们将处理数十万张图像。所以,如果我想存储每个像素的颜色(大图像有 150 万像素),这将很快变得很大。我以前没有处理过这种大小的数据库,也没有处理过存储图像中的像素数据,所以我想知道您是否可以就以下方面提出任何建议:
- 数据库建议(支持 PostgreSQL,但可以考虑任何开源解决方案)
- 存储数据而不会变得如此庞大的技巧
我在想的一件事是存储每个图像的主要背景颜色,这样我只需要存储那些不是背景颜色的像素。这会有所帮助,但我想知道是否还有更多可以做的......
关系数据库不是特别适合存储您会说“具有非常多变的结构”的信息。
一个完全规范化的结构可能会用两个表来表示你的图像:
pictures (picture_id,background_color)
non_background_pixels_of_pictures (picture_id, x, y, color)
。但这可能会非常耗费空间并且不利于图像处理。这完全取决于您将执行哪种“查询”,以及您将使用哪些工具。
备选方案(基于 PostgreSQL):
bytea
例如使用 PostgreSQL 中的类型;或Large Objects Facility)。例如,对于某些版本的 PostgreSQL,您可以使用:
一个。
PostPic
:b. PostgreSQL-IE
注意:这似乎是一篇博士论文或其他一些研究计划……从 2006 年开始。另请检查他们的下载页面。
C。pg_image,JPEG 和 PNG 图像的位图图像数据类型。
注意:看起来它没有被维护。
其他参考:
bytea
vslarge objects
方法。