On Wed, Aug 12, 2015 at 7:58 PM, Rémi Cresson <[email protected]> wrote:
> Hello Rashad, > > Thank you for testing it. > I made the changes you suggest, except I put sources in include folder > (instead of src). > yes that is correct. it was my bad mentioning src if you dont have .cxx in library > I had to read the dashboard output, because it compiled fine on my system > without any error... > I have the new build without errors. But however tests are failing. But that can be fixed easily. Have a look at - http://dash.orfeo-toolbox.org/testDetails.php?test=32229576&build=195008 For doxygen, it is required to mention the ingroup in the header as doxygen comments. Dasboard submission: http://dash.orfeo-toolbox.org/testDetails.php?test=32229575&build=195008 you have test images which is now in test folder. But usually OTB keeps all baseline and example data in OTB-Data repository. So if you could run the test on some images already existing in OTB-Data, I think that would be nice. Also I am not sure about adding new baseline for remote modules which are not official yet. OTB-Data -https://git.orfeo-toolbox.org/otb-data.git > > Waiting for your feedback ! > > Rémi > > > 2015-08-12 17:15 GMT+02:00 Rashad M <[email protected]>: > >> 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 a topic in the >> Google Groups "otb-users" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/otb-users/tXsf0YvarIo/unsubscribe. >> To unsubscribe from this group and all its topics, send an email to >> [email protected]. >> For more options, visit https://groups.google.com/d/optout. >> > > -- > -- > 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.
