A motion prediction method, comprising: determining a plurality of candidate units corresponding to a current unit of a current frame, wherein the candidate units comprise at least a neighboring unit of the current unit, a first reference unit which is within a collocated unit of the current unit, and a second reference unit neighboring to the collocated unit of the current unit; wherein the collocated unit has the same location in a reference frame as that of the current unit in the current frame; characterized by identifying a subset of highest ranking motion vectors among a plurality of scaled motion vectors of the candidate units according to a selection order, wherein the selection order is determined by • calculating for each candidate unit a plurality of motion difference values between the scaled motion vector of the candidate unit and previously decoded motion vectors of a plurality of coded units corresponding to the current unit; • summing the motion difference values according to a series of weights to obtain a plurality of weighted sums respectively corresponding to the candidate units, wherein the weights are determined based on shape and position of the current unit; and; • ranking the scaled motion vectors according to the weighted sums of the corresponding candidate units; selecting a motion vector predictor for motion prediction of the current unit from the identified subset of the highest ranking motion vectors for encoding or decoding the current unit, wherein a top-left corner of the second reference unit is overlapping with a lower-right corner of the collocated unit. determining a plurality of candidate units corresponding to a current unit of a current frame, wherein the candidate units comprise at least a neighboring unit of the current unit, a first reference unit which is within a collocated unit of the current unit, and a second reference unit neighboring to the collocated unit of the current unit; wherein the collocated unit has the same location in a reference frame as that of the current unit in the current frame; characterized by identifying a subset of highest ranking motion vectors among a plurality of scaled motion vectors of the candidate units according to a selection order, wherein the selection order is determined by • calculating for each candidate unit a plurality of motion difference values between the scaled motion vector of the candidate unit and previously decoded motion vectors of a plurality of coded units corresponding to the current unit; • summing the motion difference values according to a series of weights to obtain a plurality of weighted sums respectively corresponding to the candidate units, wherein the weights are determined based on shape and position of the current unit; and; • ranking the scaled motion vectors according to the weighted sums of the corresponding candidate units; • calculating for each candidate unit a plurality of motion difference values between the scaled motion vector of the candidate unit and previously decoded motion vectors of a plurality of coded units corresponding to the current unit; • summing the motion difference values according to a series of weights to obtain a plurality of weighted sums respectively corresponding to the candidate units, wherein the weights are determined based on shape and position of the current unit; and; • ranking the scaled motion vectors according to the weighted sums of the corresponding candidate units; selecting a motion vector predictor for motion prediction of the current unit from the identified subset of the highest ranking motion vectors for encoding or decoding the current unit, wherein a top-left corner of the second reference unit is overlapping with a lower-right corner of the collocated unit.