How do I resample an image to a rotated grid? I have an image, I, sampled on a uniform grid: 

$\ x_i = i*\Delta x, y_j = j*\Delta y, $

I need to resample this image to a grid rotated counterclockwise by an angle $\ \theta$ around $\ (x_0,y_0)$:

$\ u_i = i*\Delta u, v_j = j*\Delta v $

$\ x(u_i,v_j) = x_0 + cos(\theta)*u_i - v_j*sin(\theta)$

$\ y(u_i,v_j) = y_0 + sin(\theta)*u_i + v_j*cos(\theta)$

How do I best do this?

I understand that I can e.g. do bilinear interpolation to find I from the 4 (x,y) corners around each $\ (u_i,v_j)$.

However I am not free to choose $\ \Delta u $ and $\ \Delta v $ as I wish.

What is the Nyquist criterion for this rotated grid? 

Am I right in assuming that it will be?:

$\ \Delta u = cos(\theta)*\Delta x + sin(\theta)*\Delta y$

$\ \Delta v = -sin(\theta)*\Delta x + cos(\theta)*\Delta y$
You should read about image transformations. Anyhow, the idea is quite simple:


Compute the inverse transform $T(x,y)$.
For each point $(x,y)$ on the re-sampled grid:


Calculate $T(x,y)$, and find the 4 closest points on the original grid.
Apply interpolation technique (For example, bi-linear) on the neighbors, and put the value in the re-sampled grid.



Some references: 

http://www.cis.rit.edu/class/simg782/lectures/lecture_02/lec782_05_02.pdf
http://www.imageprocessingbasics.com/geometric-transforms/