gpt4 book ai didi

java - 比较数据库中的图像

转载 作者:行者123 更新时间:2023-12-01 05:18:45 25 4
gpt4 key购买 nike

我从图像中获取 25 个样本,获取它们的平均 RGB 值并将它们保存在 5x5 颜色数组中。这些是我的“签名”。签名中的值如下所示:

Color signature[5][5];

-21233 -1 -323211 ... ...
-123 -12323 ...
...

我可以从签名的索引中获取红色、蓝色和绿色值。我使用这些值来比较两个图像的签名并获得“差异”值。

signature[1][1].getBlue() = 123, Color[1][1].getRed() = 200 ..

for (int x = 0; x < 5; x++) {
for (int y = 0;y < 5; y++) {
int r1 = signature[x][y].getRed();
int g1 = signature[x][y].getGreen();
int b1 = signature[x][y].getBlue();
int r2 = signature2[x][y].getRed();
int g2 = signature2[x][y].getGreen();
int b2 = signature2[x][y].getBlue();
double tempDiff = Math.sqrt((r1 - r2) * (r1 - r2)
+ (g1 - g2) * (g1 - g2)
+ (b1 - b2) * (b1 - b2));
difference += tempDiff;
}
}

我还获得了图像的第二个签名,显示了其边缘发现版本的签名。比较两个图像,将法线特征差与边缘特征差相乘,得到最终的差值。

比较两个图像时一切都很有效。但是,我有很多图像,所以我将签名保存在数据库中,如下所示:

Table images:
-COLUMN name- -COLUMN signature- -COLUMN edge signature-
myimg.jpg |-12312 -132 -2 ... (25 of them) |-123 -1 -1234 -6921 .. (25 of them)|

我只是将签名索引与它们之间的空格连接起来并保存为字符串。

这是我的问题:我需要找到一张图像的相似之处。如果我从数据库中选择所有图像,事情会变得非常慢并且内存不足。我可以从数据库中选择 1000 个图像,进行比较并获取下一个 1000 个图像,但这甚至更慢。

我需要一种方法来比较查询中的图像签名,我准备更改表的列,甚至准备尝试使用 100 列保存签名的所有 RGB 值的疯狂表。我需要减少或散列签名。您可以建议什么方法/方法、链接或库吗?任何帮助将不胜感激。

如果需要,我会在 NetBeans 上使用 Java,并与 MySQL 一起使用。

最佳答案

您可以使用 SQL 来做到这一点。

如果您想查找所有重复项,您可以使用类似的内容(替换正确的字段名称)

SELECT i.[name] FROM images i 
INNER JOIN
(SELECT signature, edge_signature
FROM images
GROUP BY signature, edge_signature
HAVING COUNT(*) > 1 ) dups
on i.signature = dups.signature and i.edge_signature = dups.edge_signature;

如果您想查找特定图像的重复项,请创建签名并将其放入此 SQL 中

SELECT i.[name]
FROM images
WHERE signature = '$yourCalculatedSignaturehere'
and edge_signature = '$yourCalculatedEdgeSignaturehere';

这两个查询都可能返回多行(如果没有重复项,则返回 0 行)。

您也许可以使用 signature、edge_signature、[name] 上的索引来加快这些查询的速度(此索引可能会使表使用的磁盘空间增加一倍,但它应该会显着提高查询的性能)。

关于java - 比较数据库中的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10785956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com