Все выглядит хорошо для меня,
Просто измените $(window).scroll(function () {......
на
$(document).on( 'scroll','window', function(){
//or $(document).on( 'scroll','id of div containing scroll',
var windowScroll = $(window).scrollTop();
var windowHeight = $(window).height();
var documentHeight = $(document).height();
if ((windowScroll + windowHeight) == documentHeight) {
loadFeed();
}
});
Все, что они делают, это сопоставление гистограмм.
Итак, постройте гистограмму для ваших изображений. Нормализовать гистограммы по размеру изображения. Гистограмма - это вектор, содержащий столько же элементов, сколько цветов. Вам не нужны 32,24 или даже 16 бит точности, и это только замедлит вас. По соображениям производительности я бы сопоставил гистограммы с 4, 8 и 10-12 битами.
сравнение с наименьшим расстоянием
между всеми 4-битными гистограммами и вашими образцами цветов. Настоящая большая уловка - найти лучший алгоритм для сопоставления похожих гистограмм.
Начнем с расчета расстояния. В трех измерениях, я думаю, это было:
SQRT ((x1-x2) ^ 2 + (y1-y2) ^ 2 + (z1-z2) ^ 2)
Я делаю это по памяти, так что посмотрите это, чтобы убедиться.
Для ваших целей у вас будет более трех измерений, поэтому у вас будет больше терминов. 4-битная гистограмма будет иметь 16 членов, 8-битная - 256 и т. Д. Помните, что этот вид математики медленный, поэтому на самом деле не выполняйте часть SQRT
. Если вы нормализуете размер ваших изображений достаточно маленьким, скажем, до 10 000 пикселей, тогда вы знаете, что вам нужно будет сделать только x ^ 2
для значений 0..10,0000. Предварительно вычислите таблицу поиска x ^ 2
, где x идет от 0..10 000. Тогда ваши расчеты пойдут быстро.
Когда вы выбираете цвет из палитры, просто создайте гистограмму с этим цветом = 10,0000. При выборе 2 сделайте гистограмму с color1 = 5000, color2 = 5000 и т. Д.
В конце вам придется добавить ложные факторы, чтобы приложение соответствовало реальному миру, но вы найдете их при тестировании.
Probably just creating a histogram of the colors used in the images, then doing a best fit to the user-selected colors.
Я бы посоветовал вам сгруппировать цвета, присутствующие в изображениях в вашей базе данных. Я имею в виду, для каждого изображения в вашей базе данных:
Когда пользователь предоставляет набор из одного или нескольких цветов запроса, вы выполняете своего рода жадное сопоставление, выбирая наилучшее соответствие между заданными цветами и цветовым дескриптором (5 репрезентативных цветов) каждого изображения в вашем база данных.
Каков размер вашей коллекции изображений, потому что в зависимости от размера некоторая поисковая индексация может быть более серьезной проблемой, чем сам алогорит?