I have an assignent where i need to recreate the nearest neighbor interpolation function from scratch in python. I just started the language a few days ago so i'm trying to write every little steps to achieve that. This is my first try to solve it :) The reasoning behind it is **(for a given image and a scale of 0.5 for example)** to scale the positions X and Y of the original image to X' and Y' like this: Shape of the given image : 10x10. I want to scale it to 5x5 **(this is a downscaling)** **X and Y positions before scaling** X=[0,1,2,3,4,5,6,7,8,9] Y=[0,1,2,3,4,5,6,7,8,9] **X and Y positions after scaling** X'=[0,2.25,4.5,6.75,9] Y'=[0,2.25,4.5,6.75,9] **rounded** X'=[0,2,5,7,9] Y'=[0,2,5,7,9] Then i look up the pixels from the original image using those positions I dont know if this make sense or i'm missing something **My code** (the way i named my variables is not so great) ``` def interpolation_nn(image, scale): # saving the type of the image dtype = image.dtype #Adding padding to the image img_p = np.pad(img.astype(np.float32), 1) # Calculation of the size of the original image and of the interpolated image #Original img height,width = img.shape #interpolated image Scaled_width = np.floor(width * scale) Scaled_height = np.floor(height * scale) # Calculation of pixel coordinates in the interpolated image Scaled_X_coordinates=np.linspace(0.0, width, num=Scaled_width) Scaled_Y_coordinates=np.linspace(0.0, height, num=Scaled_height) #rounding my positions Scaled_X_coordinates=np.around(Scaled_X_coordinates) Scaled_Y_coordinates=np.around(Scaled_Y_coordinates) Scaled_X_coordinates_Matrix, Scaled_Y_coordinates_Matrix = np.meshgrid(Scaled_X_coordinates,Scaled_Y_coordinates , indexing='ij') finalMatrix=??? #edited for a in Scaled_X_coordinates_Matrix.astype(int) : column = [image[a-1,b-1] for b in Scaled_Y_coordinates_Matrix.astype(int)] finalMatrix.append( column ) #Does not work #returning a new matrix with the same type as the given img return finalMatrix.astype(dtype) ``` I have no idea how to look up into the pixels of the original image to recreate the new one having the new scaled positions. If something is unclear, please ask:)

... View more