%ffp Title :"Bilateral filter" Filename :"bilateral.8bf" Description:"Bilateral blur filter." Copyright :"© 2008 GPL" Author :"Alois Zingl" Version :"1.0 August 2008" URL :"http://members.chello.at/easyfilter/gauss.html" Category :"easy.Filter" ctl(0):"Spacial blur (pixels)",divisor=10,range=(1,500),val=20 ctl(1):"Range blur (values)",divisor=2,range=(1,500),val=40 SupportedModes: RGBMode, RGB48Mode OnFilterStart: { double s = ctl(0)/((doingProxy?zoomFactor:1)*7.4)+0.9; // Photoshop equivalent isTileable = !doingProxy; needPadding = fmin(256.0, s*sqrt(log(256.0)/log(2.0))); // radius bandWidth = 100+4*needPadding; // spacial Gaussian bell shape s = -1.0/(s*s); for (i = 0; i < needPadding; i++) put((int)(256.0*exp(i*i*s)), i); s = ctl(1)/((doingProxy?zoomFactor:1)*1.48)+0.9; // range Gaussian (pixel value) s = -1.0/(s*s); for (i = 0; i < 256; i++) put((int)(256.0*exp(i*i*s)), i+256); return false; } ForEveryTile: { int Blur = needPadding-1; // blur box radius int x, y; if (updateProgress((1-doingProxy*2)*y_start+y_end,(doingProxy?y_end-y_start:Y)*2)) abort(); // vertical blur... for (x = x_start; x