This article describes how to use javascript to implement image similarity algorithms.
The Code is as follows:
Function getHistogram (imageData ){
Var arr = [];
For (var I = 0; I <64; I ++ ){
Arr [I] = 0;
}
Var data = imageData. data;
Var pow4 = Math. pow (4, 2 );
For (var I = 0, len = data. length; I <len; I ++ = 4 ){
Var red = (data [I]/64) | 0;
Var green = (data [I + 1]/64) | 0;
Var blue = (data [I + 2]/64) | 0;
Var index = red * pow4 + green * 4 + blue;
Arr [index] ++;
}
Return arr;
}
Function cosine (arr1, arr2 ){
Var axb = 0,
A = 0,
B = 0;
For (var I = 0, len = arr1.length; I <len; I ++ ){
Axb + = arr1 [I] * arr2 [I];
A + = arr1 [I] * arr1 [I];
B + = arr2 [I] * arr2 [I];
}
Return axb/(Math. sqrt (a) * Math. sqrt (B ));
}
Function gray (imgData ){
Var data = imgData. data;
For (var I = 0, len = data. length; I <len; I ++ = 4 ){
Var gray = parseInt (data [I] + data [I + 1] + data [I + 2])/3 );
Data [I + 2] = data [I + 1] = data [I] = gray;
}
Return imgData;
}
There is a problem: when the fake image is gray and compared with the source image, to compare the similarity, You need to convert the image to gray, that is, use the gray function of the above Code to process it.