Por petición popular, aquí viene el pequeño añadido sobre el tutorial del otro día en el que explicaba cómo crear mosaicos de imágenes empleando para ello ImageMagick.
Voy a partir de las cuatro figuras que utilicé anteriormente, pero en sus versiones recortadas, pero en formato .tif (ejemplo-im-{1,2,3,4}-cropped.tif), porque el .png y la adición de texto se llevan ligeramente a hostias, al menos con mis ejemplos. Voy a hacer un mosaico de 2×2, como en el tutorial anterior, pero ahora voy a añadir unos pequeños rótulos que indiquen filas y columnas.
La gracia aquí reside en que no sirve unir las imágenes como la otra vez, formando directamente el patrón de 2×2 (o igual sí, pero yo tengo otro método que creo que da mejor resultado y hay que andar haciendo menos cálculos). Lo que hay que hacer es crear primero dos columnas de imágenes (de 2 imágenes cada columna), poner el texto en esas columnas y luego juntarlas horizontalmente. Primero, a ver cómo es eso de añadir un texto:
convert -gravity South -font "Times-Roman" -pointsize 36 -annotate 0 'Imagen 1' ejemplo-im-1-cropped.tif ejemplo-im-1-cropped-annotated.tif
-gravity South indica que queremos que las letras aparezcan bajo la imagen, -font "Times-Roman" -pointsize 36" indica la tipografía y el tamaño de letra, y -annotate 0 'Imagen1' indica que queremos que se imprima el texto Imagen1 sin ningún tipo de desplazamiento o rotación.
Y obtenemos justamente esto:

Oooops.
Oh, la mierda. Resulta que el texto se pone debajo de la imagen, pero se va a por uvas. No sé por qué ocurre esto: pasa solamente con mis imágenes originales, pero no con lo que voy a ir generando a partir de ellas. Necesita un pequeño desplazamiento:

Oooops (2)
Mejor, pero tampoco es lo que queríamos: en realidad lo que necesitamos es que se añada una pequeña franja blanca bajo la imagen y el texto quede ahí. Esto se puede hacer con el argumento -splice.
convert -gravity South -font "Times-Roman" -pointsize 36 -splice 0x50 -annotate +0+70 'Imagen 1' ejemplo-im-1-cropped.tif ejemplo-im-1-cropped-annotated.tif

Mejor.
Ok, pero tampoco queremos esto. En realidad, queremos juntar dos imágenes (la 1 y la 3 por un lado, formando una columna, y la 2 y la 4 por otro) y etiquetar esas columnas. Bien, no tiene mucha complicación (y ahora el texto sí se comporta como se supone que se tiene que comportar, sin tener que andar toreando los desplazamientos):
montage -geometry +0+3 -tile 1x ejemplo-im-1-cropped.tif ejemplo-im-3-cropped.tif col1.tif
convert -gravity South -font "Times-Roman" -pointsize 36 -splice 0x40 -annotate 0 'Col1' col1.tif col1_annotated.tif
Efectivamente:

De forma análoga, genero la segunda columna y puedo montarme un mosaico preliminar con lo que ya expliqué el otro día. Es importante notar que -gravity South se encarga de centrar el texto, por eso es útil hacerlo de esta forma.

Ya solamente queda etiquetar las filas de la siguiente manera:
convert -gravity NorthWest -font "Times-Roman" -pointsize 36 -splice 100x0 -annotate +0+125 'Row1' -annotate +0+378 'Row2' completo_salvo_filas.tif completo.tif

¿Por qué annotate +0+125 y annotate +0+378? Porque queremos que el texto quede alineado con la parte central de cada fila. Las imágenes son de 250×250, luego la parte central de la primera fila, teniendo en cuenta que vamos a empezar a escribir desde la parte superior izquierda (-gravity NorthWest), quedará 125 píxeles por debajo, y la segunda a 125 + 250 + 3 (por los 3 píxeles que he estado dejando entre las imágenes del mosaico) = 378. Por si alguien se lo está preguntando: sí, se puede rotar el texto.
Sí, puede parecer enrevesado, pero digo lo del otro día: cuando hay que hacer varias operaciones de este tipo, poder automatizar el proceso es esencial.