A method for upscaling an input image, comprising - dividing the input image into overlapping patches; - normalizing the patches and - transposing and/or flipping at least some of the normalized patches to obtain transposed and/or flipped normalized patches that according to predefined orientation characteristics all have the same orientation, wherein transposed and/or flipped normalized patches are obtained; and for each transposed and/or flipped normalized patch, - determining a nearest neighbor patch among centroid patches of a plurality of trained clusters, and determining an upscaling projection matrix associated with the determined nearest neighbor patch; - applying the determined upscaling projection matrix to the respective current transposed and/or flipped projected normalized patch, wherein a transposed and/or flipped upscaled normalized patch is obtained; - applying inverse transposing and/or inverse flipping and de-normalizing to the upscaled normalized patch, according to said transposing and/or flipping and normalizing of the respective patch, wherein upscaled patches are obtained; and - assembling the upscaled patches to obtain an upscaled image, wherein the upscaled patches overlap wherein the transposed and/or flipped normalized patches that all have the same orientation are obtained by performing, for each patch of the input image: - storing normalization information used in the normalizing ; and - projecting the normalized patch to a 2-dimensional value or value pair, the 2-dimensional value being used in said transposing and/or flipping the normalized patch to said orientation, wherein a transposed and/or flipped normalized patch is obtained, and - storing corresponding transpose/flipping instructions; and wherein, in determining a nearest neighbor patch among centroid patches of a plurality of trained clusters, the centroid patch and the associated upscaling projection matrix result from a training process; and wherein said applying inverse transposing and/or inverse flipping and de-normalizing to the upscaled normalized patch is done according to the respective transpose/flipping instruction and normalization information. - dividing the input image into overlapping patches; - normalizing the patches and - transposing and/or flipping at least some of the normalized patches to obtain transposed and/or flipped normalized patches that according to predefined orientation characteristics all have the same orientation, wherein transposed and/or flipped normalized patches are obtained; and - determining a nearest neighbor patch among centroid patches of a plurality of trained clusters, and determining an upscaling projection matrix associated with the determined nearest neighbor patch; - applying the determined upscaling projection matrix to the respective current transposed and/or flipped projected normalized patch, wherein a transposed and/or flipped upscaled normalized patch is obtained; - applying inverse transposing and/or inverse flipping and de-normalizing to the upscaled normalized patch, according to said transposing and/or flipping and normalizing of the respective patch, wherein upscaled patches are obtained; and - assembling the upscaled patches to obtain an upscaled image, wherein the upscaled patches overlap - storing normalization information used in the normalizing ; and - projecting the normalized patch to a 2-dimensional value or value pair, the 2-dimensional value being used in said transposing and/or flipping the normalized patch to said orientation, wherein a transposed and/or flipped normalized patch is obtained, and - storing corresponding transpose/flipping instructions; <EOS>