Eu faço isso rotineiramente usando as ferramentas imagemagik.
Não consigo lembrar a sintaxe exata do topo da minha cabeça, acho que é a ferramenta "montagem" que você usa.
O que você faz então é fazer um loop sobre cada coluna para criar linhas, assim, por exemplo, do windows:
for %a in (column_*.jpg) do montage -a -out row_X.jpg
onde "row_X" é substituído por "row_1", "row_2" e assim por diante.
depois de ter todas as suas linhas
for %a in (row_*.jpg) do montage -a -h -out finished.jpg
ou algo parecido (como eu disse já faz um tempo, já que eu digitei manualmente)
Eu não estou no meu PC normal no momento, então não consigo ver os arquivos em lote que eu normalmente uso para fornecer a sintaxe exata, mas o site image magik da ferramenta de montagem deve ajudá-lo: