1. A method of video coding comprising: receiving a video image having a plurality of pixels; selecting a plurality of Gaussian models for each pixel in the plurality of pixels in the image; classifying each pixel as a background pixel or foreground pixel based on the probability of the model that the pixel fits best; dividing the image into M×M pixel blocks; comparing for each block the motion pixels in the current frame with motion pixels in the previous frame to determine if the number of pixels with motion change is greater than a first threshold; triggering a counter for a block if the number of pixels with motion change is greater than the first threshold; determining if an accumulated count in the counter in a first predetermined period of time is larger than a second threshold; ignoring all motion in a block if the accumulated count in the counter in a first predetermined period of time is larger than the second threshold; tracking objects in the image; determining if an object is always moving locally by detecting if an object is always moving within a predetermined distance and changing the direction of moving frequently for a second predetermined period of time; removing an object from classification as an object if the determining step determines that an object is always moving locally; ignoring the motion of an object if the determining step determines that an object is always moving locally and marking the area that the object moves within as a noisy area on a noise mask buffer; updating background models based on motion detection and noise filtering; updating a current background image; updating an evolving background image; and coding the current background image, background update blocks and objects for transmission.