See my post above. But here is a rough go at it.
1) cropped a section of the shirt the same size as the picture, then converted to grayscale, blurred it to smooth out variations, then stretched it to full dynamic range
convert shirt_design.jpg[192x144+90+105] -colorspace gray \
-blur 20x65000 -auto-level shirt_design_crop_b20_al.png
2) Used the cropped, grayscale image as the displacement map to warp the picture. Note the negative arguments. I could have negated the displacement map instead. Note also that the stretch to full dynamic range is needed so that some parts get positive shifts and some parts get negative shifts.
convert shirt_product.jpg shirt_design_crop_b20_al.png -alpha set \
-virtual-pixel transparent -compose displace \
-set option:compose:args -5x-5 -composite shirt_displace_m5b.png
3) Composited the result over the shirt
convert shirt_design.jpg shirt_displace_m5b.png -geometry +90+105 \
-compose over -composite shirt_product_displace_m5.png
It does not reproduce your example, because I don't have your exact displacement map.
But it gives you the idea how to go about it. You can play with the amount of smoothing or some other displacement map and the amount of displacement to apply and its direction (sign).
Here is another approach.
1) Get four grayscale colors from the corners of the cropped grayscale shirt image. Though it does not have to be the corners and can be more than 4. Use those points and colors to interpolate a displacement map using -sparse-color bilinear (but you could try shepards as well). see
http://www.imagemagick.org/Usage/canvas/#sparse_summery
color1=`convert shirt_design_crop_b20_al.png -format "%[pixel:s.p{0,0}]" info:`
color2=`convert shirt_design_crop_b20_al.png -format "%[pixel:s.p{191,0}]" info:`
color3=`convert shirt_design_crop_b20_al.png -format "%[pixel:s.p{191,143}]" info:`
color4=`convert shirt_design_crop_b20_al.png -format "%[pixel:s.p{0,143}]" info:`
convert -size 192x144 xc: -sparse-color Bilinear \
"0,0 $color1 191,0 $color2 191,143 $color3 0,143 $color4" -auto-level shirt_displace_map.png
2) apply the displacement map to the picture as before
convert shirt_product.jpg shirt_displace_map.png -alpha set \
-virtual-pixel transparent -compose displace \
-set option:compose:args -10x-10 -composite shirt_displace_map_m10.png
3) composite the displaced image over the shirt.
convert shirt_design.jpg shirt_displace_map_m10.png -geometry +90+105 \
-compose over -composite shirt_product_displace_map_m10.png
Here is another easier approach:
1) distort the picture using -distort arc
convert shirt_product.jpg -alpha set -virtual-pixel transparent \
-distort Arc 10 -resize 95% shirt_product_arc10.png
2) composite over the shirt
convert shirt_design.jpg shirt_product_arc10.png -geometry +90+105 \
-compose over -composite shirt_product_arc10_compose.png
Lots of ways to approach this problem!