这些是我的形象的例子




我有 245 张类似的图像,我在预处理阶段获得了这些黑白图像,我想在 matlab 中将它们用于识别人(而不是验证)。我可以在将这些图像分成两组(一组用于训练,第二组用于测试)后对这些图像执行匹配算法,而无需执行诸如 PCA、ICA、......之类的特征提取算法吗?
如果可能的话,哪种匹配算法更适合这个目的,特别是我需要使用matlab?
有什么帮助吗?我真的需要你的意见和咨询。
提前致谢
这些是我的形象的例子




我有 245 张类似的图像,我在预处理阶段获得了这些黑白图像,我想在 matlab 中将它们用于识别人(而不是验证)。我可以在将这些图像分成两组(一组用于训练,第二组用于测试)后对这些图像执行匹配算法,而无需执行诸如 PCA、ICA、......之类的特征提取算法吗?
如果可能的话,哪种匹配算法更适合这个目的,特别是我需要使用matlab?
有什么帮助吗?我真的需要你的意见和咨询。
提前致谢
是的,有可能!
例如,您可以逐像素比较并应用 MSE(均方误差)。如果误差接近于零,那是同一张图片。
但是,您将只能识别那些图片完美匹配的图像。例如,您将无法考虑亮度变化、比例变化、微小变换、压缩损失(例如 JPEG)等。因此,虽然人类可能只是将它们视为相同的图像 - 它们并不是基于每个像素。根据您的应用程序需要多少严格或宽容,我们是否真的需要寻找足够智能以不受这些因素影响的高级算法。
编辑:
在您澄清之后,听起来您确实有更多匹配的特殊情况,而不是通用识别问题。
鉴于以下假设:
灰度(或彩色)图像首先通过一些阈值处理转换为二进制。
这些图像大多是线条(粗线或细线),关键区别在于这些边缘与其他边缘的距离。
边缘可以是任意形状和轮廓——没有几何假设。
考虑到边缘检测限制(在存在噪声的情况下)和阈值算法,边缘可能是不相交的
这是我建议申请的内容:
边缘跟随算法 - 在适用的情况下制作连续边缘。
参考#1。http://www.slideshare.net/kiara1011000/edge-following-algorithm-chiara-galdi
应用 Housdourf 距离和类似的形状/轮廓匹配
Ref #1。由 Normad
Ref #2 提供的 Hadorff 距离。CV Online:Hausdorff 距离
参考 #3。基于 Hausorff 的匹配
基本思想是,如果所有边缘或多或少位于相同的位置且长度相同,则图像是相同的。
鉴于大部分区域包含黑色并且不包含任何信息 - MSE 将是一个非常糟糕的想法。
我只是给你一些基本的方向来制定你的问题。随着您深入挖掘,您可以提出更具体的问题。我很想知道最终什么对你有用。
编辑 2:添加一个特定的解决方案
我能想到的一个简单的可能指标是:
说,Ref[i][j]是参考图像,Test[i][j]是测试图像。
pixel_similarity = 0;
For each pixel in Ref[i][j]
{
if ( Ref[i][j] == Edge_pixel )
(k,l) <- find_nearest_edge_pixel(Ref, Test, i, j, window_size)
pixel_similarity += weighted_similarity (i, j, k, l)
}
image_similarity_metric = error / (total_edge_pixels_in_ref);
请注意,此算法对于大量缩放和旋转将非常有限。这是第一步。如有任何拼写错误或不明确之处,请通知我!
观察:
如果您保留两个相同的图像(逐个像素) - 您会发现 (k,l) 将与 (i,j) 相同,并且加权误差应该 = 1。
通过将边缘像素数除以总边缘人口,您将获得完美匹配图像的相似度 = 1.0。
当边缘几乎相似,但稍微未对齐时,分数会逐渐下降。应该明智地选择该weighted_similarity函数以处理您认为合理对齐的边缘与应该丢弃的边缘。
另一个极端是,如果 Ref 中的边缘像素总数为零 - 无法将其与任何其他像素进行比较(因为我们正在考虑没有与匹配相关的信息的背景像素)。
试着解决这个问题,看看你会得到什么结果。
很高兴为您提供帮助!