From: Nicolas B. <nic...@en...> - 2006-05-08 23:13:47
|
Peter, Actually I've implemented four kinds of border extensions, vil_border_constant, vil_border_geodesic, vil_border_reflect (symmetry w.r.= t. the closest edge, I guess this is what you are talking about) and vil_border_periodic (the right edge is linked to the left one and the botto= m one to the top one, like a "double" torus). I could not think of other very common ones. Thanks, -- Nicolas On 5/8/06, Peter Vanroose <pet...@ya...> wrote: > > Nicolas, > > I like the idea very much! It's a nice, modular design. > I would say, go ahead with it in CVS vxl. > > (I'm thinking of yet another typical border extension method: > use reflected values, i.e., the border acts like a mirror.) > > -- Peter. > > > > > |
From: Harry L. V. <hl...@st...> - 2006-05-09 03:08:12
|
Very nice. FWIW, here is an obscure boundary condition that I implemented once, that reduces attenuation and visual artifacts near the border of an image when convolved with a smoothing filter. It makes no assumptions about pixel values beyond the border, and does not give more weight to border and corner pixels like "geodesic" does. It is equivalent to truncating the convolution kernel so that it does not overlap border pixels, while renormalizing it to avoid attenuating image intensity. It can be implemented efficiently by convolving using vil_border_constant(0), and then rescaling the resulting image pixels at points where the kernel hung off the edge. The scale factor is the ratio of the integral of the entire kernel over that integral over the kernel which overlaps the image at that point. That value will be a constant for most of a row or column. For example, if the original kernel is the 3x3 array [1 1 1; 1 2 1; 1 1 1] the normalization factors for each image pixel would be: 10/5 10/7 ... 10/7 10/5 10/7 1 ... 1 10/7 ... 10/7 1 ... 1 10/7 10/5 10/7 ... 10/7 10/5 I think this approach only make sense for positive valued (non-differencing) filters though. It's not something to be added to the existing framework; though vil_convolve* could recognize 'vil_border_none' as a special case. I just thought I'd mention it in case it's of interest to anyone. --Harry Nicolas Burrus wrote: > Peter, > > Actually I've implemented four kinds of border extensions, > vil_border_constant, vil_border_geodesic, vil_border_reflect (symmetry > w.r.t. the closest edge, I guess this is what you are talking about) > and vil_border_periodic (the right edge is linked to the left one and > the bottom one to the top one, like a "double" torus). I could not > think of other very common ones. > > Thanks, > > -- > Nicolas > > On 5/8/06, *Peter Vanroose* <pet...@ya... > <mailto:pet...@ya...>> wrote: > > Nicolas, > > I like the idea very much! It's a nice, modular design. > I would say, go ahead with it in CVS vxl. > > (I'm thinking of yet another typical border extension method: > use reflected values, i.e., the border acts like a mirror.) > > -- Peter. > _________________________________________________________ Harry L. Voorhees, hl...@st..., 978-475-5279 Stellar Science Ltd. Co., www.stellarscience.com "Stellar Scientific Software Solutions" |