我正在开发一个 iOS 应用程序,该应用程序必须从图库中找到类似的图像。我解决了问题并找到了使用以下任何一种方法来获取精确的重复图像- :
1.图像哈希
unsigned char result[CC_MD5_DIGEST_LENGTH];
CC_MD5([imageData bytes], [imageData length], result);
NSString *imageHash = [NSString stringWithFormat:
@"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
result[0], result[1], result[2], result[3],
result[4], result[5], result[6], result[7],
result[8], result[9], result[10], result[11],
result[12], result[13], result[14], result[15]
];
2. 图像数据
[ UIImagePNGRepresentation( uiImage1 ) isEqualToData:UIImagePNGRepresentation( uiImage2 ) ];
要求 :
两种方法都适用于精确的重复图像,但我们需要找到相似的图像,比如大约 90% 的相似度。
由于 HDR 和普通图像的哈希值和数据发生变化,因此为了将一键的普通图像和 HDR 都识别为重复图像,对于上述两种方法,它们被视为不同的图像。
查找 RGB 并比较图像:
我有一个想法,即找到图像的 RGB 值并进行比较,它们之间的相似度为 90%,但这种方法似乎更耗时,因为我们必须逐个像素地比较所有图像并比较画廊中的数千张图像一项乏味的任务。
那么对于支持照片框架的应用程序,什么应该是从图库中找到重复图像的有效方法,包括正常和 HDR 图像以及具有相似性的图像。