1

我正在做一个图像处理项目。我使用 php 作为 GUI 和 matlab 作为算法和 Mysql 作为我的数据库。我现在有 30,000 张图像存储在数据库中。我的 matlab 程序将为每个包含 300 个元素的图像生成 3 个数组。所以,我的问题是

  1. 是将 matlab 为所有图像生成的数组保存在单个 txt 文件中,还是为每个图像创建一个 txt 文件。哪种方法更容易检索数据并存储到数据库中?
  2. 从 txt 文件复制数组并将其保存到数据库中有多难?这有什么标准流程吗?
  3. 必须检索数组的元素以进行进一步计算。我们可以为此目的使用序列化和反序列化吗?
  4. 我必须一次比较 2 个数组元素,并从两个数组中获取具有最小值的第三个数组。例如 A=[1 2 3 4] 和 B=[6 1 4 2] 我必须比较这 2 个数组的每个元素并生成第三个数组 c=[1 1 3 2] 将数组的每个元素与另一个数组的对应元素,并将最小元素存储在第三个数组中。与 1 个固定阵列相比,该过程重复数千个阵列。有没有任何php函数可以做到这一点?

任何建议和帮助将不胜感激。谢谢你。

4

2 回答 2

1

在这种情况下,最好的解决方案是创建一个单独的元表来存储与您的图像相关的数据(数组)。

这是一个简单的 EER 示例:

图像数据库 EER

image_id(引用外键)、array和的组合index构成元表的主键。

我假设您可以安全地将数组的键表示为 0 索引,并且数组的所有值也是数字(这就是为什么所有字段都是 type INT,但如果不是,请相应地调整数据类型)。

  • image_id表示链接的 image_id。
  • array表示特定的数组(您说最多 3 个数组,因此该列中的值将是 的任何位置1-3)。
  • index是数组中的数字索引。
  • value是与索引配对的数组中的值。

元表中的示例数据可能如下所示:

image_id    |    array    |    index    |    value
------------------------------------------------------
256         |    1        |    0        |    5
256         |    1        |    1        |    9
256         |    1        |    2        |    4
256         |    1        |    3        |    23
256         |    1        |    4        |    1
256         |    2        |    0        |    9
256         |    2        |    1        |    15
256         |    2        |    2        |    8
256         |    2        |    3        |    19
256         |    2        |    4        |    11

在上面的示例数据中,我们有两个数组(每个数组由12array列中表示),每个数组有 5 个元素(键表示在index列中,值表示在value列中。

您可以存储任意数量的数组,也可以存储任意数量的索引。

您还可以在 MySQL 中使用GROUP BY. 以下是如何在 image_id 256 的所有数组中找到每个键的最小值(假设有 3 个数组):

SELECT   index, MIN(value) AS minvalue
FROM     image_meta
WHERE    image_id = 256
GROUP BY index

image_id由于在 ( , array, )上设置了复合索引index,因此这应该非常快。

这种设计还允许您在每个图像中拥有可变数量的索引和数组。

于 2013-04-02T03:24:58.873 回答
-1

阅读您的问题,不管我的评论如何,关系数据库对您来说会更好,如果性能不是一个大问题,那么 SQL 将是最好的解决您问题的语言,而不是 PHP 级别的语言。
是的,PHP 也有解决这些问题的简单方法,尽管不像 SQL 那样简单。

于 2013-04-02T02:36:58.953 回答