Video sequences require large memory space for storage and wide bandwidth for transmission. Different methods and standards have been used for the mentioned applications. Two main strategies for this purpose are block matching algorithms (BMA) and mesh based methods. Each of these strategies has its own strengths and weaknesses. In block matching techniques it is assumed that pixels of block move to a new location without losing their integrity as block. Therefore, block matching algorithms are not capable of dealing with rotations, zoom-ins and zoom-outs. But BMA’s produce small errors and require smaller bandwidths. In mesh based algorithms a frame is partitioned into, for instance, non-overlapped right angle triangles. Then by using the motion vectors of the three vertices of the triangle we can reconstruct the displaced triangle. By doing so, the zoom-in or zoom-out situations can be realized. Also, rotations can be modeled. This gives the mesh based methods the advantage of distinguishing complex movements and reconstructing better quality images with no blocking effects. But, on the down side, these methods produce larger errors. In this thesis an algorithm is presented which adaptively uses the two mentioned strategies. Initially a uniform triangular mesh is superimposed on the current frame of the sequence. Then the locations of the nodes are identified on the frame. A block is placed around each node, with the node being at center of the block. The motion vector of each node is found using the observed motion of its corresponding block. When two objects are passing each other in a frame, a part of the mesh and its triangles are located at the boundaries of the two objects. These boundary elements can cause large errors and require special care. A voting mechanism can identify the boundaries. If two of the three motion vectors are going in a specific direction and the third vector has a different path then boundary can be declared. On the other hand if all three motion vectors of the three vertices have the same general direction then it reveals a movement that is similar to a block movement. Under these conditions we can move the triangle using a translation. This situation occurs when we have a stationary background and the mesh triangle is located in the background or it can occur when the triangle is located inside a moving object. A third situation occurs when each of the vertices is moving in a different direction. This condition is an indication of one of the three situations. If all three vertices are pointing towards a single point it means that t