The super resolution model is as such: Y_k = DHFX + N , where Y_k is one of the N measured low resolution image, D is the Decimation Matrix, H is the blur matrix , F is the warp matrix, N is the noise and X is the high resolution image. Lets say the X is [L *L] or we can say [L^2 * 1], F is [L^2*L^2], and H is [L^2*L^2] and D is [M_k^2*L^2] where M_k is the size of Y. In the super resolution problem we need to find X but for that we need to find the F(warp matrix). The shifting is done to get the sub pixel information as far as I understand. I am also able to find the [3*3 ] warp matrix which transform the coordinate space but that is not required. So if anyone can help me to find the F matrix. Thank you

  • $\begingroup$ it was better to put your comment in the comment section! I taught you meant " can move over the coordinate system". $\endgroup$ – Mohammad M Aug 16 '17 at 20:58
  • $\begingroup$ i need you to explain more about your question. I don't get it what a projective transform (your 3*3 matrix) got to do with super-resolution algorithms. $\endgroup$ – Mohammad M Aug 16 '17 at 21:00
  • $\begingroup$ The equation Y=DHX is a model for signal sampling where H is a operator for a low-pass filter or anti-aliasing filter and D maps the filtered signal to a lower dimension space in other words sample the signal (images are 2D extension of signals). $\endgroup$ – Mohammad M Aug 16 '17 at 21:12
  • $\begingroup$ so you want to reconstruct a super resolution image using multiple low resolution image from different view. $\endgroup$ – Mohammad M Aug 18 '17 at 10:50

If H is representation of shift invariant operator then its a convolution operator. If you are implementing your algorithm in MATLAB, there is a intrinsic function with name convmtx2 which exactly do what you want.

Algorithms which warp image don't use a linear operator (a matrix) to do the job (considering large size of this operator it's not practical, even it was practical it's not an efficient method). They usually find the coordinates of warped image which generally don't match the pixel coordinates of original image then obtain pixel values using some interpolation method like nearest neighbor or bi-linear to obtain the pixel value from its neighbors.

If you want to do it by using a linear operator you have to choose an interpolation method then find the transformed coordinates and compare them to the original coordinates, then find the pixel weights regarding the interpolation method and store these weights in their corresponding location in the matrix (in nearest neighbor method give weight 1 for the nearest pixel and zero for others, in bi-linear method 4 non-zero weights for 4 pixel which are around the transformed coordinate and zero for other pixels).

Good luck.


Hey mohammad its not convolution , with the 3*3 matrix we multiply it to the original coordinate axes to get the new coordinate axes.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.