如何计算 NPP 的图像旋转位移?

How to calculate image rotation shift for NPP?

ippiGetRotateTransform and nppiRotate both take x and y shift parameters but I am unsure how they work. IPP and NPP both rotate around (0, 0) then shift the result. This example shows using ippiGetRotateShift绕中心旋转,但没有说明如何使用。

示例相关部分:

Ipp8u src[4*4] = ...;
Ipp8u dst[6*6];
double xShift;
double yShift;
double xShiftTmp;
double yShiftTmp;
double xCenterSrc = 2.0;  
double yCenterSrc = 2.0; 
double xCenterDst = 3.5;
double yCenterDst = 2.5;
double angle = 35.0;
ippiGetRotateShift ( xCenterSrc, yCenterSrc, angle, &xShift, &yShift );
/* xShift = -0.79 , yShift = 1.51 */
ippiGetRotateShift ( 1.0, 1.0, angle, &xShiftTmp, &yShiftTmp);
xShift += xShiftTmp; yShift += yShiftTmp; 
/* xShift = -1.18, yShift = 2.26 */
xShift += xCenterDst - xCenterSrc;
yShift += yCenterDst - yCenterSrc;
/* xShift = 0.32, yShift = 2.76 */

该示例记录了值更改的内容,但未记录更改方式或原因。甚至目的地中心点也无法解释。为什么是 (3.5, 2.5) 而不是 (3, 3)?

无论如何,x 和 y 偏移参数的行为似乎相同。 如何在不依赖 IPP 的情况下计算 NPP?

好的,计算一下。好像ippiGetRotateShift returns 旋转后P 和P' 的区别。 (P'.x = x - x cos(-角)- y sin(-角);P'.y = y cos(-角)+ x sin(-角))。