In order to describe the proposed algorithm for image interpolation, we first apply it to one-dimensional vectors. Let
X
LR
be a 1×N vector. Suppose we wish to enlarge
X
LR
to a kN sized vector
X
HR
using the following steps: We put k−1 zeros between any two successive entries of vector
X
LR
. In order to achieve these kN−N new entries of
X
HR
, we choose 2M of N entries of
X
LR
. The new value will be a linear combination of these 2M entries.
In order to find the 2M indeterminate multipliers of this linear combination, we should follow the procedure stated below, bearing in mind that for each fixed vector of any size the procedure and the multipliers applied to enlarge the vector are fixed. This means that, the multipliers used for obtaining a 1×N vector from its counterpart are the same as the ones used to calculate a vector from its counterpart.
Step(1-1): As presented in (1) and (2), we down-sample the original vector
X
LR
by a factor of k to find .
Step(1-2): Again we down-sample by a factor of k to obtain vector.
Step(1-3): Now, by constructing vector from vector of size , we can find the multipliers used to obtain the enlarged image. To approach this, we must zero-pad by a factor of k to build vector . This means that, k−1 zeros are inserted between every two successive entries of .
As it was stated earlier, by using these multipliers, we can find a new vector
X
HR
from .
In order to evaluate the enlarged image, we take advantages of the criteria peak signal to noise ratio (PSNR) and Structural SIMilarity (SSIM) [11] by down-sampling the original vector by a factor of k and interpolating it using the proposed algorithm.
down-sample by a factor of k ↓
(2)
down-sample by a factor of k ↓
(3)
Zero padding ↓
(4)
Step(1-4): In order to compute vector from , we must insert a linear combination of ’s; instead of each zero in . For this purpose, we can convolve with an interpolator vector, A (which is determined by (5)).
In this equation, A is a 1×(1 + 2(M−1) + 2M(k−1)) vector. The 1 + (M−1) + M(k−1)st entry, which is located at the middle of the vector, is 1. Except for the mentioned entry, the entries with the indices that are multiples of k are 0, and there are (k−1)ai
″
s and (k−1)
a
i
s between any two successive zeros at the left and right side of the entry 1, respectively which can be calculated by using the proposed algorithm.
In (5), the parameter M can take an optional value which is set to 2 in our experiments. However, by setting M higher than this value, implementation speed decreases while image quality increases.
(5)
In (6), and are known and A is unknown, and there are equations and 2M(k−1) unknown variables. This statement means that, if (6) is to have a solution, must be greater than or equal to 2M(k−1).
Step(1-5): To solve (6), we have the following matrix equation:
(7)
where , and A denotes the interpolator matrix.
Step(1-6): In order to find matrix B, We add (Mk−1) zeros to the beginning and the end of vector to obtain vector .
(8)
where is the i th entry of vector .
Step(1-7): By using , we can find matrix B as follows:
(9)
where B i∗is the i throw of matrix B.
Now, following Step(1-5) and then Step(1-4), we can obtain the multipliers used for image enlargement.
To understand the above algorithm, we can illustrate the above relation with an example in which N=36,K=3,M=2.
Step(1-1):
(10)
Step(1-2):
(11)
Step(1-3):
(12)
(13)