Hi I just made a color version of your noise checker. I'm not sure if it actually works. XD What do you think?
public static boolean isColorImagePureNoise(int[] pixels) {
double whiteStrength = 0;
double blackStrength = 0;
double greyStrength = 0;
double redStrength = 0;
double greenStrength = 0;
double blueStrength = 0;
double orangeStrength = 0;
double pinkStrength = 0;
double yellowStrength = 0;
//===========================
int whiteStreak = 0;
int blackStreak = 0;
int greyStreak = 0;
int redStreak = 0;
int greenStreak = 0;
int blueStreak = 0;
int orangeStreak = 0;
int pinkStreak = 0;
int yellowStreak = 0;
int start = pixels.length / 4;
int end = start * 3;
for (int i = start; i < end; i++) {
Color c = new Color(pixels[i]);
if (c.equals(Color.BLACK)) {
blackStrength++;
blackStrength += blackStreak;
blackStreak++;
whiteStreak = 0;
greyStreak = 0;
redStreak = 0;
greenStreak = 0;
blueStreak = 0;
orangeStreak = 0;
pinkStreak = 0;
yellowStreak = 0;
} else if(c.equals(Color.WHITE)) {
whiteStrength++;
whiteStrength += whiteStreak;
whiteStreak++;
blackStreak = 0;
greyStreak = 0;
redStreak = 0;
greenStreak = 0;
blueStreak = 0;
orangeStreak = 0;
pinkStreak = 0;
yellowStreak = 0;
} else if(c.equals(Color.GRAY) || c.equals(Color.LIGHT_GRAY)){
greyStrength++;
greyStrength += greyStreak;
greyStreak++;
whiteStreak = 0;
blackStreak = 0;
redStreak = 0;
greenStreak = 0;
blueStreak = 0;
orangeStreak = 0;
pinkStreak = 0;
yellowStreak = 0;
} else if(c.equals(Color.RED)){
redStrength++;
redStrength += redStreak;
redStreak++;
whiteStreak = 0;
blackStreak = 0;
greyStreak = 0;
greenStreak = 0;
blueStreak = 0;
orangeStreak = 0;
pinkStreak = 0;
yellowStreak = 0;
} else if(c.equals(Color.GREEN)){
greenStrength++;
greenStrength += greenStreak;
greenStreak++;
whiteStreak = 0;
blackStreak = 0;
greyStreak = 0;
redStreak = 0;
blueStreak = 0;
orangeStreak = 0;
pinkStreak = 0;
yellowStreak = 0;
} else if(c.equals(Color.BLUE)){
blueStrength++;
blueStrength += blueStreak;
blueStreak++;
whiteStreak = 0;
blackStreak = 0;
greyStreak = 0;
redStreak = 0;
greenStreak = 0;
orangeStreak = 0;
pinkStreak = 0;
yellowStreak = 0;
} else if(c.equals(Color.ORANGE)){
orangeStrength++;
orangeStrength += orangeStreak;
orangeStreak++;
whiteStreak = 0;
blackStreak = 0;
greyStreak = 0;
redStreak = 0;
greenStreak = 0;
blueStreak = 0;
pinkStreak = 0;
yellowStreak = 0;
} else if(c.equals(Color.PINK)){
pinkStrength++;
pinkStrength += pinkStreak;
pinkStreak++;
whiteStreak = 0;
blackStreak = 0;
greyStreak = 0;
redStreak = 0;
greenStreak = 0;
blueStreak = 0;
orangeStreak = 0;
yellowStreak = 0;
} else if(c.equals(Color.YELLOW)){
yellowStrength++;
yellowStrength += yellowStreak;
yellowStreak++;
whiteStreak = 0;
blackStreak = 0;
greyStreak = 0;
redStreak = 0;
greenStreak = 0;
blueStreak = 0;
orangeStreak = 0;
pinkStreak = 0;
} else {
whiteStreak = 0;
blackStreak = 0;
greyStreak = 0;
redStreak = 0;
greenStreak = 0;
blueStreak = 0;
orangeStreak = 0;
pinkStreak = 0;
yellowStreak = 0;
}
}
double[] colStringths = {blackStrength, whiteStrength, greyStrength, redStrength, greenStrength, blueStrength, orangeStrength, pinkStrength, yellowStrength};
double biggestValue = findMax(colStringths);
double lowestValue = findMax(colStringths);
double res = biggestValue / lowestValue;
if (res > 1.6d && res < 5) {
System.out.println("REAL IMAGE:" + res);
return false;
} else {
return true;
}
} // end of isColorImagePureNoise
static double findMax (double [] numbers) {
double max = numbers[0];
for (int i = 1; i < numbers.length; i++) {
if (numbers[i] > max) {
max = numbers [i];
}
}
return max;
}