这里有一些主题对如何找到类似的图片非常有帮助.
我想要做的是获取图片的指纹,并在数码相机拍摄的不同照片上找到相同的图片.SURF算法接缝是独立于缩放,角度和其他失真的最佳方式.
我正在使用带有SURF算法的OpenCV来提取样本图像上的特征.现在我想知道如何将所有这些特征数据(位置,拉普拉斯,大小,方向,粗麻布)转换为指纹或散列.
该指纹将存储在数据库中,并且搜索查询必须能够将该指纹与具有几乎相同特征的照片的指纹进行比较.
更新:
似乎没有办法将所有描述符向量转换为简单的哈希.那么将图像描述符存储到数据库中以便快速查询的最佳方法是什么?
词汇树是一种选择吗?
我会非常感谢任何帮助.
我需要从太空中探测太阳.
这些是输入图像的示例:

我在Morphologic过滤后得到了这样的结果(open两次操作)

这是此处理的算法代码:
// Color to Gray
cvCvtColor(image, gray, CV_RGB2GRAY);
// color threshold
cvThreshold(gray,gray,150,255,CV_THRESH_BINARY);
// Morphologic open for 2 times
cvMorphologyEx( gray, dst, NULL, CV_SHAPE_RECT, CV_MOP_OPEN, 2);
Run Code Online (Sandbox Code Playgroud)
对于这么简单的任务,处理不是太重了吗?如何找到太阳的中心?如果我找到白点,我会发现大地球的白点(第一个示例图像上的左上角)
请告诉我,我的进一步行动是为了探测太阳.
更新1:
尝试centroid按公式获取算法:{x,y} = {M10/M00, M01/M00}
CvMoments moments;
cvMoments(dst, &moments, 1);
double m00, m10, m01;
m00 = cvGetSpatialMoment(&moments, 0,0);
m10 = cvGetSpatialMoment(&moments, 1,0);
m01 = cvGetSpatialMoment(&moments, 0,1);
// calculating centroid
float centroid_x = m10/m00;
float centroid_y = m01/m00;
cvCircle( image,
cvPoint(cvRound(centroid_x), cvRound(centroid_y)),
50, CV_RGB(125,125,0), 4, 8,0); …Run Code Online (Sandbox Code Playgroud) 我有一个图像数据库.当我拍摄新照片时,我想将其与此数据库中的图像进行比较,并获得相似性得分(使用OpenCV).这样我想要检测,如果我有一个图像,这与新图片非常相似.
是否可以创建我的数据库图像的指纹/哈希并匹配新的数据库图像?
我正在搜索alogrithm代码段或技术演示,而不是商业解决方案.
最好,
斯特凡
有没有一种快速简便的方法来进行这种比较?
我发现很少有来自stackoverflow的图像比较问题,但没有一个真正证明了这个问题的答案.
我的文件系统中有图像文件,还有一个从URL中获取图像的脚本.我想检查url中的图像是否与磁盘上的图像相同.通常我会将磁盘和url中的图像加载到PIL对象并使用我发现的以下函数:
def equal(im1, im2):
return ImageChops.difference(im1, im2).getbbox() is None
Run Code Online (Sandbox Code Playgroud)
但是,如果使用PIL将图像保存到磁盘,即使将质量设置为100,它也会被压缩,但这不起作用im1.save(outfile,quality=100).
我的代码目前正在关注:http: //pastebin.com/295kDMsp 但图像总是最终重新保存.
python diff image-comparison image-processing python-imaging-library