Context
It would be nice to have a function which smooths contours plots once they have been done. There are various solutions which involve smoothing the data before making the contours, but here I am after a solution which operates on the graphics itself.
Example
pl = ContourPlot[
x^2 + y^2 + RandomReal[{-0.1, 0.1}], {x, -1, 1}, {y, -1, 1},
Contours -> 3, PlotPoints -> 3,
ContourShading -> False]
Question
I would like to smooth this contour as post processing.
Attempt
The following seems to work for line contours as above.
Normal[pl] /.
Line[a__] :>
Line[ Transpose@{GaussianFilter[First /@ a, {5, 5}],
GaussianFilter[Last /@ a, {5, 5}]}]
But what about smoothing Shaded contours? I.e. how to I smooth also the polygons? How can it be made to work on, say,
pl = ContourPlot[
x^2 + y^2 + RandomReal[{-0.1, 0.1}], {x, -1, 1}, {y, -1, 1},
Contours -> 3, PlotPoints -> 3,
ContourShading -> True]