Clear[dens1,dens2];
dens1[x_,y_]=PDF[MultinormalDistribution[{-1,-1},{{2,1/2},{1/2,2}}],{x,y}];
dens2[x_,y_]=PDF[MultinormalDistribution[{1,1},{{1,0},{0,1}}],{x,y}];
color1=ColorData["Crayola"]["WildBlueYonder"];
color2=ColorData["Crayola"]["WildWatermelon"];

SetOptions[#,Boxed->False,Lighting->"Neutral",SphericalRegion->False]&/@{Plot3D,Graphics3D};

varspec=Sequence@@{{x,-2.5,2.5},{y,-2.5,2.5}};
pr=PlotRange->{0,0.2};
axes=AxesEdge->{Automatic,{1,-1},None};
mesh=Sequence@@{Mesh->5,MeshFunctions->{#3&}};
filling=FillingStyle->Directive[Opacity[.7],Gray,Specularity[1]];
ticks=Ticks->{{-2,0,2},{-2,0,2},{}};
viewpoint=ViewPoint->{1.532892436500705,-2.839247051560037,1.0192727595332602`};
ppoints=PlotPoints->100;
is=360;
rf=2;

graphic3d=Plot3D@@{{dens1[x,y],dens2[x,y]},varspec,pr,mesh,ppoints,axes,ticks,viewpoint,PlotStyle->{color1,color2}}

regionPic=ContourPlot@@{dens1[x,y]==dens2[x,y],{x,-3,3},{y,-3,3},ppoints,ContourStyle->Directive[Thickness[.02]]};
label1=Graphics[Text[Style["Class 1",Bold,Italic,34],{-1,-1.5}]];
label2=Graphics[Text[Style["Class 2",Bold,Italic,34],{1,1.5}]];
label1x=Graphics[{color1,Disk[{-1,-1},.15]}];
label2x=Graphics[{color2,Disk[{1,1},0.15]}];
regionPic=Show[regionPic,label1,label2,label1x,label2x,Frame->None,PlotRange->{{-2.5,2.5},{-2.5,2.5}}];
regionRaster=Rasterize[regionPic,ImageSize->is,RasterSize->2is]

h=-1/5;
overlay=Graphics3D[{EdgeForm[Gray],Texture[regionRaster],Polygon[{{-2.5,-2.5,h},{-2.5,2.5,h},{2.5,2.5,h},{2.5,-2.5,h}},VertexTextureCoordinates->{{0,0},{0,1},{1,1},{1,0}}]},PlotRange->{{-2.5,2.5},{-2.5,2.5},{h,.2}}];
graphic1=Show[overlay,graphic3d,BoxRatios->{1,1,1},ViewPoint->{1.9195511810954236`,-2.4269268856192108`,1.3694338812128908`}]

graphic2=Plot3D@@{dens1[x,y],varspec,pr,mesh,axes,ticks,ppoints,viewpoint,PlotStyle->color1,Filling->Bottom,filling,RegionFunction->Function[{x,y,z},dens1[x,y]≤dens2[x,y]]}

graphic3=Plot3D@@{dens2[x,y],varspec,pr,mesh,axes,ticks,ppoints,viewpoint,PlotStyle->color2,Filling->Bottom,filling,RegionFunction->Function[{x,y,z},dens2[x,y]≤dens1[x,y]]}

raster1=Rasterize[graphic1,ImageSize->is,RasterSize->rf is];
raster2=Rasterize[graphic2,ImageSize->is,RasterSize->rf is];
raster3=Rasterize[graphic3,ImageSize->is,RasterSize->rf is];
Export["~/Desktop/bayes-optimal1.png",raster1];
Export["~/Desktop/bayes-optimal2.png",raster2];
Export["~/Desktop/bayes-optimal3.png",raster3];

graphic1