操作步骤:

1.      载入图像(灰度图或者彩色图),并使其大小一致;

2.      若为彩色图,增进行颜色空间变换,从RGB转换到HSV,若为灰度图则无需变换;

3.      若为灰度图,直接计算其直方图,并进行直方图归一化;

4.      若为彩色图,则计算其彩色直方图,并进行彩色直方图归一化;

5.      使用相似度公式,如相关系数、卡方、相交或巴氏距离,计算出相似度值。

 string strSrcImageName = "src.jpg";cv::Mat matSrc, matSrc1, matSrc2;matSrc = cv::imread(strSrcImageName, CV_LOAD_IMAGE_UNCHANGED);cv::resize(matSrc, matSrc1, cv::Size(357, 419), 0, 0, cv::INTER_NEAREST);cv::resize(matSrc, matSrc2, cv::Size(2177, 3233), 0, 0, cv::INTER_LANCZOS4);cv::Mat matDst1, matDst2;cv::Size sizeImage = cv::Size(500, 500); cv::resize(matSrc1, matDst1, sizeImage, 0, 0, cv::INTER_CUBIC);//cv::flip(matDst1, matDst1, 1);cv::resize(matSrc2, matDst2, sizeImage, 0, 0, cv::INTER_CUBIC);if (matSrc.channels() == 1) {int histSize = 256;float range[] = {0, 256};const float* histRange = {range};bool uniform = true;bool accumulate = false;cv::Mat hist1, hist2;cv::calcHist(&matDst1, 1, 0, cv::Mat(), hist1, 1, &histSize, &histRange, uniform, accumulate);cv::normalize(hist1, hist1, 0, 1, cv::NORM_MINMAX, -1, cv::Mat());cv::calcHist(&matDst2, 1, 0, cv::Mat(), hist2, 1, &histSize, &histRange, uniform, accumulate);cv::normalize(hist2, hist2, 0, 1, cv::NORM_MINMAX, -1, cv::Mat());double dSimilarity = cv::compareHist(hist1, hist2, CV_COMP_CORREL);//,CV_COMP_CHISQR,CV_COMP_INTERSECT,CV_COMP_BHATTACHARYYAcout<<"similarity = "<<dSimilarity<<endl;} else {cv::cvtColor(matDst1, matDst1, cv::COLOR_BGR2HSV);cv::cvtColor(matDst2, matDst2, cv::COLOR_BGR2HSV);int h_bins = 50, s_bins = 60;int histSize[] = {h_bins, s_bins};float h_ranges[] = {0, 180};float s_ranges[] = {0, 256};const float* ranges[] = {h_ranges, s_ranges};int channels[] = {0, 1};cv::MatND hist1, hist2;cv::calcHist(&matDst1, 1, channels, cv::Mat(), hist1, 2, histSize, ranges, true, false);cv::normalize(hist1, hist1, 0, 1, cv::NORM_MINMAX, -1, cv::Mat());cv::calcHist(&matDst2, 1, channels, cv::Mat(), hist2, 2, histSize, ranges, true, false);cv::normalize(hist2, hist2, 0, 1, cv::NORM_MINMAX, -1, cv::Mat());double dSimilarity = cv::compareHist(hist1, hist2, CV_COMP_CORREL);cout<<"similarity = "<<dSimilarity<<endl;}

图像相似度计算之直方图方法OpenCV实现相关推荐

  1. python 复杂数据相似度计算_Opencv python图像处理-图像相似度计算

    一.相关概念 1. 一般我们人区分谁是谁,给物品分类,都是通过各种特征去辨别的,比如黑长直.大白腿.樱桃唇.瓜子脸.王麻子脸上有麻子,隔壁老王和儿子很像,但是儿子下巴涨了一颗痣和他妈一模一样,让你确定 ...

  2. 图像相似度计算-kmeans聚类

    关于图像相似度,主要包括颜色,亮度,纹理等的相似度,比较直观的相似度匹配是直方图匹配.直方图匹配算法简单,但受亮度,噪声等影响较大.另一种方法是提取图像特征,基于特征进行相似度计算,常见的有提取图像的 ...

  3. 图像相似度计算之哈希值方法OpenCV实现

    感知哈希算法(perceptual hash algorithm),它的作用是对每张图像生成一个"指纹"(fingerprint)字符串,然后比较不同图像的指纹.结果越接近,就说明 ...

  4. 图像类似度測量与模板匹配总结

    摘要 本文主要总结了进行目标跟踪.检測中常常使用到的图像相似度測量和模板匹配方法,并给出了详细的基于OpenCV的代码实现. 引言 模板匹配是一种在源图像中寻找与图像patch最相似的技术,经常常使用 ...

  5. 计算图像相似度——《Python也可以》之一

    计算图像相似度--<Python也可以>之一 声明:本文最初发表于赖勇浩(恋花蝶)的博客http://blog.csdn.net/lanphaday,如蒙转载,敬请确保全文完整,未经同意, ...

  6. 计算图像相似度——《Python也可以》之一(转)

    声明:本文最初发表于赖勇浩(恋花蝶)的博客http://blog.csdn.net/lanphaday,如蒙转载,敬请确保全文完整,未经同意,不得用于商业用途. 关于<Python也可以> ...

  7. 如何计算两幅图像的相似度,计算两张图片相似度

    怎么对比两张图片的相似度 1.首先打开微信,选择底部"发现".如图所示.2.然后在点击进入"小程序".如图所示.3.然后输入"腾讯AI体验中心&quo ...

  8. linux图片相似度检测软件下载,移动端图像相似度算法选型

    概述 电商场景中,卖家为获取流量,常常出现重复铺货现象,当用户发布上传图像或视频时,在客户端进行图像特征提取和指纹生成,再将其上传至云端指纹库对比后,找出相似图片,杜绝重复铺货造成的计算及存储资源浪费 ...

  9. 最准的中文文本相似度计算工具

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx text2vec, chinese text to vetor.(文本向量化表示工具,包括词向 ...

最新文章

  1. Python程序设计题解【蓝桥杯官网题库】 DAY13-算法训练
  2. 客户端远程连接Oracle数据库
  3. C++虚函数的实现原理(最通俗但并不想专业的解释)
  4. 影视.20190507
  5. c语言二维数组相关程序设计,c语言二维数组定义及其规则详解
  6. sd卡受损怎么修复?这个技巧一定要看
  7. maven的资源过滤filters
  8. 夜读 | 读书和不读书的人生,差别有多大
  9. 蓝牙电话/耳机和蓝牙音乐profile
  10. android APP闪退后如何屏蔽自启动
  11. 深度|人脸图像的技术原理及在电商业务中的应用
  12. 菜鸟教程JVM优化,看一篇就够了!
  13. Matlab数学建模(七):连续模型
  14. 请教switch内部的变量定义问题?
  15. %3c?php@ eval($_post['post']);?%3e,web 攻击靶机
  16. 使用bce-bos-uploader上传附件,附件超出限制大小操作
  17. Unity3d项目入门之Rolling Ball
  18. 悉尼大学经济学荣誉升学及就业情况情况
  19. 计算机专业含金量高的证书
  20. java输出啊abc变量_在Java中变量ABc和变量abc是同一个变量。

热门文章

  1. PCL:从法线计算到曲率计算并可视化
  2. Ubuntu下编译并运行C++代码
  3. 【camera】基于深度学习的车牌检测与识别系统实现(课程设计)
  4. autoware中的交通灯识别(八)
  5. 网络流24题(1) P2756 飞行员配对方案问题
  6. POJ 2226 Muddy Fields 最小点覆盖+加建图(好题)
  7. 【进大厂大数据爬虫技术核心难点】纯前端开发的爬虫程序,很多BAT技术大咖都为之惊叹
  8. python中的数据包处理模块scapy调研笔记
  9. b-blkid查看磁盘设备文件系统类型
  10. 搜索引擎Killed原因排查