Differences between ellipsoidal height and orthometric altitude (or geoid height) are explained here https://spatialthoughts.com/2019/10/26/convert-between-orthometric-and-ellipsoidal-elevations-using-gdal/
using gdalwarp to convert from UTM33N-WGS84 ellipsoidal height to UTM33N-EGM96 geoid height
gdalwarp -s_srs "+proj=utm +zone=33 +datum=WGS84 +units=m +no_defs" -t_srs "+proj=utm +zone=33 +datum=WGS84 +units=m +no_defs +geoidgrids=egm96_15.gtx" input.tif output.tif
The definition of the projection is the PROJ4 line that can be found on https://spatialreference.org/
Inversely, to convert from altitude to ellipsoidal height use such command (change srs and geoid grid if needed):
gdalwarp -s_srs "+proj=utm +zone=33 +datum=WGS84 +units=m +no_defs
+geoidgrids=egm96_15.gtx"
-t_srs "+proj=utm +zone=33 +datum=WGS84 +units=m +no_defs" input.tif output.tif
you can choose your input and output spatial reference using the proj4 syntax https://epsg.io/32633 , and note the add of the geoid file with +geoidgrids=egm96_15.gtx in the command.
if you want to use EGM2008 geoid, get the file from https://github.com/OSGeo/proj-datumgrid/blob/master/world/egm08_25.gtx and copy it to the proj directory. In Linux it’s
/usr/share/proj
then you can simply change the geoid file in the command +geoidgrids=egm08_25.gtx