I propose effective enough method of "Optical flow" algorithm based on tracking
contour points of segmented images.
The description of a method in brief:
- Segmentation of source image;
- Finding the fracture points of contour for each segment;
- Tracking shift of found points in pair of two images
by recognition blocks (integral image, recognition matrix);
- Computing of velocity for each pixel in image by approximation
velocity of tracking points in area for each segment.
Demo version OF_EDV_Demo.zip (2Mb)
Source video sequence
Processing of two adjacent images (visualization: direction - speed -->
colour - brightness):
cvCalcOpticalFlowHS (Horn & Schunck algorithm
Input parameters: cvCalcOpticalFlowHS( Img1, Img2, 0, DxVMap, DyVMap, 0.002, cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,20,0.03));
cvCalcOpticalFlowLK (Lucas & Kanade algorithm)
Input parameters: cvCalcOpticalFlowLK( Img1, Img2, cvSize(11,11), DxVMap, DyVMap);
"Block matching method" (Complete look over in radius 4 pixels, size of blocks 17x17, time of processing of two adjacent images - more than one minute)
Proposed method
Processing of three adjacent images with the subsequent addition of the processed
adjacent velocity maps and then Gaussian smoothing:
cvCalcOpticalFlowHS (Horn & Schunck algorithm)
cvCalcOpticalFlowLK (Lucas & Kanade algorithm)
"Block matching method"
Proposed method
The propose method can be applied to the motion segmentation and detection
of objects in a video sequence: