19-直方图计算及应用(EmguCV学习)

贝叶斯统计 韦来生 课后题答案 第二章 第二章 先验分布的选取 1.某居住地区明天室外的最高温度θ如下表所示: 温度/℃ 25~26 26~27 27~28 28~29 29~30 30~31 主观概率 0.10 0.15 0.25 0.30 0.15 0.05 用直方图方法求你对θ的主观先验密度. 3.用通过分位数确定先验分布的方法求习题1中的先验密度,并考虑: (1)确定你对θ的先验密度的1/4和1/2分位数; (2)找出配合这些分位数值的正态密度; (3)你主观地决定θ的先验密度的0.8和0.9的分位数(不要用(2)中所得 的正态密度).这 阅读详情

文章目录

注意

1、直方图: 对数据进行统计的一种方法,可以直观的观察到图像数值的分布情况;直方图可分为:灰度直方图,RGB直方图,HSV直方图等等;
2、直方图的3个特点: dims(维度)、bins(组距个数)、range(直方图取值范围);
3、calcHist() : 计算直方图
images : VectorOfMat 类型;
在这里插入图片描述

4、直方图均衡化:EqualizeHist() : 增强图像对比度的一种方法;
src : 8位单通道图像; dst : 均衡化后图像,与src相同尺寸和类型;
在这里插入图片描述
在这里插入图片描述
5、直方图对比: CompareHist() : 用来比较两幅图像之间的相似度;计算结果通过函数返回值返回;
在这里插入图片描述
在这里插入图片描述

6、反向投影: EmguCV中使用CvInvoke.CalcBackProjection() 计算反向投影,使用该函数首先需要计算模板图像的直方图(calcHist),然后将直方图归一化到0-255之间,便于显示,然后计算反向投影可之间调用Imshow()直接显示。手的反向投影一般使用HS直方图来投影
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Emgu.CV;
using Emgu.Util;
using Emgu.CV.Structure;
using Emgu.CV.CvEnum;
using Emgu.CV.Util;
using System.Drawing;

namespace lesson19
{
    class Program
    {
        static void Main(string[] args)
        {
            ///计算直方图
            //Mat srcImg = CvInvoke.Imread("1.jpg");
            //CvInvoke.Imshow("input", srcImg);
            //Mat grayImg = new Mat();
            //CvInvoke.CvtColor(srcImg, grayImg, ColorConversion.Bgr2Gray);
            //Mat dHist = new Mat();
            //int[] channels = new int[] { 0 };  //初始化数组
            //float[] ranges = new float[] { 0, 255 };
            //int[] histSize = new int[] { 256 };
            //VectorOfMat vMatImgs = new VectorOfMat();
            //vMatImgs.Push(grayImg);
            //CvInvoke.CalcHist(vMatImgs, channels, new Mat(), dHist, histSize, ranges, false);
            //CvInvoke.WaitKey(0);

            ///直方图均衡化
            ///彩色图像三通道分离,分别对每个通道进行直方图均衡化,再通道合并
            //Mat srcImg = CvInvoke.Imread("06.jpg", ImreadModes.Grayscale);
            //CvInvoke.Imshow("input", srcImg);
            //Mat dstImg = new Mat();

            //CvInvoke.EqualizeHist(srcImg, dstImg);   //只能处理单通道图像;
            //CvInvoke.Imshow("result", dstImg);
            //CvInvoke.WaitKey(0);

            ///直方图对比:  比较两幅图像直方图相似度,进而判断图像相似度
            //Mat src1 = CvInvoke.Imread("05.jpg");
            //Mat src2 = CvInvoke.Imread("06.jpg");
            //CvInvoke.Imshow("input1", src1);
            //CvInvoke.Imshow("input2", src2);
            //Mat grayImg1 = new Mat();
            //Mat grayImg2 = new Mat();
            //CvInvoke.CvtColor(src1, grayImg1, ColorConversion.Bgr2Gray);
            //CvInvoke.CvtColor(src2, grayImg2, ColorConversion.Bgr2Gray);

            //int[] channels_1 = new int[] { 0 };
            //int[] histSize_1 = new int[] { 256 };       //bins(柱子个数)
            //float[] range_1 = new float[] { 0, 256 };   //每一维数值的取值范围
            //Mat dHist_1 = new Mat();
            //Mat dHist_2 = new Mat();
            //VectorOfMat vMatImg1 = new VectorOfMat();
            //VectorOfMat vMatImg2 = new VectorOfMat();
            //vMatImg1.Push(grayImg1);
            //vMatImg2.Push(grayImg2);
            //CvInvoke.CalcHist(vMatImg1, channels_1, new Mat(), dHist_1, histSize_1, range_1, false);
            //CvInvoke.CalcHist(vMatImg2, channels_1, new Mat(), dHist_2, histSize_1, range_1, false);

            //double matchValue0 = CvInvoke.CompareHist(dHist_1, dHist_2, HistogramCompMethod.Correl);      //相关性测量
            //double matchValue1 = CvInvoke.CompareHist(dHist_1, dHist_2, HistogramCompMethod.Chisqr);      //卡方测量
            //double matchValue2 = CvInvoke.CompareHist(dHist_1, dHist_2, HistogramCompMethod.Intersect);   //直方图相交法
            //double matchValue3 = CvInvoke.CompareHist(dHist_1, dHist_2, HistogramCompMethod.Bhattacharyya);//Bhattacharyya测量

            //Console.WriteLine(" match0 = {0}\n match1 = {1}\n match2 = {2}\n match3 = {3}\n",
            //                    matchValue0, matchValue1, matchValue2, matchValue3);
            //CvInvoke.WaitKey(0);

            ///直方图反向投影
            Mat src = CvInvoke.Imread("1.jpg");
            CvInvoke.Imshow("src", src);
            Mat hsvImg = new Mat();
            CvInvoke.CvtColor(src, hsvImg, ColorConversion.Bgr2Hsv);
            Mat dHist = new Mat();
            VectorOfMat vMatImg = new VectorOfMat();
            vMatImg.Push(hsvImg);
            int[] channels = new int[] { 0 };
            int[] histSize = new int[] { 256 };
            float[] range = new float[] { 0, 256 };
            CvInvoke.CalcHist(vMatImg, channels, new Mat(), dHist, histSize, range, false);//计算直方图
            CvInvoke.Normalize(dHist, dHist, 0, 255, NormType.MinMax);      //将直方图归一化到0-255之间
            Mat backProject = new Mat();
            CvInvoke.CalcBackProject(vMatImg, channels, dHist, backProject, range);
            CvInvoke.Imshow("backProject", backProject);
            CvInvoke.WaitKey(0);
        }
    }
}

效果

1、直方图均衡化
在这里插入图片描述
2、直方图比较:
在这里插入图片描述
3、手掌反向投影:
在这里插入图片描述

EmguCV学习(三) 记录EmguCv学习时的点点滴滴吧~ 可视化界面用winform~ 阅读详情

相关推荐

EmguCV学习(二)

记录EmguCv学习时的点点滴滴吧~ 可视化界面用winform~

工科迷途小书童的博客 6090

【Emgu CV教程】8.4、直方图对比,比较相似度

Emgu CV教程、直方图对比,比较相似度

活宝的博客 1585

OpenCV中的compareHist函数示例与编程

在这个示例中,我们使用的是HISTCMP_CORREL方法,它计算两个直方图之间的相关性。compareHist函数返回一个浮点数,表示两个直方图的相似性,值越接近1表示相似性越高。通过这个示例,您可以了解如何使用OpenCV中的compareHist函数来比较两个直方图的相似性。根据您的需求,您可以选择不同的比较方法来评估直方图之间的相似性。希望这篇文章对您有所帮助!在本文中,我们将介绍OpenCV库中的compareHist函数,并提供一个示例代码,以帮助您理解如何使用该函数进行直方图比较。

DevPulse的博客 315

EMGU.CV入门(十六、图像直方图)

一、图像直方图 1.1 计算直方图 // // 摘要: // Calculates a histogram of a set of arrays. // // 参数: // images: // Source arrays. They all should have the same depth, CV_8U or CV_32F , and the //

LyRics1996的博客 2255

C#和EmguCV打造的虹膜识别应用程序

虹膜识别技术是一种非接触式、高精度的生物识别方法。它通过分析人眼虹膜的模式来识别个人身份。虹膜识别系统因其独特性和难以复制的特性,广泛应用于安全验证和身份认证领域。生物识别技术是通过计算机与光学、声学、生物传感器等高科技手段获取人体的生理或行为特征,并对获取的信息进行处理和分析,进而识别个人身份的一门技术。目前,常用的生物识别技术包括指纹识别、面部识别、虹膜识别、声纹识别和掌纹识别等。生物识别技术的特点和优势包括:唯一性:每个个体的生物特征都是独一无二的。不可复制性。

weixin_42581003的博客 1120

C#使用EmguCV图像处理基础教程

本文还有配套的精品资源,点击获取 简介:本文介绍了如何在C#环境中利用EmguCV库进行图像处理。首先,详细说明了库文件的添加引用方法,然后通过示例代码讲解了如何读取和显示图像,进行图像灰度化转换,以及使用Canny算法进行图像边缘提取。EmguCV作为一个强大的计算机视觉工具,它不仅限于这些基础操作,还支持特征匹配、物体检测、图像分割等多种高级功能。 1. Em...

weixin_35045970的博客 2514

使用emguCV/C# opencv绘制自定义直方图

前言 自定义直方图绘制方法 求直方图的均值 实验效果图前言新手不要着急,认真学习一天是可以搞定直方图概念及内容的。 本文参考网页: http://www.dotblogs.com.tw/v6610688/archive/2014/02/06/emgucv_draw_histogram_color_histogram.aspx现在网上可以查到的都是opencv及emguCV2.4版本的直方图程序,

xuehuic的成长 5920

HSVHistogram(c# 调用openCV画直方图)

在c#中调用openCV画直方图程序编码,是EMGU CV中的调用。用于图像增强。

【Emgu CV教程】8.1、计算直方图

Emgu CV教程、计算直方图、CalcHist()函数

活宝的博客 1619

别再只看图了!代谢组学OPLS-DA分析,R2Y和Q2Y到底怎么看才不踩坑?

本文深入解析代谢组学OPLS-DA分析中的关键指标R2Y和Q2Y,揭示如何避免过拟合陷阱。通过详细解读模型解释能力(R2Y)和预测能力(Q2Y),结合置换检验方法,提供完整的模型评估流程与实战建议,帮助研究者获得可靠的分析结果。

weixin_42638178的博客 195

AS7262六通道可见光传感器:从光谱原理到物联网色彩检测实战

光谱检测是嵌入式感知领域的关键技术,其核心原理是通过特定波长的滤光片分离光线并转换为电信号,从而实现对环境光或物体反射光的成分分析。这项技术的价值在于将复杂的光学分析简化为可编程读取的数字信号,极大降低了色彩检测在物联网和智能设备中的应用门槛。在智能农业、工业分拣、环境监测等场景中,精确的光谱数据能够驱动自动化决策,例如评估植物光照条件或识别物料颜色。本文以Adafruit AS7262传感器为例,深入解析其基于硅干涉滤光片的六通道设计,并通过Arduino与Python实战,演示如何快速构建从数据采集到可

weixin_28738173的博客 595

[EmguCV|C#]使用EmguCV的DenseHistogram類別計算與紀錄圖像直方圖-直方圖(Histogram)系列(2)

http://www.dotblogs.com.tw/v6610688/archive/2013/12/21/emgucv_calculate_histogram_by_densehistogram.aspx 前言 在前篇,提到了我們在做影像處理時會需要擁有影像的直方圖色彩分布資料,來做一些運算,例如:反投影來比對兩張圖象的色彩分布相似度,並且過濾掉不太可能相似的圖像等 在這篇,

xgwdy06的专栏 2411

Libero SoC v2021.1离线安装与IP核配置全攻略

本文详细介绍了Libero SoC v2021.1在离线环境下的完整安装与配置流程。核心内容包括如何选择正确的离线安装包、获取并配置许可证、安装与挂载MegaVault IP库,以及将ModelSim仿真器切换至免费SE模式的关键步骤。文章旨在帮助内网开发者避开常见陷阱,顺利完成FPGA开发环境的搭建。

weixin_29279101的博客 406

EmguCV学习笔记 C# 第1章 EmguCV

EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它是一个开源、免费的计算机视觉库。EmguCV提供了C#和VB.NET等语言的接口,方便.Net开发者使用,它向C#和VB.NET开发者提供了OpenCV库的大部分功能,包括图像和视频处理、特征提取、目标检测、机器学习等。而且EmguCV提供了简单易用的API接口,可以快速上手进行图像和视频处理任务。

学习微软 .net 技术开发 1666

博图HMI多语言文本列表一键生成攻略:从Excel模板到TIA Portal的完整流程

本文详细介绍了如何利用Excel模板和TIA Portal API实现博图HMI多语言文本列表的一键生成。通过标准化Excel模板设计、解析TIA Portal的XML结构,并结合C#代码实现自动化导入,大幅提升多语言项目的开发效率。特别适用于需要支持多语言版本的自动化设备HMI界面开发。

weixin_26934905的博客 218

从零搭建一个AF架构项目:基于TIA Portal V19和S7-PLCSIM的仿真调试全流程

本文详细介绍了如何在TIA Portal V19环境中从零搭建西门子Automation Framework(AF架构)项目,包括环境准备、硬件组态、核心组件创建、项目架构分层实现以及仿真调试全流程。通过模块化编程和标准化接口设计,AF架构显著提升工业自动化项目的开发效率和维护便利性,特别适合S7-1500系列PLC的应用开发。

weixin_29313547的博客 672

颜色直方图的计算、显示、处理、对比及反向投影(How to Use Histogram? Calculate, Show, Process, Compare and BackProject)

http://www.cnblogs.com/xrwang/archive/2010/02/04/HowToUseHistogram.html 作者:王先荣 前言     颜色直方图直观的显示了图像在色彩空间的分布状况,本文将讨论在EmguCv及OpenCv中跟直方图相关的一些基本操作,包括:计算、显示、处理、对比及反向投影,并谈谈在实践过程中得到的一些经验。如无特别说明,下文所提的直方图均

jiangxinyu的专栏 5396

IBTrACS v04r01 数据提取实战:Pandas 筛选 JTWC/CMA/JMA 3机构最佳路径数据

本文详细介绍了如何使用 Pandas 高效提取和处理 IBTrACS v04r01 数据集中的最佳路径数据,特别针对 JTWC、CMA 和 JMA 三家权威机构的数据进行对比分析。通过构建可复用的数据提取函数,解决多机构数据质量差异问题,并提供高级分析与可视化应用示例,助力热带气旋研究。

clijovtbq401783153的博客 515

EmguCV学习笔记 C# 7.2 特征点检测

SIFT算法是一种基于尺度空间极值检测和高斯差分图像描述子的算法,具有较高的特征检测精度和描述子匹配准确性,它可以在不同尺度和旋转角度下检测和描述图像中的特征点,由于其良好的尺度不变性和旋转不变性,被广泛应用于计算机视觉领域。在使用SIFT算法提取特征描述子时,特征描述子保存在一个Mat类型变量中,该Mat的大小是“关键点的数量×128”,对应Mat的“行×列”,每个关键点为一行,128表示每个特征描述子包含128个数值,这些数值表示了关键点周围区域的特征信息,可以用于描述和区分不同的关键点。

学习微软 .net 技术开发 2085

告别调参玄学:用 DINOv2 (ViT-S/ViT-G) 和 PCA 可视化,直观理解自监督特征

本文深入解析了DINOv2(ViT-S/ViT-G)模型在自监督学习中的特征提取机制,通过PCA降维技术实现特征空间的可视化。文章对比了不同规模模型的特征表达差异,并提供了PCA阈值调优和深度分析的实用技巧,帮助读者直观理解自监督学习的视觉密码。

weixin_42565865的博客 409

Windows 镜像包大全(附百度云下载链接)

插入U盘,找到下载好的两个驱动软件,并安装,先打开驱动人生万能网卡版,安装好网卡驱动,可以接入wifi或者网线了,然后打开驱动精灵,按照提示,安装所有的驱动(中间要是让你重启,就先选择稍后再说,如果有的驱动安装好之后非要你重启,关不掉的那种,那你就重启吧),等全部安装好了,重启电脑。如果你有显卡,这里以英伟达举例,我是GTX960的,当你的驱动都安装好后,右键桌面,会出现一个英伟达控制面板。安装软碟通,下载之后,一直下一步就ok,啥也不用配置,到了最后一项点击“继续试用”即可。(下载里面的网卡版即可),

悦分享 7346

EmguCV-第01讲-EmguCV介绍与安装配置

1.OpenCV&EmguCV OpenCV是一个跨平台的计算机视觉库。由C和少量C++构成,同时提供Python、MATLAB等语言接口,实现了图像处理和计算机视觉方面的诸多算法。 EmguCV是OpenCV的一个跨平台的.net封装,EmguCV用C#封装,允许.NET语言来调用OpenCV函数,如C#、VB、VC++等。 2.安装与配置 安装VS和EmguCV; 配置: 添加环境...

qq_43196058的博客 2404

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

第一章 初识EmguCV

第一章 初识EmguCV 1.1 EmguCV的基本介绍 1.1.1 计算机视觉、OpenCV和EmguCV 计算机视觉是一门研究如何使机器“看”的科学,更进一步的说,就是是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像。作为一个科学学科,计算机视觉研究相关的理论和技术,试图建立能够从图像或者多维数据中获取‘信息...

任玉腾的博客 1468

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

EmguCV学习笔记 C# 10.1 人脸检测 CascadeClassifier类

EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。教程配套文件及相关说明获得pdf教程和代码。

学习微软 .net 技术开发 2055

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

EmguCV学习笔记 VB.Net 第1章 EmguCV

EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它是一个开源、免费的计算机视觉库。EmguCV提供了C#和VB.NET等语言的接口,方便.Net开发者使用,它向C#和VB.NET开发者提供了OpenCV库的大部分功能,包括图像和视频处理、特征提取、目标检测、机器学习等。而且EmguCV提供了简单易用的API接口,可以快速上手进行图像和视频处理任务。

学习微软 .net 技术开发 1629

EmguCV学习 与opencv的区别和联系

openCV是因特尔的一个开源的视觉库,里面几乎包含了所有的图像处理的经典算法,并且采用C和少量的C++编写,运行效率很高,对于做图像处理这方面工作的,认识opencv是必须的工作。不过opencv有个很大的不足,这在于它几乎没有提供gui这方面接口,很难满足目前应用程序开发的需要,而万恶的MFC框架丑陋的界面也成为了我的噩梦,MFC与opencv和界面优化几乎让我在图像处理这一块儿无法...

dayao8092的博客 825
上一篇: OpenCV3.4.8添加opencv_contrib库-记录
下一篇: 1-杂
hellohake
博客等级 码龄10年 4543粉丝 108原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值