2017-04-07 109 views
0

我有数据集1和2.那些有2D数据。 例如,使用2D数据创建3D直方图(OpenCV?)

数据1: (X1,Y1),(X2,Y2),(X3,Y3)...(XN,YN)

数据2:(X1' ,Y1' ) ,(x2',y2'),...(xm',ym')

如果可能的话,我想用直方图和Earth Mover的距离(EMD)进行比较。

因为我有二维数据,数据应该放在二维地图上,二维地图上的直方图高度有数据的频率,因此它应该是三维直方图我猜。即使我成功创建绘制直方图的示例并使用1D数据比较它们,我仍未尝试将其更改为2D数据。怎么运行的?

例如,

calcHist(&greyImg, 1, channel_numbers, Mat(), histogram1, 1, &number_bins, &channel_ranges); 

此代码THA图像的灰度强度(1D数据)直方图。但我无法将其更改为2D数据。

  • 我的想法是这样的:我 创建简历::垫Data1Mat,Data2Mat; (垫大小设置为x和y的最大值) 然后,将Data1的x值推入Mat1的第一个通道,将y值推送到第二个通道。 (同向数据2和Data2Mat) 例如,对于(X1,Y1),设置

    Data1Mat.at(x1,y1)[0] = x1, Data1Mat.at(x1, y1)[1] = y1; 
    

像this.Then创建它们的直方图和比较。我认为正确吗?

回答

0

我认为更直观的说一维数据的直方图,二维数据的直方图。

您需要2D数据的直方图。

  • 1D直方图计算标量值碰撞箱间隔的数量。
  • 二维直方图按区域划分平面,并计算每个区域命中的二维点数 。

这里计算的H,S 2D直方图的图像:Calculate HSV histogram of a coloured image is it different from H-S histogram?

您有接近相同的问题,而是把你的X来代替H,和S.

代替ÿ