Hi, On Mon, Aug 10, 2015 at 6:56 PM, remicres <[email protected]> wrote:
> Hi, > > I've just commited a remote module on GitHub wich deals with image mosaics > generation (https://github.com/remicres/otb-mosaic.git). > Provided are mosaicing filters and one application. > All filters support streaming. The application performs the mosaic > generation of multiple images, whith some color/radiometric harmonization > features, and feathering features (Details are provided above*) > > I hope that you will try and enjoy it. Keep me updated about issues ! Feel > free to ask questions, if any. > I tried to setup nightly build for your remote module but didnt work. here is the dasboard output: http://dash.orfeo-toolbox.org/buildSummary.php?buildid=194873 >From first look, you have all code in app folder include .h and .hxx. but otb remote module needs: all library code in src/*.h *.txx ( .txx is because all other modules use it that way. you need to confirm with someone else in the list) all application code in app/ Also please add a file like the below in your git repo. https://github.com/jmichel-otb/GKSVM/blob/master/GKSVM.remote.cmake > > Cheers, > > Rémi > > > > > > * The application: > > - From a given input images list, a mosaic is produced. The pipeline > supports streaming, so there is no restriction on images number or size. > - It implements a color harmonization method explained on our paper: > Cresson R., Saint-Geours N., "Natural Color Satellite Image Mosaicking > Using Quadratic Programming in Decorrelated Color Space"IEEE Journal of > Selected Topics in Applied Earth Observations and Remote Sensing (Volume:PP > , Issue: 99) July 2015 > > <http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=7154397&filter%3DAND%28p_IS_Number%3A4609444%29>. > In brief, it performs the global colorimetric harmonization of overlapping > images in natural colors (i.e. input images must have 3 bands, RGB). You > can set the application parameter "-harmo.method" to "rgb" to use this > feature. However, the global radiometric harmonization can also be > performed on each band individually by setting the application parameter > "-harmo.method" to "band" (it can be useful if the color space is not truly > RGB like raw Spot6/7, or if you want to perform a kind of radiometric > equalized mosaic). Various statistical cost functions can be used (e.g. > rmse) to find a correction model (which is linear with zero-y intercept: > input images are scaled). We have developed a richer harmonization solver, > wich can deal with general linear correction models (i.e. scale, and shift > scale of images) but the maths tools brought by VNL were not sufficient, > and we had to make use of external libraries to make it work (OOQP, > QuadProg++). That is why we brought only simple zero-y intercept (i.e. > scale) correction model in this current module. In future release, I think > we should propose OOQP based (or QuadProg++ based) solver because it is far > more robust than VNL routines (Sometimes VNL's routines throw unexpected > errors, obviously coming from numerical instabilities). Waiting what will > be the OTB framework for third parties... > - As the harmonization method rely of local image statistics, those > must be exempt from perturbations (e.g. clouds, ice, brutal landcover > change between two images, ...). That's why it is possible to input some > vector data to mask valid areas (need one vector data for one input image, > in the same order as appearing in input). > - It is possible to input some vector data for cutline (need one > vector data for one input image, in the same order as appearing in input). > - Another cool feature is the feathering/blending of input images, > which allows to produce seamless mosaics. The current limitation is that we > use a distance map image for each input, computed by > itk::DanielssonDistanceMapImageFilter wich is not a streamable filter. > That's why the current process first generates all distance map images in > temporary .tif files, from resampled input images (the decimation factor > can be set using the "-alphamasks.spacing"). Then, the filters use these > previously computed distance map images to perform the feathering/blending > of the input images. At the moment, 2 feathering methods are implemented > (slim: blends the last image over earlier ones in areas of overlap, on a > given transition distance / large: blends all images on largests possible > overlapping areas) > > We tested the application successfully on big images collections: > RapidEye, France coverage from 2011 (~130 images), Spot6/7, France coverage > from 2014 (~190 images), both with a reasonable processing time. Processing > time is o(n) for both mosaic generation and statistics computation > (n=number of input images pixels). Harmonization problem is solved in o(m) > with m=number of input images (about some milliseconds for a hundred of > input images). > > The filters: > > - otbStreamingMosaicFilterBase: is the base class of all mosaicing > filters > - otbStreamingSimpleMosaicFilter: inherits > otbStreamingMosaicFilterBase, performs simple mosaics with a simple > compositing technique which copies the last image over earlier ones in > areas of overlap > - otbStreamingStatisticsMosaicFilter: inherits > otbStreamingMosaicFilterBase, computes statistics of the input images in > each overlapping areas (e.g. mean of image i in overlap j, for all i and j) > - otbStreamingMosaicFilterWithBlendingBase: inherits > otbStreamingMosaicFilterBase, is the base class for all mosaicing filters > which use a distance map image (feathering filters...) > - otbStreamingFeatherMosaicFilter: inherits > otbStreamingMosaicFilterWithBlendingBase, generates a mosaic with blends > the last image over earlier ones in areas of overlap, on a given transition > distance > - otbStreamingLargeFeatherMosaicFilter: inherits > otbStreamingMosaicFilterWithBlendingBase, blends all images on largests > possible overlapping areas > - otbStreamingMultibandFeatherMosaicFilter: inherits > otbStreamingFeatherMosaicFilter, experimental. Multiband blending of input > image using the laplacian (see Burt & Adelson "A multiresolution spline > with application to image mosaics"). Could use GPU support for gaussian > filtering. One need to fix some issues related to side effects (around no > data pixels of images). > - otbSummingFilter: utility filter which sums input images. > - otbQuadraticallyConstrainedSimpleSolver: is the solver used for > images color/radiometric harmonization. Works only with zero-y intercept > correction models (as explained before). > > We try to make sense of this multilevel inheritance, but it might be > perfectible ! > A possible optimization might be to process every threadedRegion by > subdividing it in multiple smaller regions, in order to loop only on > relevant images: an actual drawback is where the threadedRegion is large, > a lot of input images have to be checked even if they are out of the > region. Another one might be to pre-compute areas where interpolators can > work, instead of checking every processed pixel if the current point is > inside the buffer. > On excellent upgrade would be to strengthen the architecture, and > implements those optimizations in a general way (currently, we have to do > it for each filter... that is why I think this could be better built) > > -- > -- > Check the OTB FAQ at > http://www.orfeo-toolbox.org/FAQ.html > > You received this message because you are subscribed to the Google > Groups "otb-users" group. > To post to this group, send email to [email protected] > To unsubscribe from this group, send email to > [email protected] > For more options, visit this group at > http://groups.google.com/group/otb-users?hl=en > --- > You received this message because you are subscribed to the Google Groups > "otb-users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- Regards, Rashad -- -- Check the OTB FAQ at http://www.orfeo-toolbox.org/FAQ.html You received this message because you are subscribed to the Google Groups "otb-users" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/otb-users?hl=en --- You received this message because you are subscribed to the Google Groups "otb-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
