Como converter a implementação C ++ do GLCM em Java?

Eu obtive o seguinte trecho do GitHub para calcular a matriz de co-ocorrência de nível de cinza (GLCM) através do OpenCV:

float energy=0,contrast=0,homogenity=0,IDM=0,entropy=0,mean1=0; int row=img.rows,col=img.cols; Mat gl=Mat::zeros(256,256,CV_32FC1); //creating glcm matrix with 256 levels,radius=1 and in the horizontal direction for(int i=0;i<row;i++) for(int j=0;j<col-1;j++) gl.at(img.at(i,j),img.at(i,j+1))=gl.at(img.at(i,j),img.at(i,j+1))+1; // normalizing glcm matrix for parameter determination gl=gl+gl.t(); gl=gl/sum(gl)[0]; 

O código acima está em C ++. Eu preciso converter isso em Java, mas estou preso nesta linha:

 gl.at(img.at(i,j),img.at(i,j+1))=gl.at(img.at‌​(i,j),img.at(‌​i,j+1))+1; 

Alguém pode me ajudar com isso?

O cálculo de uma matriz de co-ocorrência de nível de cinza simétrico de 256x256 da imagem img (da class Mat ) correspondente a um deslocamento “um pixel para a direita” pode ser implementado em Java através do OpenCV da seguinte forma:

 Mat gl = Mat.zeros(256, 256, CvType.CV_64F); Mat glt = gl.clone(); for (int y = 0; y < img.rows(); y++) { for (int x = 0; x < img.cols()-1; x++) { int i = (int) img.get(y, x)[0]; int j = (int) img.get(y, x + 1)[0]; double[] count = gl.get(i, j); count[0]++; gl.put(i, j, count); } } Core.transpose(gl, glt); Core.add(gl, glt, gl); Scalar sum = Core.sumElems(gl); Core.divide(gl, sum, gl); 

Há um bom grupo de bibliotecas disponíveis publicamente para calcular GLCMs e extrair resources do Haralick a partir deles em Java, por exemplo, GLCM2 , JFeatureLib , etc.