Миллион элементов из 16 миллионов элементов возможных позиций. Можно попробовать создать карту позиций, т.е. array[rgb] = 1 | 0.
Если каждая позиция описывается одним байтом, то это 16 Мб памяти. Не так уж и много, для современных то машин?
Довольно таки простая адресация, простой запрос, поэтому можно воспользоваться поиском вширь. Если поиск сделать двухуровневым, то скорость будет вполне приемлемой. (сначала поиск по областям 16х16х16, потом поиск по точкам внутри подходящих областей).