Thank you Christophe, With your and Arnaud's explanation I grasp how pixels are handled now. I will run a test an give you feedback.
About my expression: The images are WorldView2 and collected over a large period (almost two years). I believe they are already calibrated. I found this equation in a paper by digital globe to correct the solar geometry at the collection time (d = earth-sun distance and e = sun elevation angle), so the images will have more or less the same colors. So basically, a radiometric enhancement. Is this the same as an optical calibration? I took a look at the cookbook and the formula for TOA radiance to reflectance does look similar. I am new to satellite imagery and I just need the end product to be appealing to the eye. (I.e. similar colors) On Apr 28, 2015 10:46 AM, "Christophe Palmann" <[email protected]> wrote: > Hi Gin and Arnaud, > > Sorry for the late reply. > > As Arnaud said in his previous message, images are handled with > n-dimensional row vectors. > > So you can use the 'mlt' or 'dv' operators to perform multiplications > (divisions) between vectors and scalars; the correct expression is simply: > > 1) *im1 mlt d2 dv cose* or * im1 mlt (d2/cose)* > Here, im1 is similar to {pix_from_band1, pix_from_band2, pix_from_band3}. > I think that the second expression is faster. > > 2) the expression *im1 mlt {d2} dv {cose}* is also correct, as I designed > those operators to process 1d vectors as scalars (both for convenience and > to make the operators more robust) > > 3) finally, a solution close to the one of Arnaud is *im1 mult {d2,d2,d2} > div {cose,cose,cose}* > Here, the operators mult and div perform element-wise multiplications > (divisions) between vectors. But *im1 * {d2,d2,d2} / {cose,cose,cose}* is > not correct ! (the multiplication or the division of two row vectors aren't > defined, you must use mlt/dv or mult/div operators). > > Don't forget to define the constants 'd2' and 'cose' with the method > SetConstant if you use the filter, or just provide a txt file to the field > 'import context' if you use the application. You can also define 'my_e', > and use cos(my_e) within the above expressions (*but don't define 'e', > because this constant already exists in muparserx!*), nevertheless it is > better to evaluate cose once and for all. > > Finally, looking at your expression, you really should consider the > OpticalCalibration application, which will do the job faster than BandMathX > :-) > > Christophe. > > > > > Le jeudi 23 avril 2015 14:47:15 UTC+2, Arnaud Durand a écrit : >> >> Gin, >> >> Each pixel of your image is handled as a n-dimensional row vector, with n >> the number of bands in your image. {n1, n2, n3, ...} is the syntax of >> muParserX to declare row vectors that you can fill with scalars assigned by >> band. >> >> Hope it helps. >> Arnaud >> >> Le jeudi 23 avril 2015 14:10:28 UTC+2, GiNN a écrit : >>> >>> Thank Arnaud, >>> >>> And yes, d and e are scalars. In fact, they are constant for the entire >>> image, while the image has three bands. >>> >>> If I understand you correctly, this still counts as a vector >>> transformation? >>> On Apr 23, 2015 7:50 AM, "Arnaud Durand" <[email protected]> >>> wrote: >>> >>>> Hi GiNN, >>>> >>>> I'm not sure that it is possible with such a simple expression, as the >>>> doc said : >>>> >>>> >>>> >>>> *For instance, it is not possible to add vectors of different >>>> dimensions (this implies the addition of a row vector with a column >>>> vector),or add a scalar to a vector or a matrix, or divide two vectors, and >>>> so on...Thus, it is important to remember that a pixel of n components is >>>> always represented as a row vector.* >>>> >>>> However, if you know the number of bands in your image, and if d and e >>>> are scalars, you might try to use vector syntax in your expression like >>>> that : im1*{d^2,d^2,d^2,d^2}/{cos e, cos e, cos e, cos e} >>>> >>>> Arnaud >>>> >>>> Le mercredi 22 avril 2015 21:02:15 UTC+2, GiNN a écrit : >>>>> >>>>> >>>>> I have three-band images and I want to apply the same expression to >>>>> each band and get a three-bad output. >>>>> I am just starting with OTB and Monteverdi. Used installer on a 64 bit >>>>> W7 machine. >>>>> >>>>> The expression is very simple: output_pixel = (input_pixel*d^2)/cos e >>>>> >>>>> I read the cookbook recipe, and concluded BandmahX is what I need. But >>>>> I am not sure how to formulate the expression so that the application goes >>>>> through all pixels in all three bands. >>>>> >>>>> Any assistance is greatly appreciated. >>>>> >>>>> Gin >>>>> >>>> -- >>>> -- >>>> 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/UHugkLOJEmw/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 a topic in the > Google Groups "otb-users" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/otb-users/UHugkLOJEmw/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.
