图像相似度的比较

 

 


一、图像原图

给定ground truth和实际拍摄图像,检测饮料瓶的数量,即给定模板图像与实际获取图像之间的相似度。

1. 图像hash值 

2. 图像模板匹配 

3. 图像ssim相似度比较

实际的图像如下所示:


一、图像hash值

1. hash值 平均哈希,差异值哈希

    均值哈希利用的是图片的低频信息对两张图片进行比较,低频信息如图像亮度变化较小的区域,高频信息如亮度变化剧烈的区域边缘等。

A: resize为(8, 8),灰度级的转化

B:mean和diff的计算, 去0和1的比较值

C:  组合hash值,即64位的整数

D:比较有多少不一样的,即汉明距离

2. 均值aver_hash代码如下

#均值哈希算法
def aver_hash(img):
    img = cv2.resize(img,(8,8),interpolation=cv2.INTER_CUBIC)
    gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    sum = 0
    hash_str = ''
    #遍历累加求像素和
    for i in range(gray.shape[0]):
        for j in range(gray.shape[1]):
            sum = sum + gray[i,j]
    avg = sum / 64
    #灰度大于平均值为1相反为0生成图片的hash值
    for i in range(gray.shape[0]):
        for j in range(gray.shape[1]):
            if gray[i,j]  >avg:
                hash_str = hash_str +'1'
            else:
                hash_str = hash_str +'0'
    return hash_str

二、图像模板匹配

1. 模板匹配方法

    进行匹配窗口的滑动,寻找各个位置与模板的相似度。

匹配方法方法描述
平方差匹配法CV.TM_SQDIFF两图像像素差的平方
相关匹配法CV.TM_CCORR

两图像的乘法操作

2. 匹配代码如下

#模板匹配
def math_tmplate(gt_img, test_img):
    gt_gray = cv2.cvtColor(gt_img, cv2.COLOR_BGR2GRAY)
    test_gray = cv2.cvtColor(test_img, cv2.COLOR_BGR2GRAY)
    res = cv2.matchTemplate(test_gray, gt_gray, cv2.TM_SQDIFF_NORMED)     #TM_CCOEFF_NORMED
    return res[0][0]

 

三、图像ssim值

1. ssim的定义

从亮度,对比度和结构三个方面进行度量,高斯加权的均值、方差、协方差,计算对应block快的结构相似度。

2.  结构相似度code

#ssim
def math_sssim(gt_img, test_img):
    gt_gray = cv2.cvtColor(gt_img, cv2.COLOR_BGR2GRAY)
    test_gray = cv2.cvtColor(test_img, cv2.COLOR_BGR2GRAY)
    (score, diff) = compare_ssim(test_gray, gt_gray, full=True)
    return score 

 


总结

计算数量, 无论选择hsv 或者rgb的色域处理, 总会找到与底部导轨类似的饮料。

不同的相似度计算如下, 最终选择模板匹配的方法进行相似度的计算, 检测饮料的瓶盖数量。

the diff is:  [0.53125,                         0.234375,         0.90625,           1.0 ]
the aver is:  [0.59375,                       0.1875,             0.92187,          0.828125 ]
the tmp is:  [0.70079243,                  1.0,                  0.30529,           0.07561831 ]
the ssim is:  [0.1359543696,           -0.18731236,     0.75678,          0.91473222 ]
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值