Convolution is roughly this:
Apparently blur works by taking the center pixel's color value and summing it with the adjacent pixels' values, weighted based on distance? Something like that.
Where standard blur has the same values at all times, e.g. (25%)(50%)(75%)(CENTER)(75%)(50%)(25%) we would want the values to be variable depending on the value of the center pixel. Thus if center pixel is 255 bright:
But if it's 128 bright then perhaps:
There's probably an optimal drop-off curve for any given brightness; determining that would take experimentation.
And rather than merely sum the adjacent pixels, we'd need to enlighten them realistically. That would also take experimentation.