PGH使用的OpenCV(Emgu)

任何人都可以分享自己的代码计算PGH(成对几何直方图)的相似性? 我需要从图像列表中找到最相似的对象。

我已经写了下面的代码,但结果毫无意义。 我敢打赌我做一个愚蠢的错误,我卡住了。

有什么建议么?

public double GetBestPGHMatch(Contour<Point> currContour, List<Contour<Point>> ContoursList) { double match = -1.0d; DenseHistogram histCurrContour = new DenseHistogram( new int[2] { currContour.Total, currContour.Total, }, new RangeF[2] { new RangeF(0, 100), new RangeF(0, 100) } ); CvInvoke.cvCalcPGH(currContour.Ptr, histCurrContour.Ptr); foreach (Contour<Point> contour in ContoursList) { DenseHistogram hist = new DenseHistogram( new int[2] { currContour.Total, currContour.Total, }, new RangeF[2] { new RangeF(0, 100), new RangeF(0, 100) } ); CvInvoke.cvCalcPGH(contour.Ptr, hist.Ptr); double c = CvInvoke.cvCompareHist(histCurrContour.Ptr, hist.Ptr, Emgu.CV.CvEnum.HISTOGRAM_COMP_METHOD.CV_COMP_CORREL); if (c > match) match = c; } return match; }

--------------解决方案-------------

希望这可以帮助别人,这里是我如何工作出来,我使用的巴塔查里亚的距离,因此,值越大,越低的比赛。 还有其他指标一样好,但我发现我需要B-距离最好。

public double pghMatchShape(Contour<Point> shape1, Contour<Point> shape2)
{
DenseHistogram hist1 = new DenseHistogram(
new int[2] { 8, 8 },
new RangeF[2] { new RangeF(-180, 180), new RangeF(100, 100) });
DenseHistogram hist2 = new DenseHistogram(
new int[2] { 8, 8 },
new RangeF[2] { new RangeF(-180, 180), new RangeF(100, 100) });
CvInvoke.cvCalcPGH(shape1, hist1.Ptr);
CvInvoke.cvCalcPGH(shape2, hist2.Ptr);
CvInvoke.cvNormalizeHist(hist1.Ptr, 100.0);
CvInvoke.cvNormalizeHist(hist2.Ptr, 100.0);
double corr = CvInvoke.cvCompareHist(hist1, hist2, HISTOGRAM_COMP_METHOD.CV_COMP_BHATTACHARYYA);

return corr;
}

分类:OpenCV的 时间:2012-01-01 人气:0
本文关键词: OpenCV的,emgucv,emgu
分享到:

相关文章

  • 有没有在OpenCV中或Emgu CV桌面捕捉选项的任何功能? (插件,库,类) 2015-02-20

    有没有在OpenCV中或Emgu CV桌面捕捉选项的任何功能? (插件,库,类),所以我知道我们可以在一个非常简单的方法拍摄的摄像头,是有桌面捕捉这样的任何选项? --------------解决方案------------- 我建议做一个屏幕捕捉Emgu之外(即在非Emgu C ++ / C#). 第一步是建立从屏幕图像的位图. 有很多的网站,详细说明如何做到这一点的方法. 我发现这是很有帮助的. 一旦你有一个位图,可以很容易地从它创建新的Emgu图像<,>. 下面是该文档. 玩的愉快开心!

  • 改善与OpenCV的/ EmguCV人脸检测表演 2014-04-05

    我目前使用EmguCV(OpenCV的C#包装)成功地检测实时(摄像头)的面孔. 我避开7 FPS. 现在我希望提高性能(和节省CPU周期)和我正在寻找的选项,这里有我的想法: 识别脸部,拿起脸特征,并试图找到在接下来的帧(使用SURF算法)这些功能,所以就变成了"人脸检测+跟踪". 如果没有找到,再次使用人脸检测. 检测面部,在下一帧中,尝试检测在ROI其中面对先前是脸(即寻找面部在图像的一小部分). 如果未找到面部,尝试在整个图像中再次寻找它. 方的想法:如果2-3帧,图像没有运动

  • 我如何获得一个.NET位图和OpenCV的图像指向相同的内存块? 2012-04-17

    我如何获得一个.NET位图和OpenCV的图像指向相同的内存块? 我知道,我可以从一个复制到其他,但我宁愿他们只是指向同一个像素. 奖励积分的使用Emgu的解决方案. --------------解决方案------------- 下面只是一个理论,可能无法正常工作,我不是很有经验的OpenCV的/ emgucv 无论System.Drawing.Bitmap和Emgu.CV.Image有构造以scan0作为参数. 您可以为图像的分配内存和这个指针传递给构造函数. 内存可以被分配var ptr

  • EmguCV手dectection 2012-07-30

    我创建一个Windows窗体应用程序在C#中的检测程序,我使用C#包装EmguCV处理OpenCV库. 在Emgu包有HaarCascades(这是用于模板匹配的XML文件)的脸,眼,嘴等,但没有一个为手. 我已阅读了关于如何创建要创建的模板文件,但我需要大量的图片为它工作. 因此,我想知道是有一个关于该程序可以在一个视频文件,或从一个网络摄像头饲料和在每帧拍摄静止,图像分类到我需要的正面和负面形象. 所有我需要的是程序获得的图像,以创建文件,其余的我已阅读如何做到这一点. 干杯 -------

  • 是子母画面可以使用OpenCV的? 2013-11-09

    我想在更大的图像上(最终画中画的视频供稿)添加一个较小的图像. 我可以通过大的图像中的相关数据属性迭代做到这一点,从小添加图像的像素. 但有一个更简单,更合适的方法? 我使用EMGU. 我的想法是尺寸相同的小图像的大的图像中定义的投资回报. 坐落于大图像等于小图像,然后只需删除的投资回报率. 即伪代码: Large.ROI = rectangle defined by small image; Large = Small; Large.ROI = Rectangle.Empty; 然而,这不工作

  • 有效地调整图像在C#中的对比 2012-07-24

    是否有调整图像在C#中的对比度的有效途径? 我已经看到了这篇文章主张做每个像素的操作. 不要动不动. 我使用的是彩色矩阵中的地方已经去找他们要快. 有没有办法用它们来调节对比度? (注:这家伙得到它错了.) 我还使用EmguCV. 我注意到的OpenCV(其中Emgu包装)似乎有一个对比功能 - 有没有办法通过Emgu访问本吗? 此刻所有我所用Emgu做是规范化直方图,它不改变对比度,而与控制的我的一部分的任何程度. 任何人有什么想法? --------------解决方案-----------

  • 车牌识别 2012-08-26

    作为一个侧面项目中,我试图创建一个应用程序, 扫描车牌从我的客厅窗口过路车. 我已经迷上了一个高分辨率摄像头我的系统来捕捉(移动)图像到我的C#应用​​程序. 现在,我需要的是一个方法,这些图像解读到的东西可读. I'm思考的OCR-解决方案某种这是运动图像的快速/准确的就够了. 希望你能给我一些指导! --------------解决方案------------- 如果您正在寻找写你自己的,我将开始与AForge图像处理库. 下面是关于做车牌识别的AForge的背景下讨论. 他们还建议Java

  • 运动检测在.NET中的特定对象 2012-11-16

    我需要一个.NET应用程序,我必须检测用户持有的特定对象,使用摄像头. 如果对象必须有一定的特殊性,使得它可以很容易识别,并从周围的空间探测,请给我一些建议(例如绿色立方体?) 什么是最好的技术/ .NET库来使用? 我需要实时的用户的手运动的翻译,并相应地在屏幕上显示的动画. --------------解决方案------------- 运动检测:找到好等特点,并喂它们到卢卡斯 - 加拿大光流算法(弯道,即). OpenCV的这些功能​​,但我不知道是否opencvnet拥有与否. 如果你的

  • 低通和高通滤波器在C# 2014-02-10

    我需要的低通和C#编写的高通滤波器. 我对这个过滤过程的双阵列. 我想,如果我尝试MATLAB巴特沃思和切比雪夫算法转换为C#中,它会更容易. 但我无法找到在互联网上butter.m和切比雪夫算法的代码,我不想MATLAB和信号处理工具箱设置成我的电脑. 你能提供代码讨好? 谢谢.. --------------解决方案------------- 我发现这个在线工具,看起来很有希望:交互式数字滤波器设计:北海/贝塞尔/切比雪夫滤波器 你只需输入你的需求: 滤波器的设计:北海/贝塞尔/切比雪夫 滤

  • C#图像分析库 2014-12-20

    我开发一个小应用程序,得到了一些图像,然后计算图像中的项目. 这多少有点像与道路的卫星图片,我需要算车. 你能给我一些提示从哪里开始? 我完全失去了. 非常感谢,拉杜 --------------解决方案------------- 你检查了OpenCV的? Emgu CV提供.NET绑定 图像处理库: OpenCV的或者如果你有与Matlab的图像处理工具箱,这将是非常好的. 聪明的算法 在道路上计数汽车并不像看起来那么简单. 让我们假设他们有一个不变的规模(比如说1.0). 创建自己Hough

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.739 (s). 10 q(s)