我有数据集1和2.那些有2D数据。 例如,
数据1: (x1,y1),(x2,y2),(x3,y3)....(xn,yn)
Data2:(x1',y1'),(x2',y2'),....(xm',ym')
如果可能的话,我想使用直方图和地球移动距离(EMD)来比较它们。
因为我有二维数据,所以数据应放在二维地图上,二维地图上直方图的高度具有数据的频率,因此应该是三维直方图。即使我成功创建了绘制直方图并使用1D数据进行比较的示例,但我未能尝试将其更改为2D数据。它是如何工作的?
例如,
calcHist(&greyImg, 1, channel_numbers, Mat(), histogram1, 1, &number_bins, &channel_ranges);
此代码将图像的灰度强度(1D数据)设为直方图。但我无法将其更改为2D数据。
我的想法是这样的: 我创建了cv :: Mat Data1Mat,Data2Mat; (垫尺寸设置为x和y的最大值) 然后,将Data1的x值推送到Mat1的第一个通道,将y值推到第二个通道。 (与Data2和Data2Mat相同) 例如,对于(x1,y1),设置
Data1Mat.at(x1,y1)[0] = x1, Data1Mat.at(x1, y1)[1] = y1;
答案 0 :(得分:0)
我认为更正确的说法是:1D数据的直方图,2D数据的直方图。
您需要2D数据的直方图。
这里计算出图像的H,S 2D直方图:Calculate HSV histogram of a coloured image is it different from H-S histogram?
你有同样的问题,但是把你的x代替H而不是S代替。