I am looking for a kernel acting as a low pass filter that satisfies these conditions:

$$K(-\mathbf{u})=K(\mathbf{u}) \tag{1}$$
$$K(\mathbf{u}) \ge K(\mathbf{v}), \;\; \text{if} \;\; |\mathbf{u}|&lt;|\mathbf{v}|, \;\; \text{and} \;\; \lim_{|\mathbf{u}|\rightarrow\infty} K(\mathbf{u})=0  \tag{2}$$
$$\int K(\mathbf{x})d\mathbf{x} = 1 \tag{3}$$

In the reference paper, the author suggested a Gaussian kernel that is:

$$K_\sigma(\mathbf{u})=\frac{1}{\left(\sqrt{2\pi}\sigma\right)^n}e^{-|\mathbf{u}|^2/2\sigma^2} $$

with a scale parameter $\sigma &gt; 0$.

The Gaussian kernel is very good at approximating the required properties. But the kernel reduces edge information when the kernel size is large. 

Could you suggest to me any kernel that can satisfy the three conditions above, and is more robust than Gaussian in noise reduction, while maintaining edge information? I found a modified kernel, but it was very difficult to implement. Thank you so much. 


Question: How do I set up multiple printing defaults for one printer?
Answer: I have three CUPS print queues configured with the same printer URI. Queue "deskjet" is configured with my local standard paper, queue "Legal" is configured with "Legal" size paper, and queue "Envelopes" is configured for #10 Envelopes. "Legal" and "Envelopes" queues are stopped (via cupsdisable). 

First, add the queue in CUPS  (http://localhost:631), then use Administration->Modify Printer to change the paper type and other characteristics.

I use my setup like this:

# print to the Envelope queue ( select Envelope queue in your app)
envelope .envelope/addresses/Friend4 | lpr -PEnvelope 
cupsdisable deskjet
# remove regular paper, load envelopes
cupsenable Envelope
# wait until envelope is printed, then
cupsdisable Envelope
cupsenable deskjet