2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 图像相似度的比较

图像相似度的比较

时间:2023-01-22 06:24:17

相关推荐

图像相似度的比较

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

一、图像原图

给定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 = 0hash_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. 模板匹配方法

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

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_NORMEDreturn res[0][0]

三、图像ssim值

1. ssim的定义

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

2. 结构相似度code

#ssimdef 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 ]

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。