图像相似度的比较

 

  • 一、图像原图
  • 二、hash值
  • 三、模板匹配
  • 四、ssim值
  • 总结

 


一、图像原图

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

1. 图像hash值 

2. 图像模板匹配 

3. 图像ssim相似度比较

实际的图像如下所示:

图像相似度的比较_第1张图片


一、图像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张图片

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 ]
 

你可能感兴趣的:(传统处理方法,图像处理)