Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Single vehicle tracking using Fourier transform-MATLAB

  1. Jun 7, 2015 #1
    I am working on a project which is based on importance of phase only reconstruction of a signal obtained from fft.

    Now ,I have detected vehicles from the Video of Traffic on road taken using stationary camera ( Please download the 1.47 MB video for testing MATLAB Code by ( step1) click on the play button then (step2) right clicking on video then ( step3 ) click on save as option )

    If you run the code in MATLAB, you can observe that I am quite successful in detecting all the vehicles in each video frames. But now I want to do tracking of only one vehicle with changes in my code.


    So can anybody help me how to detect single vehicle by doing changes in my MATLAB Code ?

    Code (Matlab M):
    tic
    clc;
    clear all;
    close all;

    %read video file
    video = VideoReader('D:\dvd\Matlab code\test videos\5.mp4');

    T= video.NumberOfFrames  ;           %number of frames%

    frameHeight = video.Height;          %frame height

    frameWidth = video.Width ;           %frameWidth

    get(video);                          %return graphics properties of video


    i=1;

    for t=300:15:550  %select frames between 300 to 550 with interval of 15 from the video
        frame_x(:,:,:,i)= read(video, t);
        frame_y=frame_x(:,:,:,i);

        %figure,
        %imshow(f1),title(['test frames :' num2str(i)]);
        frame_z=rgb2gray(frame_y);                 %convert each colour frame into gray

        frame_m(:,:,:,i)=frame_y; %Store colour frames in the frame_m array

        %Perform Gaussian Filtering
        h1=(1/8)*(1/8)*[1 3 3 1]'*[1 3 3 1]  ;   % 4*4 Gaussian Kernel
        convn=conv2(frame_z,h1,'same');
       
        g1=uint8(convn);

                   
        Filtered_Image_Array(:,:,i)=g1; %Store filtered images into an array
        i=i+1;
    end

    %Apply 3-D Fourier Transform on video sequences
    f_transform=fftn(Filtered_Image_Array);

    %Compute phase spectrum array from f_transform
    phase_spectrum_array =exp(1j*angle(f_transform));

    %Apply 3-D Inverse Fourier Transform on phase spectrum array and
    %reconstruct the frames
    reconstructed_frame_array=(ifftn(phase_spectrum_array));


    k=i;

    i=1;
    for t=1:k-1

        %Smooth the reconstructed frame of Î(x, y, n) using the averaging filter.
        Reconstructed_frame_magnitude=abs(reconstructed_frame_array(:,:,t));
        H = fspecial('disk',4);
        circular_avg(:,:,t) = imfilter(Reconstructed_frame_magnitude,H);
       

        %Convert the current frame into binary image using mean value as the threshold
        mean_value=mean2(circular_avg(:,:,t));
        binary_frame = im2bw(circular_avg(:,:,t),1.6*mean_value);


        %Perform Morphological operations
        se = strel('square',3);
        morphological_closing = imclose(binary_frame,se);
        morphological_closing=imclearborder(morphological_closing); %clear noise present at the borders of the frames


        %Superimpose segmented masks on it's respective frames to obtain moving
        %objects
        moving_object_frame = frame_m(:,:,:,i);
        moving_object_frame(morphological_closing) = 255;
        figure,
        imshow(moving_object_frame,[]), title(['Moving objects in Frame :' num2str(i)]);

    i=i+1;
    end
    toc
     
    Last edited: Jun 7, 2015
  2. jcsd
  3. Jun 8, 2015 #2
    So my question is that is it possible to
    detect a single vehicle and perform
    tracking of it using Fourier transform ?

    1. Should I 1st detect all the
    vehicles and perform tracking of
    single vehicle from it ?

    or


    2. Is it possible to detect only one
    vehicle and perform tracking from
    it ?
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook




Similar Discussions: Single vehicle tracking using Fourier transform-MATLAB
Loading...