PySide: Separando uma spritesheet / Separando uma imagem em regiões contíguas de cores

Eu estou trabalhando em um programa em queEu preciso separar spritesheets, ou em outras palavras,separe uma imagem em regiões contíguas de cor.

Eu nunca fiz nenhum processamento de imagem antes, então estou me perguntando como eu faria isso. O que eu faria depois de testar a cor do pixel? Qual é a melhor maneira de determinar qual pixel vai com cada sprite?

Todas as imagens de entrada têm planos de fundo uniformes e um canal alfa diferente do plano de fundo conta como cor. A ordem das imagens de saída precisa ser da esquerda para a direita, de cima para baixo. Meu projeto está escrito em PySide, então espero usá-lo também, mas poderia importar mais bibliotecas, se necessário.

Obrigado suas respostas!

P.S .: Não tenho certeza se a tag PySide é apropriada ou não, já que estou usando o PySide, mas a questão não envolve os aspectos da GUI. Se um mod sente que não pertence, fique à vontade para removê-lo.

Por exemplo, eu tenho uma spritesheet que se parece com isso:

Eu quero separar isso: