热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

【opencv学习笔记】027之直方图反向投影calcBackProject函数详解

一、前言在学习直方图反向投影之前,如果你对直方图的概念,直方图均衡化,直方图计算等直方图相关的概念比较模糊,建议先了解一下1
一、前言

        在学习直方图反向投影之前,如果你对直方图的概念,直方图均衡化,直方图计算等直方图相关的概念比较模糊,建议先了解一下

        1.直方图概念及直方图均衡化 https://blog.csdn.net/shuiyixin/article/details/80001756

        2.直方图计算 https://blog.csdn.net/shuiyixin/article/details/80032167

        3.直方图比较 https://blog.csdn.net/shuiyixin/article/details/80257822

如果你想了解更多有关于计算机视觉、OpenCV、机器学习、深度学习等相关技术的内容,想与更多大佬一起沟通,那就扫描下方二维码加入我们吧!

二、反向投影概念

        反向投影是一种记录给定图像中的像素点如何适应直方图模型像素分布的方式,简单来讲,反向投影就是首先计算某一特征的直方图模型,然后使用模型去寻找图像中存在的特征。反向投影在某一位置的值就是原图对应位置像素值在原图像中的总数目。

三、反向投影理解

        举个栗子,给大家介绍反向投影:

        想必大家都玩过一个游戏,(没玩过的可以体验一下),一个人蒙住眼睛,其余的人在指定区域内活动,蒙眼睛的人依靠声音等方式去寻找其余的人。设蒙眼睛的人为A,其余人中有个人是B。

        假如这个人只能通过声音去寻找,那这个人其实是通过“双耳效应”,简化一下,就是说当B发出声音的时候,A听到B的声音,根据自己感知到声音传到两个耳朵的不同,顺着声音的方向,做两条反向延长线,两条线交于一个点,这个点的位置,就是B所在的位置。

        同样原理的还有测量地震的设备,很多时候,测震源有两个设备,设备对地震源做反向投影,就会找到地震的中心。(如下图)

}/*—————————————本代码所需函数实现————————————— */
void Hist_And_BackProjection(int, void*) {//局部变量float range[] = { 0,180 };const float *histRanges = { range };int hist_h = 400;int hist_w = 400;int bin_w = hist_w / bins;Mat h_hist;Mat histImage(hist_w, hist_h, CV_8UC3, Scalar(0, 0, 0));//直方图计算及归一化处理calcHist(&hue, 1, 0, Mat(), h_hist, 1, &bins, &histRanges, true, false);normalize(h_hist, h_hist, 0, 255, NORM_MINMAX, -1, Mat());//直方图反向投影calcBackProject(&hue, 1, 0, h_hist, backProjectionImg, &histRanges, 1, true);//画直方图分部图for (int i = 0; i (i - 1)*(400 / 255)))),Point(i*bin_w, (hist_h - cvRound(h_hist.at(i)*(400 / 255)))),Scalar(0, 0, 255),-1);*/rectangle(histImage,Point((i - 1)*bin_w, (hist_h - cvRound(h_hist.at(i - 1)*(400 / 255)))),Point(i*bin_w, hist_h),Scalar(0, 0, 255),-1);}imshow(OUTPUT_TITLE, backProjectionImg);imshow(HIST_TITLE, histImage);}

八、结果展示


推荐阅读
  • 资源推荐 | TensorFlow官方中文教程助力英语非母语者学习
    来源:机器之心。本文详细介绍了TensorFlow官方提供的中文版教程和指南,帮助开发者更好地理解和应用这一强大的开源机器学习平台。 ... [详细]
  • 尽管深度学习带来了广泛的应用前景,其训练通常需要强大的计算资源。然而,并非所有开发者都能负担得起高性能服务器或专用硬件。本文探讨了如何在有限的硬件条件下(如ARM CPU)高效运行深度神经网络,特别是通过选择合适的工具和框架来加速模型推理。 ... [详细]
  • 本文深入探讨了基于Pairwise和Listwise方法的排序学习,结合PaddlePaddle平台提供的丰富运算组件,详细介绍了如何通过这些方法构建高效、精准的排序模型。文章不仅涵盖了基础理论,还提供了实际应用场景和技术实现细节。 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 深入解析:手把手教你构建决策树算法
    本文详细介绍了机器学习中广泛应用的决策树算法,通过天气数据集的实例演示了ID3和CART算法的手动推导过程。文章长度约2000字,建议阅读时间5分钟。 ... [详细]
  • 机器学习中的相似度度量与模型优化
    本文探讨了机器学习中常见的相似度度量方法,包括余弦相似度、欧氏距离和马氏距离,并详细介绍了如何通过选择合适的模型复杂度和正则化来提高模型的泛化能力。此外,文章还涵盖了模型评估的各种方法和指标,以及不同分类器的工作原理和应用场景。 ... [详细]
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • 探索如何使用公共数据集为您的编程项目提供动力。无论您是编程新手还是有经验的开发者,本文将为您提供实用建议和资源,帮助您启动并运行一个创新的数据驱动型项目。 ... [详细]
  • 机器学习核心概念与技术
    本文系统梳理了机器学习的关键知识点,涵盖模型评估、正则化、线性模型、支持向量机、决策树及集成学习等内容,并深入探讨了各算法的原理和应用场景。 ... [详细]
  • 你根本不会用百度
    本文转载自第2大脑,详情可以扫描下方二维码关注该公众号摘要:教你正确使用百度。想必你的朋友圈这两天应该被《搜索引擎百度已死》这篇文章刷屏了吧࿰ ... [详细]
  • 本文详细介绍如何使用 Python 集成微信支付的三种主要方式:Native 支付、APP 支付和 JSAPI 支付。每种方式适用于不同的应用场景,如 PC 网站、移动端应用和公众号内支付等。 ... [详细]
  • 本文旨在探讨如何利用决策树算法实现对男女性别的分类。通过引入信息熵和信息增益的概念,结合具体的数据集,详细介绍了决策树的构建过程,并展示了其在实际应用中的效果。 ... [详细]
  • 解决PyCharm中安装PyTorch深度学习d2l包的问题
    本文详细介绍了如何在PyCharm中成功安装用于PyTorch深度学习的d2l包,包括环境配置、安装步骤及常见问题的解决方案。 ... [详细]
author-avatar
johnylulu2502904467
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有