В зависимости от вида визуальной информации представленный вариант Monte Carlo method может поместиться. В частности, если вы показываете фотографические изображения, то случайная выборка (где random is weighted) даст вам достаточно справедливое представление. Например, вы можете использовать xor-shift random (как это было бы быстрее, чем AS3 Math.random()
) и считывать значения цвета из ByteArray, сгенерированные из BitmapData, таким образом: pixels.readUnsignedInt(xorShiftRandom() * pixels.length)
в случае, если BitmapData использует формат ARGB.
Кроме того, вы хотели бы построить гистограмму, чтобы аналогичные цвета создавали большинство. Тогда вам нужно было бы принять произвольный выбор в отношении того, насколько цвета считаются схожими (количество бункеров гистограммы подсчитывается по одному и тому же цвету) и, таким образом, находит наиболее распространенный цвет, пробуя группы бункеров.
Вы также можете предварительно обработать изображение (путем понижающей дискретизации). У меня нет никаких математических доказательств, но похоже, что вам не понадобится изображение размером более 255х255 для достижения желаемых результатов.
хорошая идея, она не на 100% уверена, но это мое собственное предложение не является ни тем, ни другим – user1266573