An image processing apparatus that processes at least part of an input image, comprising: an image acquiring unit configured to acquire an input image; an object specifying unit (12, 15) configured to extract control points (401A-401D) that characterize the shape of an object that is included in the input image and is to be processed; and a map storage unit in which a shift amount map (201; 1001), which is a grid of numerical values representing shift amounts of pixels in a two-dimensional plane, is stored, said shift amount map having shift amount peaks indicating a predetermined shape; a shift direction setting unit (14, 15) configured to set a direction in which a pixel of the object is to be shifted, by setting a target point or target line in the input image, wherein the shift amount map further includes coordinates of a point or a line that corresponds to the respective target point or target line in the input image, characterized by a map morphing unit configured to morph the shift amount map (201; 1001) according to the shape of the object to be processed by changing the size of the map in X and Y directions so that the size of the predetermined shape defined by the shift amount peaks matches in X and Y directions the size of the object defined by the positions of the control points (401A-401D); and an image morphing unit configured to align the morphed shift amount map with the object to be processed, by using the target point or the target line, and to change the resolution of the morphed shift amount map so that it matches the resolution of the input image and wherein the image morphing unit is further configured to determine a shift amount for the respective pixels of the input image to which a shift amount has been assigned based on the aligned morphed shift amount map and, for each of the pixels being processed, to acquire the pixel value of the pixel located at a distance corresponding to the determined shift amount of the pixel being processed in the set shift direction, and to use the acquired pixel value as the pixel value of the pixel being processed. an image acquiring unit configured to acquire an input image; an object specifying unit (12, 15) configured to extract control points (401A-401D) that characterize the shape of an object that is included in the input image and is to be processed; and a map storage unit in which a shift amount map (201; 1001), which is a grid of numerical values representing shift amounts of pixels in a two-dimensional plane, is stored, said shift amount map having shift amount peaks indicating a predetermined shape; a shift direction setting unit (14, 15) configured to set a direction in which a pixel of the object is to be shifted, by setting a target point or target line in the input image, wherein the shift amount map further includes coordinates of a point or a line that corresponds to the respective target point or target line in the input image, characterized by a map morphing unit configured to morph the shift amount map (201; 1001) according to the shape of the object to be processed by changing the size of the map in X and Y directions so that the size of the predetermined shape defined by the shift amount peaks matches in X and Y directions the size of the object defined by the positions of the control points (401A-401D); and an image morphing unit configured to align the morphed shift amount map with the object to be processed, by using the target point or the target line, and to change the resolution of the morphed shift amount map so that it matches the resolution of the input image and wherein the image morphing unit is further configured to determine a shift amount for the respective pixels of the input image to which a shift amount has been assigned based on the aligned morphed shift amount map and, for each of the pixels being processed, to acquire the pixel value of the pixel located at a distance corresponding to the determined shift amount of the pixel being processed in the set shift direction, and to use the acquired pixel value as the pixel value of the pixel being processed.