我有数据集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创建它们的直方图和比较。我认为正确吗?