A method for producing a video abstract from video produced by a surveillance video camera, the method comprising: retrieving a frame of the video produced by the camera; updating a background frame based at least in part on the retrieved frame; performing a video division process to separate static frames from motive frames containing moving objects, the video division process comprising: retrieving, if it is determined that the retrieved frame is a static frame, a next frame of the video produced by the camera, updating the background frame, and repeating the video division process; and extracting, if it is determined that the retrieved frame is a motive frame containing moving objects, foreground data from the retrieved frame after conversion of the retrieved frame to a signed data type, wherein pixels of the retrieved frame and the foreground data are represented by the signed data type; determining whether an end of the video produced by the camera has been reached; retrieving, if it is determined that the end of the video produced by the camera has not been reached, a next frame of the video produced by the camera, updating the background frame, and repeating the video division process; merging, if it is determined that the end of the video produced by the camera has been reached, the foreground data with the updated background data after conversion of the foreground data and the updated background data to the signed data type, wherein pixels of the updated background data are represented by the signed data type; generating a video abstract with the merged foreground and background data; and wherein the updating of the background frame comprises: allocating memory in a graphics processor unit; copying an initial background frame to the GPU from a central processing unit; copying the retrieved frame of the video produced by the camera to the GPU; allocating processing threads of the GPU based at least in part on the size of the frame of the video; starting a kernel function to update the initial background frame; and copying the updated background frame to the CPU. retrieving a frame of the video produced by the camera; updating a background frame based at least in part on the retrieved frame; performing a video division process to separate static frames from motive frames containing moving objects, the video division process comprising: retrieving, if it is determined that the retrieved frame is a static frame, a next frame of the video produced by the camera, updating the background frame, and repeating the video division process; and extracting, if it is determined that the retrieved frame is a motive frame containing moving objects, foreground data from the retrieved frame after conversion of the retrieved frame to a signed data type, wherein pixels of the retrieved frame and the foreground data are represented by the signed data type; retrieving, if it is determined that the retrieved frame is a static frame, a next frame of the video produced by the camera, updating the background frame, and repeating the video division process; and extracting, if it is determined that the retrieved frame is a motive frame containing moving objects, foreground data from the retrieved frame after conversion of the retrieved frame to a signed data type, wherein pixels of the retrieved frame and the foreground data are represented by the signed data type; determining whether an end of the video produced by the camera has been reached; retrieving, if it is determined that the end of the video produced by the camera has not been reached, a next frame of the video produced by the camera, updating the background frame, and repeating the video division process; merging, if it is determined that the end of the video produced by the camera has been reached, the foreground data with the updated background data after conversion of the foreground data and the updated background data to the signed data type, wherein pixels of the updated background data are represented by the signed data type; generating a video abstract with the merged foreground and background data; and allocating memory in a graphics processor unit; copying an initial background frame to the GPU from a central processing unit; copying the retrieved frame of the video produced by the camera to the GPU; allocating processing threads of the GPU based at least in part on the size of the frame of the video; starting a kernel function to update the initial background frame; and copying the updated background frame to the CPU.