From: Friedmann Y. <Y.F...@sw...> - 2012-05-02 13:30:44
|
Hello, I have an image, vil_image_view<vxl_uint_32> src_im(1000,1000,1); I need the image which is sqrt of this image. vil_math_sqrt(src_im) gives me rounded numbers (because it has the same type...) is there a way to cast my image to, say, float, without rounding, in one go,so that I can then take the sqrt? many thanks! yasfried |
From: Ian S. <sc...@im...> - 2012-05-02 14:09:11
|
vil_convert_cast On 02/05/2012 14:30, Friedmann Y. wrote: > Hello, > > I have an image, > vil_image_view<vxl_uint_32> src_im(1000,1000,1); > > I need the image which is sqrt of this image. > > vil_math_sqrt(src_im) gives me rounded numbers (because it has the same > type...) > > is there a way to cast my image to, say, float, without rounding, in one > go,so that I can then take the sqrt? > > many thanks! > > yasfried > > > > > ------------------------------------------------------------------------------ > Live Security Virtual Conference > Exclusive live event will cover all the ways today's security and > threat landscape has changed and how IT managers can respond. Discussions > will include endpoint security, mobile security and the latest in malware > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > > > > _______________________________________________ > Vxl-users mailing list > Vxl...@li... > https://lists.sourceforge.net/lists/listinfo/vxl-users |
From: Ian S. <sc...@im...> - 2012-05-02 15:50:32
|
yasfriedm, vil_convert_cast performs the standard minimal rounding that gets performed when ever you cast numeric type A to numeric type B. In the case of a 32-bit int cast to float, this will give you identical numbers for values with magnitude less than about 1/FLT_EPS. But if you do have a a large number, that isn't perfectly representable within the precision of a float, then rounding is unavoidable. I'll remove the bracketed rounding comment to avoid ambiguity. Ian. On 02/05/2012 15:17, Friedmann Y. wrote: > thanks! I did look at it but the documentation says > " > //: Cast one pixel type to another (with rounding). > // There must be a cast operator from inP to outP > // > // If the two pixel types are the same, the destination may only be a > shallow > // copy of the source. > // \relatesalso vil_image_view > template <class inP, class outP> > inline void vil_convert_cast(const vil_image_view<inP >&src, > vil_image_view<outP >&dest) > { > if (vil_pixel_format_of(inP()) == vil_pixel_format_of(outP())) > dest = src; > else > vil_transform2(src, dest, vil_convert_cast_pixel<inP, outP>()); > } > " > |