Я писал программу на Java, которая помогает вырезать и работать со спрайтами, такими как спрайты CSS. Основная идея состоит в том, что изображение сегментируется на субрегионы, поэтому программное обеспечение понимает, что «таблица спрайтов» состоит из нескольких спрайтов.
Алгоритм, который я разработал, работает путем сканирования горизонтальных (x) и вертикальных (y) осей на предмет разрывов на основе прозрачности / цветовой маски. Это не обнаруживает каждую часть, но может применяться рекурсивно. Оси 1D преобразуются в прямоугольники, где части изображения.
http://en.wikipedia.org/wiki/Image_segmentation
Статья в Википедии (выше) содержит информацию о множестве различных техник. Одна важная вещь - то, что я не делаю распознавание, такое как обнаружение объектов переднего плана. Технически использование цветовой маски - это разделение фона и переднего плана.