python图像算法_python – 图像比较算法

一年前,一个

similar question被问到,并有许多反应,包括一个关于像素化的图像,我将建议作为至少一个资格预审步骤(因为它会很快排除非常不相似的图像)。

也有链接到更早的问题,有更多的参考和良好的答案。

这里是一个实现使用Scipy的一些想法,使用上面的三个图像(分别保存为im1.jpg,im2.jpg,im3.jpg)。最后的输出显示im1与自身比较,作为基线,然后每个图像与其他图像进行比较。

>>> import scipy as sp

>>> from scipy.misc import imread

>>> from scipy.signal.signaltools import correlate2d as c2d

>>>

>>> def get(i):

... # get JPG image as Scipy array, RGB (3 layer)

... data = imread('im%s.jpg' % i)

... # convert to grey-scale using W3C luminance calc

... data = sp.inner(data, [299, 587, 114]) / 1000.0

... # normalize per http://en.wikipedia.org/wiki/Cross-correlation

... return (data - data.mean()) / data.std()

...

>>> im1 = get(1)

>>> im2 = get(2)

>>> im3 = get(3)

>>> im1.shape

(105, 401)

>>> im2.shape

(109, 373)

>>> im3.shape

(121, 457)

>>> c11 = c2d(im1, im1, mode='same') # baseline

>>> c12 = c2d(im1, im2, mode='same')

>>> c13 = c2d(im1, im3, mode='same')

>>> c23 = c2d(im2, im3, mode='same')

>>> c11.max(), c12.max(), c13.max(), c23.max()

(42105.00000000259, 39898.103896795357, 16482.883608327804, 15873.465425120798)

所以注意im1与本身相比得分为42105,im2与im1相比并不遥远,但是im3与其他任何一个相比都得到了不到一半的价值。你必须尝试其他图像,看看这可能会执行,以及如何可能改善它。

运行时间长…在我的机器上几分钟。我会尝试一些预过滤,以避免浪费时间比较非常不相似的图像,也许与“比较jpg文件大小”手法提到在回应其他问题,或与像素化。事实上,你有不同大小的图像使事情复杂化,但你没有给出足够的信息,关于屠宰的程度可能期望,所以很难给出一个具体的答案,考虑到这一点。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值