(I originally posted this on DSP Developer's Network, apparently wrong place)
Hi-
I am trying to utilize the DM648 VICP Affine Transform function (v3.3 VICP library) for a product. It seems that a single value of QSHIFT is used for both the matrix coefficient generation and the resulting transformed coordinates. Hence, as SPRUGJ3E suggest, there are conflicting desires for QSHIFT--the integer portion must be enough bits to represent all of the transformed coordinates (e.g., 10 bits min for a 640x480 image with Scale=1), but the fractional portion must be large enough to not overly quantize the matrix coefficients. In SPRUGJ3E, a value of 3 for QSHIFT is recommended.
However, a value of 3 for QSHIFT results in quantization of pi/16 for the angle of rotation! And quantization of 1/8 for scales! (that is, the matrix values themselves can only take on values of 0, +/-1, +/-2.... +/-8 as the angle goes from 0 to 360, or the scale goes from 0 to 1). This is unacceptable in our application (we want to use the Affine Transformation for subtle alignment and gain correction between multiple cameras), and I'm guessing in most every application for Affine Transformation. A much better implementation would have been to provide 2 "QSHIFTS", one for the matrix coeffs, and another for the transformed X and Y prior to interpolation.
So, my question is: Am I missing something here? Some hidden parameter(s)? If not, has this been addressed in some newer version of VICP library? If not, can I get advice on how to implement this change and rebuild the VICP library?
Thank you in advance, and best regards,
Jim