Sem dizer exatamente o que é esse sistema, como você vai trabalhar com essas imagens, fica impossível te ajudar. Até agora, você só disse que é um sistema com um milhão de imagens. Mas não disse “como” serão tratadas, se serão tratadas uma vez só, se haverá mais imagens inseridas no futuro ou se é um batch só, etc.
Ajudaria MUITO se você dissesse que tipo de filtros quer aplicar, qual operações vai fazer, etc.
Se o volume é gigante e os filtros forem relativamente complexos, e for uma única operação que precisa de MUITA velocidade, eu recomendaria FORTEMENTE o uso de C++ com a OpenCV. E não recomendaria em absoluto Java. De maneira geral, o Java é uma linguagem de baixa performance para processamento de imagens.
Use-o só se forem operações muito simples como recortar a imagem, fazer espelhar (horizontal ou verticalmente), mudar o tom ou redimensionar (com baixa qualidade).