2017-04-07 2 views
0

데이터 세트 1과 2가 있습니다. 2D 데이터가 있습니다. 예를 들어 ,2D 데이터 (OpenCV?)를 사용하여 3D 히스토그램 생성

데이터 1 : (X1, Y1), (X2, Y2), (X3, Y3) .... (XN, YN)

데이터 2 (X1 ', Y1') (x2 ', y2'), .... (xm ', ym')

가능하면 히스토그램과 Earth Mover 's Distance (EMD)를 사용하여 비교하고 싶습니다.

나는 2D 데이터를 가지고 있기 때문에 데이터는 2D 맵에 배치해야하며 2D 맵의 히스토그램 높이는 데이터의 빈도를 가지므로 3D 히스토그램이어야합니다. 히스토그램을 그리고 1D 데이터를 사용하여 비교하는 예제를 만들었지 만 2D 데이터로 바꾸려고하지 않았습니다. 어떻게 작동합니까? 예를 들어

,

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

그쪽이 코드 이미지의 계조 강도 (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; 
    
  • 근데 ... 등

그들의 히스토그램을 생성하고 비교 세트. 내가 올바르게 생각하니?

답변

0

나는 2D 데이터의 히스토그램의 1D 데이터의 히스토그램이라고 말하는 것이 더 정확하다고 생각합니다.

2D 데이터의 히스토그램이 필요합니다.

  • 1D 히스토그램은 스칼라 값의 수를 bin 간격으로 계산합니다.
  • 2D 히스토그램은 영역별로 평면을 나누고 각 영역에 맞춰진 2D 점 수 을 계산합니다.

여기서 H, 화상 용 S 2D 히스토그램 산출 : Calculate HSV histogram of a coloured image is it different from H-S histogram?

같은 문제 가까이있는, 그러나 대신 H중인 X를 넣고, Y 대신 S.

관련 문제