Here are some tests I did to compare to Photoshop
Original:
Photoshop black-red gradient colorization:
IM Processing:
infile="sunsets-lightroom-split-toning_srgb.jpg"
inname=`convert "$infile" -format "%t" info:`
IM HCL colorize:
convert $infile -define modulate:colorspace=HCL -modulate 100,0,100 -set colorspace sRGB \
\( -clone 0 +level-colors black,red \) \
-compose colorize -composite \
${inname}_highlight_HCL_levelcolors_colorize.jpg
IM HCLp colorize:
convert $infile -define modulate:colorspace=HCLp -modulate 100,0,100 -set colorspace sRGB \
\( -clone 0 +level-colors black,red \) \
-compose colorize -composite \
${inname}_highlight_HCLp_levelcolors_colorize.jpg
But using -define modulate: only changes a little. IM -colorize still works in HCL (or possibly HSL) and is not affected by the -define and so does not maintain the brighter whites.
It needs to have a -define so that one can choose which colorspace to use or at least use HCLp. Though that still does not guarantee that it will match perfectly to PS as we do not know exactly what colorspace they use.
Here is another approach that tries to do it manually:
convert $infile \( -clone 0 +level-colors black,red -set colorspace RGB -colorspace HCLp -separate \) \
\( -clone 0 -set colorspace RGB -colorspace HCLp -separate \) \
-delete 0,3,4,5 -set colorspace HCLp -combine -colorspace RGB -set colorspace sRGB \
${inname}_highlight_HCLp_levelcolors_colorize_non-linear_linear.jpg
infile="sunsets-lightroom-split-toning_srgb.jpg"
convert $infile \( -clone 0 +level-colors black,red -set colorspace RGB -colorspace HCLp -separate \) \
\( -clone 0 -set colorspace RGB -colorspace HCLp -separate \) \
-delete 0,3,4,5 -set colorspace HCLp -combine -colorspace sRGB \
${inname}_highlight_HCLp_levelcolors_colorize_non-linear_linear2.jpg
So I have never really been able to duplicate the Photoshop result.