SlideShare ist ein Scribd-Unternehmen logo
1 von 20
1

ECE 565 Computer Vision and Image Processing
               Spring 2010
         Computer Assignment # 2




       Block Matching Based
      Motion Prediction Method



         By
              Dhawal Subodh Wazalwar
              A20249257
              ECE Dept
              Illinois Institute of Technology
              Due date 30th April 2010




                                                     1
Block Matching Based Motion Estimation
1. Introduction

                The main aim of the Block Matching(BM) Motion Estimation is to compare images taken at two
different time frames and estimate the direction of motion taken place between the two frames. Here, the challenge
is to get the best motion vector by using a pixel domain search method and proper manipulation of BM parameters.
        Fig 1.1 tries to demonstrate the basic concept of block matching motion estimation. Here, two blocks
Reference and Target Block are shown and the Target block is the translated version of Reference block. The key
aspect in this method is how accurately can we estimate motion direction with appropriate Motion Vectors

                                                       Column


                                           i,j

                                                 i+v1,j+v2
                              Row




                                                 Reference Block at i,j
                                                 Target Block at i+v1,j+v2
                                                 Direction of Motion Vector
                                      v1,v2      Motion Vector Magnitude

                                    Fig 1.1 Basic Understanding of Block Matching

        Any BM Motion Estimation method needs following parameters to be selected beforehand :

    •   The Matching Criteria
               Various metrics like Sum of Absolute Differences(SAD),Mean Square Error(MSE). Mean Absolute
        Difference(MAD) can be used for quantitatively proving that the two blocks in comparison are matching.
        Here, in this implementation SAD is used which is represented as




        where,
                 It+1(i,j) -----> Target Frame
                 It (i,j) -----> Reference Frame
                 k,l        -----> The block location
                 N          -----> Block size
                 [v1;v2] ----> Motion Vector for that block

   •    Search Strategy
           The search strategy influences the quality of Motion Field and also the overall computation time as
           demonstrated in later parts. There are various search strategies like Full Exhaustive Search, 3-point
           Search, Cross Search Method and many more versions of it. In this implementation, we have used full
           exhaustive search method.

                                                                                                                2
•   Search Window and Block Size
    The Block size(N) is the size of the block of target and reference frame to be compared for estimating the
    motion vectors. On the other hand, Search Window(M) is the resolution for which the search over the block
    is done.

2. Algorithm

    2.1 Implementation Steps
    Flow chart in Fig 2.1 shows the important steps in the Full Exhaustive Search Block Matching Motion
    Estimation Method.


                                       Reference Image             Target Image



                                               Initialize N,M,th



                                      Select the appropriate
                                     Target block It+1(i,j) of NXN




                               Yes                   No        Reference
                Calculate                 Checked                                      Calculate
                                           for all                 Block
                 SAD(0)                   Motion                                         SAD
                                          vectors             It(i+v1,j+v2)




                   Is                                                          No          Is
             SAD(v)>SAD(0)                                                                SAD
                -th*N*N                                                                   min
                                     No
               Yes                                                                           Yes

                 Motion                                                                 Store
                Vectors =0                                                          Motion Vectors




                  Display                     Assign block
                                                                              Determine
                  Motion                         In the
                                                                               DFD,FD
                   Field                    Predicted Image

          Fig 2.1 Flow Chart showing the Implementation steps for Full Exhaustive BM Method


                                                                                                            3
2.2 Key Aspects and Findings in the Algorithm Implementation

•   If the block size is not multiples of the Frame size,we get the problem of addressing pixels outside the
    frame. In such cases, here, we restrict the block size to the the last boundary( i.e row and col value) when 'v'
    addresses outside the frame boundary. On the other hand, when it addresses pixels before the boundary, it is
    restricted to the start position i.e '1'.
•   Also, in some cases the motion vector v=[v1;v2] can also cause the same addressing problem. In this
    situation, we put a condition and check for such cases. If this situation is detected, we ignore that motion
    vector and carry on for the next motion vector. The reason for doing this is, we can estimate motion
    happening inside the frame, not outside the frame. So, there is no harm in ignoring the motion vectors
    addressing outside the frame.
•   Displaced Frame Difference(DFD) and Frame Difference(FD) is obtained by
    DFD= ∑(abs(Estimated Frame – Target Frame)),
    FD = ∑(abs(Reference Frame – Target Frame))
•   We get negative values for DFD and FD. So, for proper display we need to map those negative values in the
    positive domain. So, we find the minimum value for DFD and FD frame and simply add the absolute of that
    value respectively to get the proper DFD and FD frame. Another way of doing this is converting both the
    frames in 'uint8' form but in this case all the negative values become '0' and we lose the exact pattern in
    DFD and FD frames. So, the former method of adding the absolute of minimum value serves the purpose
    and helps getting better display results.
•   The threshold condition used for detecting the most appropriate motion vector is
                 SAD(v')<SAD(0) – th*N*N
                 where N is block size, th is the threshold value given initially
•   The Total SAD is calculated by adding the minimum SAD values for each block.
•   A check for getting the number of iterations performed and also the time required for the entire analysis is
    also added.

3. Experimental Results

    The algorithm determines the motion vectors, predicted image and displays motion vector field, Displaced
    Frame Difference(DFD),Frame Difference(FD) along with the predicted Image.

    3.1 Analysis on Example Image 1:
    Case 1: Block size NXN=16X16, Search Window M=16,Threhold=0
    The results are shown below in Figure 3.1 to 3.4




                                           Fig 3.1 Reference Image

                                                                                                                  4
Fig 3.2 Target and Predicted Image for Example 1 with N=16,M=16,th=0




                           Fig 3.3 FD and DFD for the Image 1 with N=16,M=16,th=0

       Now, finally the most important of all Motion Vector Field is shown below in Fig 3.4




             Fig 3.4 Motion Vector Field showing the estimated motion direction for N=16,M=16,th=0
        Here, in this motion vector field diagram, we can see that it clearly shows the motion for the displacement
of face and shoulder part, while the random fields near the boundary are for the background part which has Camera


                                                                                                                 5
effect and is not a part of actual motion displacement.

       Note: The Direction shown is for the motion from Predicted ie Target Image to the Reference Image since
       the algorithm tries to find the target block in the reference block translated by the appropriate motion vector.
       Also, if we see the reference and the target image, we can see that actual information is approximately in
       the following region:
       Face: Row 15:100, Column 50:150
       Shoulders: Row 95:144, Column 1:176
       So ideally, we should have motion vectors at the following coordinate range shown in the Figure 3.5




                                     Fig 3.5 Range of Ideal Motion Vector Field

So by changing the threshold value, we can neglect the unwanted motion vectors which came because of the
background random motion, which we need not consider.

Case 2: Block size NXN=16X16, Search Window M=16,Threshold=0.5
The results for Case 2 are shown in Fig 3.6 and 3.7




                                 Fig 3.6 Predicted and DFD for N=16,M=16,th=0.5


                                                                                                                     6
Motion Vector Field
                                                             Columns
                            1     2       3      4      5       6      7      8      9      10    11
                        0


                        1


                        2


                        3


                        4
                 Rows




                        5


                        6


                        7


                        8


                        9




                                Fig 3.7 Motion Vector Field for Image 1 with N=16,M=16,th=0.5

We can see in Fig 3.7, we get better Motion Field Representation than obtained in Fig 3.4 for Case 1.
Also, after comparing the Reference and Target Image in Fig 3.1 and 3.2 , it was found that the max displacement
in any direction is not more than 5-6 pixels approximately. This was determined by using 'pixval' command in
Matlab and finding the displacement at key positions in Image like Person's Face, Eyes and other such features
visible. Therefore, in optimal Motion field matrix, we can expect max absolute value to be not more than 5-6 in this
case. So here in Case 2 with th=0.5, although we see almost expected Motion Vector, after checking matrix values,
we find that max absolute value here is 8. So, th=0.5 is not the optimal threshold.

Note: Here, one important observation can be made regarding 'Search Range' M. As mentioned above, max
displacement was approximately found to be 5-6. So, if we give search range less than this value(say M=4), it
would be interesting to see the Motion Field, shown in Fig 3.8




                                        Fig 3.8 Motion Vector Field for N=16,M=4,th=0.5

                                                                                                                  7
If we compare direction of motion vectors in Fig 3.7 and Fig 3.8, we can see the difference, in that for th=4, we
don't get the expected direction. Also in this case, Total SAD=86609 as compared to 67616 for N=16,M=16,th=0.5.
Therefore, we should always keep Search Range M greater than the absolute of maximum displacement
between Reference and Target Image to get the accurate motion estimation direction.
        So, after continuing the changes in the threshold value, it was found that we get better possible motion
vector field when threshold value is in the range of 1.5 to 2, and it was found that the best results were seen at
th=1.7, after which there was not much change in the motion field.

Case 3: N=16,M=16,th=1.7
      Predicted ,DFD images and the corresponding Motion Vector Field are shown in Fig 3.9 and Fig 3.10




                                Fig 3.9 Predicted and DFD Image for N=16, M=16, th=1.7

                                                 Motion Vector Field
                                                        Columns
                            1   2      3     4      5      6      7      8      9        10   11
                        1



                        2



                        3



                        4
                 Rows




                        5



                        6



                        7



                        8



                        9




            Fig 3.10 Example 1 Motion Vector Field for N=16,M=16,th=1.7 (Close to desired results)

       Here, after the absolute value of maximum displacement shown by Motion vectors is 6. So, visually as well
as theoretically its is proved that Optimum threshold for Example 1 Image is '1.7'
       Now, we will change the block size N=8, keeping same M=16 and Threshold th=1.7, and Fig 3.11 and Fig
3.12 show the obtained results.




                                                                                                                8
Case 4: Image 1 with N=8,M=16,th=1.7
        Here if we compare DFD in Fig 3.11 and Fig 3.9 for N=16, we can see that for N=8, we seem to be getting
results because almost see very sketchy outline of shoulder area compared to that in Fig 3.9 for N=16. This is also
demonstrated by that Total SAD value has reduced from 70343 to 60450, which is testimony of the fact we have
obtained better Prediction Image. This is true because smaller the block of Target Image used for comparison, more
is the possibility of detecting it in the Reference Image, meaning when we reduce the block size, we start getting
minor details which were missed for N=16.




                       Fig 3.11 Example 1 Predicted and DFD Image with N=8,M=16,th=1.7




                                    Fig 3.12 Motion Field for N=8,M=16, th=1.7

        On the other hand, if we compare Motion vector fields in Fig 3.12 for N=8 and Fig 3.10 at N=16, we
actually the reverse effect. In that, yes we are able to get finer details but missing out on few border motion vectors
for same threshold value(here th=1.7).That means, the same threshold value is not optimal in all case but only for
that particular block size. The quality of Motion Vector depends on the condition expressed below
                                        SAD(V')<SAD(0) - th*N*N
        Now here, if all factors reduce by same amount then the same threshold value will give optimal results.
However, it was found that Total SAD value reduces by different amount(here from 70343 to 60450) compared to
the 'th*N*N' which becomes 1/4th. The total SAD(0) value remains same. This shows that all factors have different
reduction factors and so results depends on the particular block situation. Therefore, we see mismatch in the

                                                                                                                     9
Motion Vector Field results for N=8 and N=16 for same Threshold value. So, every time we change the block size,
we should freshly determine the optimal threshold value for that block size.
        Now, here one more thing to be taken into consideration is the computational time. For example for
N=16,M=16 the number of iterations/computations were found to be 107812, while for N=8, M=16, there number
was 431245. in terms of time the later analysis took almost 25 seconds more. This can be explained by reducing the
block size, we have to get motion vectors for more number of blocks and so the increase in computation time. Also,
if we decrease the search window ( say M=8), the computation time would be less. Fig 3.13 and fig 3.14 shows
results for N=8,M=8,th=1.7.




                              Fig 3.13 Predicted and DFD for N=8,M=8 and th=1.7




                                Fig 3.14 Motion Field Vector for N=8,M=8,th=1.7

If we compare the DFD for N=8,M=8 in Fig 3.14 and N=8,M=16 in Fig 3.12, we don't see much changes due to
the fact that actual displacement between Reference and Target frame is not more than 6 pixels approximately. So
for fixed N, if we change M above 6-7, we should not find much difference. This is also demonstrated by the fact
that Total SAD value doesn't change much as in the Tabular Summary for all cases applied on Image1 shown in
Tab 3.1




                                                                                                               10
Block Size(N)      Search        Threshold(th)     Number of       Time in secs     Total SAD      Total SAD(0)
                  Range(M)                         Iterations
      16              16               0             107812           10.13            65986           231549
      16              16               0.5           107812            9.43            67616           231549
      16              16               1.7           107812             16             70343           231549
      8               16               1.7           431245           30.98            60450           231549
      8                8              1.7           114445            4.92             60491           231549
                                 Tab 3.1 Overall Summary of all cases analyzed


       3.2 Analysis on Example Image 2
       Similar Analysis was done for the Example Image 2 and the results for all the cases are shown in Fig 3.15 to
Fig 3.24
       Case 1: N=16,M=16,th=0




                                      Fig 3.15 Reference Example Image 2




                   Fig 3.16 Target and Predicted Image for Example 2 with N=16,M=16,th=0




                                                                                                                11
Fig 3.17 DFD and FD Image for Example 2 with N=16,M=16,th=0




                                                     Motion Vector Field
                                                              Columns
                            0              5             10             15            20           25
                        0



                        2



                        4



                        6
                Rows




                        8



                       10



                       12



                       14



                       16




                                Fig 3.18 Motion vector Field for Image 2 with N=16,M=16 and th=0

        If we compare Reference and Target Image, we can see there are some regions which because of motion get
occluded, for example the surrounding region behind the Vehicle. So, we can't estimate motion for such areas, even
though we see some motion vectors in that region. This problem is called “Occlusion” Problem and is one of the
limitations of Basic Block Matching method.
        Another limitation is “Aperture Problem”, in which we have blocks of same intensity values multiple times
in the regions successively and so we don't get any motion estimation for such cases, since in actual
mathematically there is no motion. However, if the region is sub block of bigger block, we need to have motion
vectors since there is a motion. Although not exactly, but we see a similar case at Vehicles Door region at
approximately Block(10,5) in Motion Vector field. In Fig 3.18 we still see some motion vector of small magnitude
because actually we don't have same intesnity throughout that region, but it has similar texture, which can be
proved by the fact that the region at Block(10,5) is not much visible even in Frame Difference(FD).
        Now, for N=16,M=16 and th=0, we are almost getting the desired Motion vector field indicating motion at
all places, which is actually true if we compare the Reference and Target Image. This is unlike Example image 1
where we were concerned in estimating motion in particular region.


                                                                                                               12
Now, if here th=0 will be the best possible Threshold Value. Now, if we change the threshold we expect
little degraded results, since some required motion vectors will not satisfy the threshold condition.

       Case 2: Image 2 with N=16,M=16, th=1
       Fig 3.19 to Fig 3.20 shows the results for Case 2




                             Fig 3.19 Predicted and DFD Image for N=16,M=16,th=1




                                   Fig 3.20 Motion Vector Field for N=16,M=16,th=1
        Here, if we compare the DFD for th=1 in Fig 3.19 and for th=0 in Fig 3.17, we can't see much of the
difference visually. However, if we compare Total SAD value for both cases, we find that it has increased from
692509 to 694021. Also, if we compare Motion Vector Field in Fig 3.20 and Fig 3.18, as expected we see some
required motion vectors missing. This proves the point made earlier that th=0 is the most optimal threshold value.

       Case 3: N=8,M=16,th=0
       Fig 3.21 and Fig 3.22 shows the Predicted, DFD and Motion Vector Field for N=8,M=16,th=0




                                                                                                               13
Fig 3.21 Predicted and DFD Image for N=8,M=16,th=0

        If we compare DFD image for N=8 in Fig 3.21 and for N=16 in Fig 3.17 with th=0, we can clearly see for
N=8, the bright spot on the vehicle is missing, and thus giving more accurate predicted Image. This is because for
smaller block size 8X8, the bright spot couldn't be a part of matching block in the Target Frame, so we don't see it
in the predicted image. Thus, with smaller block size, we start getting finer details in the Target Image.
        If we compare Motion Vector field in Fig 3.22 and Fig 3.16, we can see that for same threshold value i.e
th=0, we get the optimal results. So, in this case, the quality of Motion Field is actually improved for N=8,M=16
and th=0. This is unlike the Example 1 Image where the situation was reverse and we had to track motion at some
part of whole Image.
        Finally, for N=8,M=8,th=0, results are shown in Fig 3.23 and Fig 3.24 and then all the cases analyzed are
tabulated in Table 3.2.




                                 Fig 3.22 Motion vector Field for N=8,M=16,th=0




                             Fig 3.23 Predicted and DFD Image with N=8,M=8,th=0;

                                                                                                                 14
Motion Vector Field
                                                                    Columns
                         0        5       10         15        20             25    30           35   40        45
                     0




                     5




                    10
             Rows




                    15




                    20




                    25




                    30




                                        Fig 3.24 Motion Vector Field for N=8,M=8,th=0

Block Size(N)             Search        Threshold(th)          Number of           Time in secs       Total SAD      Total SAD(0)
                         Range(M)                              Iterations
     16                      16                0                    375706               35.98             692509      1714664
     16                      16                0.5                  375706               35.57             692812      1714664
     16                      16                1                    375706               36.39             694021      1714664
     8                       16                0                    1470151              114.9             619854      1714664
     8                       8                0            390151           17.11         623930                       1714664
                                  Tab 3.2 Summary for All case analyzed For Example Image 2

     3.3 Changing the Search Method
               From the analysis shown in Tab 3.1 and Tab 3.2, we can see that Full exhaustive search method
         gives very good motion estimation prediction. The main reason for getting such good results is because
         we try searching over entire Search Window Resolution. On the flip side, this method takes a lot of
         computational effort. So, there are various methods as mentioned in the introduction part for getting
         faster and almost close to Full Exhaustive Method Results.
                As regarding the quality of Motion Vector Field, we may miss some Object motion vector fields,
             since we scan at few specific points rather than at each and every location in Search Range M as
             done in Full Exhaustive Search Method. Thus, the quality of Motion vector field depends on the
             search method's accuracy.
                 For example, here in the same implementation if we put the Threshold Condition ( SAD(v') <
                 SAD(0) -th*N*N) inside the loop of Motion Vector Search Range and if the condition is not
                 satisfied, we break out of the loop and assume that there is no motion and assign '0' value to the
                 motion vector, we get following Motion Vector Field for N=16,M=16,th=0 shown in Fig 3.25.
                 We can easily see that many required motion vectors are missing but still we get a rough
                  estimate of the motion estimation. The number of iterations/computations performed reduces
                 to 46547 as compared to 107812 in Full Search Method. If we use methods like 3 point,
                 Cross Search Methods, we can get better accuracy in Motion Vector Field results.



                                                                                                                                 15
Fig 3.25 Motion Vector Field for Modified Search Method with N=16,M=16,th=0

   4. Conclusion

       Based on summary obtained in Table 3.1 for Example Image 1 and Table 3.2 for Example Image 2,
following conclusions can be drawn:

   •   Effect of Changing BM parameters on Motion Estimation Accuracy
       ◦ Block Size(N): Smaller the Block size, we get finer details of the target Image in the predicted image i.e
           lower Total SAD value. However, the computational effort increases.
       ◦ Search Window(M): Theoretically, greater the value of M, better the quality of predicted image, lower
           total SAD value and more accurate Motion Vector Field Representation. Practically, we need to ensure
           that the value of M is greater than the absolute maximum displacement between Reference and Target
           image in any direction. Also, higher the value, more is the computational effort.
       ◦ Threshold(th): The optimal value of 'th' depends on the images. If we need to estimate for entire
           Image, optimal value will be independent of N and is equal to zero. However, if we have to consider
           only a particular region in image for motion estimation, every time we change N and M, we need to get
           optimal threshold value. In general , increasing 'th' results in increased total SAD value.
   •   Full Exhaustive Search Method gives a very accurate Motion vector Field Representation, however the
       computational effort required is more. Using other search methods like 3 point search method, can help
       getting faster results.
   •   Block Matching based motion estimation method cannot estimate motion for the part when it is occluded in
       between the frames or if it has Aperture problem.

   5. References

       [1] 'Digital Video Processing', A. Murat Tekalp, Chapter 6 Block Based Methods

       [2] 'ECE 565 Computer Vision and Image Processing' class notes, Professor Jovan Brankov




                                                                                                                16
6. Appendix

    6.1 MATLAB Code for Block Matching based Motion Estimation

function [f_e dfd fd tot_sad tot_sado comp]=blockmatching(f_r,f_t,N,M,th)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%%%%%%%%%%Full Exhaustive Block Matching Motion Estimation Method%%%
%       Inputs
%         f_r      ---> Reference Image
%         f_t      ---> Target Image
%         N       ---> Block Size
%         M       ---> Search Window
%         th      ---> Threshold Value
%       Outputs
%         f_e       ---> Estimated Image
%         dfd       ---> Displaced Frame Difference
%         fd       ---> Frame Difference
%         tot_sad ---> Total SAD value
%         tot_sado ---> Total SAD value at v=0
%         comp       --> Number of Iterations/Computations Performed
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%
%Converting the images from uint8 to Double Format
f_r=double(f_r);
f_t=double(f_t);
%Determining the Image Size
[row col]=size(f_t);
%Initializing a Estimated Image
f_e=zeros(row,col);
f_e=double(f_e);
a=1;
b=1;
%Initiating the Total SAD variable
tot_sad=0;
tot_sado=0;
it=1;
%Number of Computations
comp=1;
tic
for i=1:N:row
    for j=1:N:col
       %Initializing Motion Vectors and SAD matrices
       v1_min=0;
       v2_min=0;
       sad=[];
       v1_mat=[];
       v2_mat=[];
       it=1;



                                                                        17
%Searching for the optimal motion vector over the entire search range M
     for v1=-M:M
        for v2=-M:M
           %Incrementing the number of Computations
           comp=comp+1;

             %Determining the Row start points for Target and Reference Blocks to be compared for Motion
Estimation
             start_t_i=i;
             start_r_i=v1+i;

             %Determining the Row end points for Target and Reference Blocks
             if(start_t_i+N>row)
                 end_t_i=row;
                 end_r_i=v1+row;
             else
                 end_t_i=start_t_i+N-1;
                 end_r_i=start_r_i+N-1;
             end;

             %Determining the Column Start Points for Target and Reference Blocks
             start_t_j=j;
             start_r_j=j+v2;

             %Determining the Column end points for Target and Reference Blocks
             if(start_t_j+N>col)
                 end_t_j=col;
                 end_r_j=v2+col;
             else
                 end_t_j=start_t_j+N-1;
                 end_r_j=start_r_j+N-1;
             end;

             if(end_r_i<row && end_r_j<col && start_r_i>0 && start_r_j>0)
             %Calculating the SAD value for the current motion vector
                     dif=f_t(start_t_i:end_t_i,start_t_j:end_t_j)-f_r(start_r_i:end_r_i,start_r_j:end_r_j);
                     dif=abs(dif);
                     sadx=sum(sum(dif));
                     if(it==1)
                     sad=sadx;
                     v1_mat=v1;
                     v2_mat=v2;
                     it=it+1;
                     else
                         sad=[sad ;sadx];
                         v1_mat=[v1_mat; v1];
                         v2_mat=[v2_mat; v2];
                    it=it+1;

                                                                                                              18
end;
         end;
     end;
 end;
 % Finding the Motion vectors for Minimum SAD value
 if(isempty(sad)==0)
 pos=find(sad==min(sad));
 v1_min=v1_mat(pos(1),1);
 v2_min=v2_mat(pos(1),1);
 end;
 %Calculating SAD(0)
 sado=abs(f_t(start_t_i:end_t_i,start_t_j:end_t_j)-f_r(start_t_i:end_t_i,start_t_j:end_t_j));
 sado=sum(sum(sado));
 tot_sado=tot_sado+sado;
 %Checking for the Threshold Condition
 if(min(sad)>=sado-th*N*N)
     v1_min=0;
     v2_min=0;
     tot_sad=tot_sad+sado;
 else
     tot_sad=tot_sad+min(sad);
 end;
 %Storing the determined motion vectors in an array
V1(a,b)=v1_min;
V2(a,b)=v2_min;
b=b+1;
%Calculating the start and end points in the Predicted and to be
%assigned Reference Block
start_r_j=j+v2_min;
start_r_i=v1_min+i;
if(start_r_j+N-1>col && start_t_j+N-1<=col)
     end_r_j=2*start_r_j+N-col -1;
     end_t_j=col;
     end;
     if(start_t_j+N-1>col&&start_r_j+N-1<=col)
     end_r_j=start_r_j+start_t_j+N-col -2;
     end_t_j=col;
     end;
     if(start_t_j+N-1>col && start_r_j+N-1>col )
     end_t_j=col;
     end_r_j=start_r_j+end_t_j-start_t_j;
     end;
 if(start_t_j+N-1<=col )
     end_r_j=start_r_j+N-1;
     end_t_j=start_t_j+N-1;
 end;
 if(start_r_i+N-1>row || start_t_i+N-1<=row)

                                                                                                19
end_r_i=2*start_r_i+N-row -1;
           end_t_i=row;
       end;
       if(start_t_i+N-1>row || start_r_i+N-1<=row)
           end_r_i=start_r_i+start_t_i+N-row -2;
           end_t_i=row;
       end;
       if(start_t_i+N-1>row && start_r_i+N-1>row )
           end_t_i=row
           end_r_i=start_r_i+end_t_i-start_t_i;
       end;
       if(start_t_i+N-1<=row )
           end_t_i=start_t_i+N-1;
           end_r_i=start_r_i+N-1;
       end;
       f_e(start_t_i:end_t_i,start_t_j:end_t_j)=f_r(start_r_i:end_r_i,start_r_j:end_r_j);
       end;
       b=1;
       a=a+1;
end;
%Getting the Displaced Difference Frame Image
dfd=imsubtract(f_e,f_t);
%Getting the minimum value so as to properly match -ve values for better
%display
min_dfd=min(min(dfd));
dfd=dfd+abs(min_dfd);
%Getting the Frame Difference
fd=imsubtract(f_r,f_t);
%Getting the minimum value so as to properly match -ve values for better
%display
min_fd=min(min(fd));
fd=fd+abs(min_fd);
figure,imshow(mat2gray(f_r));
title('Reference Image');
figure,subplot(1,2,1),imshow(mat2gray(f_t));
title('Target Image');
subplot(1,2,2),imshow(mat2gray(f_e));
title('Predicted Image');
figure,subplot(1,2,1),imshow(mat2gray(dfd));
title('Displaced Frame Difference');
subplot(1,2,2),imshow(mat2gray(fd));
title('Frame Difference');
figure,quiver(V2,V1);
set(gca,'xaxislocation','top','yaxislocation','left','xdir','default','ydir','reverse');
title('Motion Vector Field');
xlabel('Columns');
ylabel('Rows');
toc



                                                                                            20

Weitere ähnliche Inhalte

Was ist angesagt?

Enhancement in spatial domain
Enhancement in spatial domainEnhancement in spatial domain
Enhancement in spatial domain
Ashish Kumar
 
Image processing SaltPepper Noise
Image processing SaltPepper NoiseImage processing SaltPepper Noise
Image processing SaltPepper Noise
Ankush Srivastava
 

Was ist angesagt? (20)

Image Processing: Spatial filters
Image Processing: Spatial filtersImage Processing: Spatial filters
Image Processing: Spatial filters
 
Edge Detection and Segmentation
Edge Detection and SegmentationEdge Detection and Segmentation
Edge Detection and Segmentation
 
IMAGE SEGMENTATION.
IMAGE SEGMENTATION.IMAGE SEGMENTATION.
IMAGE SEGMENTATION.
 
Lzw coding technique for image compression
Lzw coding technique for image compressionLzw coding technique for image compression
Lzw coding technique for image compression
 
Image Restoration
Image RestorationImage Restoration
Image Restoration
 
Enhancement in spatial domain
Enhancement in spatial domainEnhancement in spatial domain
Enhancement in spatial domain
 
Wiener Filter
Wiener FilterWiener Filter
Wiener Filter
 
Chapter 2 Image Processing: Pixel Relation
Chapter 2 Image Processing: Pixel RelationChapter 2 Image Processing: Pixel Relation
Chapter 2 Image Processing: Pixel Relation
 
Interpixel redundancy
Interpixel redundancyInterpixel redundancy
Interpixel redundancy
 
Frequency domain methods
Frequency domain methods Frequency domain methods
Frequency domain methods
 
Image compression
Image compressionImage compression
Image compression
 
Image Segmentation (Digital Image Processing)
Image Segmentation (Digital Image Processing)Image Segmentation (Digital Image Processing)
Image Segmentation (Digital Image Processing)
 
Noise models presented by Nisha Menon K
Noise models presented by Nisha Menon KNoise models presented by Nisha Menon K
Noise models presented by Nisha Menon K
 
Lecture 1 for Digital Image Processing (2nd Edition)
Lecture 1 for Digital Image Processing (2nd Edition)Lecture 1 for Digital Image Processing (2nd Edition)
Lecture 1 for Digital Image Processing (2nd Edition)
 
Jpeg standards
Jpeg   standardsJpeg   standards
Jpeg standards
 
Image enhancement
Image enhancementImage enhancement
Image enhancement
 
Image compression standards
Image compression standardsImage compression standards
Image compression standards
 
Image segmentation
Image segmentationImage segmentation
Image segmentation
 
Segmentation
SegmentationSegmentation
Segmentation
 
Image processing SaltPepper Noise
Image processing SaltPepper NoiseImage processing SaltPepper Noise
Image processing SaltPepper Noise
 

Andere mochten auch

LIRE presentation at the ACM Multimedia Open Source Software Competition 2013
LIRE presentation at the ACM Multimedia Open Source Software Competition 2013LIRE presentation at the ACM Multimedia Open Source Software Competition 2013
LIRE presentation at the ACM Multimedia Open Source Software Competition 2013
dermotte
 
Introduction to Video Compression Techniques - Anurag Jain
Introduction to Video Compression Techniques - Anurag JainIntroduction to Video Compression Techniques - Anurag Jain
Introduction to Video Compression Techniques - Anurag Jain
Videoguy
 

Andere mochten auch (20)

The motion estimation
The motion estimationThe motion estimation
The motion estimation
 
Efficient Architecture for Variable Block Size Motion Estimation in H.264/AVC
Efficient Architecture for Variable Block Size Motion Estimation in H.264/AVCEfficient Architecture for Variable Block Size Motion Estimation in H.264/AVC
Efficient Architecture for Variable Block Size Motion Estimation in H.264/AVC
 
High Performance Architecture for Full Search Block matching Algorithm
High Performance Architecture for Full Search Block matching AlgorithmHigh Performance Architecture for Full Search Block matching Algorithm
High Performance Architecture for Full Search Block matching Algorithm
 
AcademicProject
AcademicProjectAcademicProject
AcademicProject
 
LIRE presentation at the ACM Multimedia Open Source Software Competition 2013
LIRE presentation at the ACM Multimedia Open Source Software Competition 2013LIRE presentation at the ACM Multimedia Open Source Software Competition 2013
LIRE presentation at the ACM Multimedia Open Source Software Competition 2013
 
Full Search Technique
Full Search TechniqueFull Search Technique
Full Search Technique
 
Paralleling Variable Block Size Motion Estimation of HEVC On CPU plus GPU Pla...
Paralleling Variable Block Size Motion Estimation of HEVC On CPU plus GPU Pla...Paralleling Variable Block Size Motion Estimation of HEVC On CPU plus GPU Pla...
Paralleling Variable Block Size Motion Estimation of HEVC On CPU plus GPU Pla...
 
2010 15 vo
2010 15 vo2010 15 vo
2010 15 vo
 
LIvRE: A Video Extension to the LIRE Content-Based Image Retrieval System
LIvRE: A Video Extension to the LIRE Content-Based Image Retrieval SystemLIvRE: A Video Extension to the LIRE Content-Based Image Retrieval System
LIvRE: A Video Extension to the LIRE Content-Based Image Retrieval System
 
SYSTEM AND METHOD FOR ACQUIRING OF STATIC IMAGES OF OBJECTS IN MOTION
SYSTEM AND METHOD FOR ACQUIRING OF STATIC IMAGES OF OBJECTS IN MOTIONSYSTEM AND METHOD FOR ACQUIRING OF STATIC IMAGES OF OBJECTS IN MOTION
SYSTEM AND METHOD FOR ACQUIRING OF STATIC IMAGES OF OBJECTS IN MOTION
 
Robust Block-Matching Motion Estimation of Flotation Froth Using Mutual Infor...
Robust Block-Matching Motion Estimation of Flotation Froth Using Mutual Infor...Robust Block-Matching Motion Estimation of Flotation Froth Using Mutual Infor...
Robust Block-Matching Motion Estimation of Flotation Froth Using Mutual Infor...
 
Introduction to Optial Flow
Introduction to Optial FlowIntroduction to Optial Flow
Introduction to Optial Flow
 
System and method for motion compensation
System and method for motion compensationSystem and method for motion compensation
System and method for motion compensation
 
Introduction to Video Compression Techniques - Anurag Jain
Introduction to Video Compression Techniques - Anurag JainIntroduction to Video Compression Techniques - Anurag Jain
Introduction to Video Compression Techniques - Anurag Jain
 
Curved Wavelet Transform For Image Denoising using MATLAB.
Curved Wavelet Transform For Image Denoising using MATLAB.Curved Wavelet Transform For Image Denoising using MATLAB.
Curved Wavelet Transform For Image Denoising using MATLAB.
 
Dip review
Dip reviewDip review
Dip review
 
image compression using matlab project report
image compression  using matlab project reportimage compression  using matlab project report
image compression using matlab project report
 
Image denoising
Image denoisingImage denoising
Image denoising
 
final_project
final_projectfinal_project
final_project
 
digital image processing, image processing
digital image processing, image processingdigital image processing, image processing
digital image processing, image processing
 

Ähnlich wie Block Matching Project

IJCER (www.ijceronline.com) International Journal of computational Engineerin...
IJCER (www.ijceronline.com) International Journal of computational Engineerin...IJCER (www.ijceronline.com) International Journal of computational Engineerin...
IJCER (www.ijceronline.com) International Journal of computational Engineerin...
ijceronline
 
Object tracking by dtcwt feature vectors 2-3-4
Object tracking by dtcwt feature vectors 2-3-4Object tracking by dtcwt feature vectors 2-3-4
Object tracking by dtcwt feature vectors 2-3-4
IAEME Publication
 
Tennis video shot classification based on support vector
Tennis video shot classification based on support vectorTennis video shot classification based on support vector
Tennis video shot classification based on support vector
es712
 

Ähnlich wie Block Matching Project (20)

IJCER (www.ijceronline.com) International Journal of computational Engineerin...
IJCER (www.ijceronline.com) International Journal of computational Engineerin...IJCER (www.ijceronline.com) International Journal of computational Engineerin...
IJCER (www.ijceronline.com) International Journal of computational Engineerin...
 
IJCER (www.ijceronline.com) International Journal of computational Engineerin...
IJCER (www.ijceronline.com) International Journal of computational Engineerin...IJCER (www.ijceronline.com) International Journal of computational Engineerin...
IJCER (www.ijceronline.com) International Journal of computational Engineerin...
 
Fundamentals of image processing
Fundamentals of image processingFundamentals of image processing
Fundamentals of image processing
 
FORGERY (COPY-MOVE) DETECTION IN DIGITAL IMAGES USING BLOCK METHOD
FORGERY (COPY-MOVE) DETECTION IN DIGITAL IMAGES USING BLOCK METHODFORGERY (COPY-MOVE) DETECTION IN DIGITAL IMAGES USING BLOCK METHOD
FORGERY (COPY-MOVE) DETECTION IN DIGITAL IMAGES USING BLOCK METHOD
 
Object tracking by dtcwt feature vectors 2-3-4
Object tracking by dtcwt feature vectors 2-3-4Object tracking by dtcwt feature vectors 2-3-4
Object tracking by dtcwt feature vectors 2-3-4
 
Video Compression Advanced.pdf
Video Compression Advanced.pdfVideo Compression Advanced.pdf
Video Compression Advanced.pdf
 
VARIATION-FREE WATERMARKING TECHNIQUE BASED ON SCALE RELATIONSHIP
VARIATION-FREE WATERMARKING TECHNIQUE BASED ON SCALE RELATIONSHIPVARIATION-FREE WATERMARKING TECHNIQUE BASED ON SCALE RELATIONSHIP
VARIATION-FREE WATERMARKING TECHNIQUE BASED ON SCALE RELATIONSHIP
 
Performance Improvement of Vector Quantization with Bit-parallelism Hardware
Performance Improvement of Vector Quantization with Bit-parallelism HardwarePerformance Improvement of Vector Quantization with Bit-parallelism Hardware
Performance Improvement of Vector Quantization with Bit-parallelism Hardware
 
Multimedia lossy compression algorithms
Multimedia lossy compression algorithmsMultimedia lossy compression algorithms
Multimedia lossy compression algorithms
 
Practical Digital Image Processing 2
Practical Digital Image Processing 2Practical Digital Image Processing 2
Practical Digital Image Processing 2
 
mini prjt
mini prjtmini prjt
mini prjt
 
Motion Estimation - umit 5 (II).pdf
Motion Estimation  - umit 5 (II).pdfMotion Estimation  - umit 5 (II).pdf
Motion Estimation - umit 5 (II).pdf
 
Tennis video shot classification based on support vector
Tennis video shot classification based on support vectorTennis video shot classification based on support vector
Tennis video shot classification based on support vector
 
Kccsi 2012 a real-time robust object tracking-v2
Kccsi 2012   a real-time robust object tracking-v2Kccsi 2012   a real-time robust object tracking-v2
Kccsi 2012 a real-time robust object tracking-v2
 
Data-Driven Motion Estimation With Spatial Adaptation
Data-Driven Motion Estimation With Spatial AdaptationData-Driven Motion Estimation With Spatial Adaptation
Data-Driven Motion Estimation With Spatial Adaptation
 
05397385
0539738505397385
05397385
 
05397385
0539738505397385
05397385
 
E017263040
E017263040E017263040
E017263040
 
Image Processing with OpenCV
Image Processing with OpenCVImage Processing with OpenCV
Image Processing with OpenCV
 
Estrazione automatica delle linee in un'immagine digitale
Estrazione automatica delle linee in un'immagine digitaleEstrazione automatica delle linee in un'immagine digitale
Estrazione automatica delle linee in un'immagine digitale
 

Kürzlich hochgeladen

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Kürzlich hochgeladen (20)

Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 

Block Matching Project

  • 1. 1 ECE 565 Computer Vision and Image Processing Spring 2010 Computer Assignment # 2 Block Matching Based Motion Prediction Method By Dhawal Subodh Wazalwar A20249257 ECE Dept Illinois Institute of Technology Due date 30th April 2010 1
  • 2. Block Matching Based Motion Estimation 1. Introduction The main aim of the Block Matching(BM) Motion Estimation is to compare images taken at two different time frames and estimate the direction of motion taken place between the two frames. Here, the challenge is to get the best motion vector by using a pixel domain search method and proper manipulation of BM parameters. Fig 1.1 tries to demonstrate the basic concept of block matching motion estimation. Here, two blocks Reference and Target Block are shown and the Target block is the translated version of Reference block. The key aspect in this method is how accurately can we estimate motion direction with appropriate Motion Vectors Column i,j i+v1,j+v2 Row Reference Block at i,j Target Block at i+v1,j+v2 Direction of Motion Vector v1,v2 Motion Vector Magnitude Fig 1.1 Basic Understanding of Block Matching Any BM Motion Estimation method needs following parameters to be selected beforehand : • The Matching Criteria Various metrics like Sum of Absolute Differences(SAD),Mean Square Error(MSE). Mean Absolute Difference(MAD) can be used for quantitatively proving that the two blocks in comparison are matching. Here, in this implementation SAD is used which is represented as where, It+1(i,j) -----> Target Frame It (i,j) -----> Reference Frame k,l -----> The block location N -----> Block size [v1;v2] ----> Motion Vector for that block • Search Strategy The search strategy influences the quality of Motion Field and also the overall computation time as demonstrated in later parts. There are various search strategies like Full Exhaustive Search, 3-point Search, Cross Search Method and many more versions of it. In this implementation, we have used full exhaustive search method. 2
  • 3. Search Window and Block Size The Block size(N) is the size of the block of target and reference frame to be compared for estimating the motion vectors. On the other hand, Search Window(M) is the resolution for which the search over the block is done. 2. Algorithm 2.1 Implementation Steps Flow chart in Fig 2.1 shows the important steps in the Full Exhaustive Search Block Matching Motion Estimation Method. Reference Image Target Image Initialize N,M,th Select the appropriate Target block It+1(i,j) of NXN Yes No Reference Calculate Checked Calculate for all Block SAD(0) Motion SAD vectors It(i+v1,j+v2) Is No Is SAD(v)>SAD(0) SAD -th*N*N min No Yes Yes Motion Store Vectors =0 Motion Vectors Display Assign block Determine Motion In the DFD,FD Field Predicted Image Fig 2.1 Flow Chart showing the Implementation steps for Full Exhaustive BM Method 3
  • 4. 2.2 Key Aspects and Findings in the Algorithm Implementation • If the block size is not multiples of the Frame size,we get the problem of addressing pixels outside the frame. In such cases, here, we restrict the block size to the the last boundary( i.e row and col value) when 'v' addresses outside the frame boundary. On the other hand, when it addresses pixels before the boundary, it is restricted to the start position i.e '1'. • Also, in some cases the motion vector v=[v1;v2] can also cause the same addressing problem. In this situation, we put a condition and check for such cases. If this situation is detected, we ignore that motion vector and carry on for the next motion vector. The reason for doing this is, we can estimate motion happening inside the frame, not outside the frame. So, there is no harm in ignoring the motion vectors addressing outside the frame. • Displaced Frame Difference(DFD) and Frame Difference(FD) is obtained by DFD= ∑(abs(Estimated Frame – Target Frame)), FD = ∑(abs(Reference Frame – Target Frame)) • We get negative values for DFD and FD. So, for proper display we need to map those negative values in the positive domain. So, we find the minimum value for DFD and FD frame and simply add the absolute of that value respectively to get the proper DFD and FD frame. Another way of doing this is converting both the frames in 'uint8' form but in this case all the negative values become '0' and we lose the exact pattern in DFD and FD frames. So, the former method of adding the absolute of minimum value serves the purpose and helps getting better display results. • The threshold condition used for detecting the most appropriate motion vector is SAD(v')<SAD(0) – th*N*N where N is block size, th is the threshold value given initially • The Total SAD is calculated by adding the minimum SAD values for each block. • A check for getting the number of iterations performed and also the time required for the entire analysis is also added. 3. Experimental Results The algorithm determines the motion vectors, predicted image and displays motion vector field, Displaced Frame Difference(DFD),Frame Difference(FD) along with the predicted Image. 3.1 Analysis on Example Image 1: Case 1: Block size NXN=16X16, Search Window M=16,Threhold=0 The results are shown below in Figure 3.1 to 3.4 Fig 3.1 Reference Image 4
  • 5. Fig 3.2 Target and Predicted Image for Example 1 with N=16,M=16,th=0 Fig 3.3 FD and DFD for the Image 1 with N=16,M=16,th=0 Now, finally the most important of all Motion Vector Field is shown below in Fig 3.4 Fig 3.4 Motion Vector Field showing the estimated motion direction for N=16,M=16,th=0 Here, in this motion vector field diagram, we can see that it clearly shows the motion for the displacement of face and shoulder part, while the random fields near the boundary are for the background part which has Camera 5
  • 6. effect and is not a part of actual motion displacement. Note: The Direction shown is for the motion from Predicted ie Target Image to the Reference Image since the algorithm tries to find the target block in the reference block translated by the appropriate motion vector. Also, if we see the reference and the target image, we can see that actual information is approximately in the following region: Face: Row 15:100, Column 50:150 Shoulders: Row 95:144, Column 1:176 So ideally, we should have motion vectors at the following coordinate range shown in the Figure 3.5 Fig 3.5 Range of Ideal Motion Vector Field So by changing the threshold value, we can neglect the unwanted motion vectors which came because of the background random motion, which we need not consider. Case 2: Block size NXN=16X16, Search Window M=16,Threshold=0.5 The results for Case 2 are shown in Fig 3.6 and 3.7 Fig 3.6 Predicted and DFD for N=16,M=16,th=0.5 6
  • 7. Motion Vector Field Columns 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 Rows 5 6 7 8 9 Fig 3.7 Motion Vector Field for Image 1 with N=16,M=16,th=0.5 We can see in Fig 3.7, we get better Motion Field Representation than obtained in Fig 3.4 for Case 1. Also, after comparing the Reference and Target Image in Fig 3.1 and 3.2 , it was found that the max displacement in any direction is not more than 5-6 pixels approximately. This was determined by using 'pixval' command in Matlab and finding the displacement at key positions in Image like Person's Face, Eyes and other such features visible. Therefore, in optimal Motion field matrix, we can expect max absolute value to be not more than 5-6 in this case. So here in Case 2 with th=0.5, although we see almost expected Motion Vector, after checking matrix values, we find that max absolute value here is 8. So, th=0.5 is not the optimal threshold. Note: Here, one important observation can be made regarding 'Search Range' M. As mentioned above, max displacement was approximately found to be 5-6. So, if we give search range less than this value(say M=4), it would be interesting to see the Motion Field, shown in Fig 3.8 Fig 3.8 Motion Vector Field for N=16,M=4,th=0.5 7
  • 8. If we compare direction of motion vectors in Fig 3.7 and Fig 3.8, we can see the difference, in that for th=4, we don't get the expected direction. Also in this case, Total SAD=86609 as compared to 67616 for N=16,M=16,th=0.5. Therefore, we should always keep Search Range M greater than the absolute of maximum displacement between Reference and Target Image to get the accurate motion estimation direction. So, after continuing the changes in the threshold value, it was found that we get better possible motion vector field when threshold value is in the range of 1.5 to 2, and it was found that the best results were seen at th=1.7, after which there was not much change in the motion field. Case 3: N=16,M=16,th=1.7 Predicted ,DFD images and the corresponding Motion Vector Field are shown in Fig 3.9 and Fig 3.10 Fig 3.9 Predicted and DFD Image for N=16, M=16, th=1.7 Motion Vector Field Columns 1 2 3 4 5 6 7 8 9 10 11 1 2 3 4 Rows 5 6 7 8 9 Fig 3.10 Example 1 Motion Vector Field for N=16,M=16,th=1.7 (Close to desired results) Here, after the absolute value of maximum displacement shown by Motion vectors is 6. So, visually as well as theoretically its is proved that Optimum threshold for Example 1 Image is '1.7' Now, we will change the block size N=8, keeping same M=16 and Threshold th=1.7, and Fig 3.11 and Fig 3.12 show the obtained results. 8
  • 9. Case 4: Image 1 with N=8,M=16,th=1.7 Here if we compare DFD in Fig 3.11 and Fig 3.9 for N=16, we can see that for N=8, we seem to be getting results because almost see very sketchy outline of shoulder area compared to that in Fig 3.9 for N=16. This is also demonstrated by that Total SAD value has reduced from 70343 to 60450, which is testimony of the fact we have obtained better Prediction Image. This is true because smaller the block of Target Image used for comparison, more is the possibility of detecting it in the Reference Image, meaning when we reduce the block size, we start getting minor details which were missed for N=16. Fig 3.11 Example 1 Predicted and DFD Image with N=8,M=16,th=1.7 Fig 3.12 Motion Field for N=8,M=16, th=1.7 On the other hand, if we compare Motion vector fields in Fig 3.12 for N=8 and Fig 3.10 at N=16, we actually the reverse effect. In that, yes we are able to get finer details but missing out on few border motion vectors for same threshold value(here th=1.7).That means, the same threshold value is not optimal in all case but only for that particular block size. The quality of Motion Vector depends on the condition expressed below SAD(V')<SAD(0) - th*N*N Now here, if all factors reduce by same amount then the same threshold value will give optimal results. However, it was found that Total SAD value reduces by different amount(here from 70343 to 60450) compared to the 'th*N*N' which becomes 1/4th. The total SAD(0) value remains same. This shows that all factors have different reduction factors and so results depends on the particular block situation. Therefore, we see mismatch in the 9
  • 10. Motion Vector Field results for N=8 and N=16 for same Threshold value. So, every time we change the block size, we should freshly determine the optimal threshold value for that block size. Now, here one more thing to be taken into consideration is the computational time. For example for N=16,M=16 the number of iterations/computations were found to be 107812, while for N=8, M=16, there number was 431245. in terms of time the later analysis took almost 25 seconds more. This can be explained by reducing the block size, we have to get motion vectors for more number of blocks and so the increase in computation time. Also, if we decrease the search window ( say M=8), the computation time would be less. Fig 3.13 and fig 3.14 shows results for N=8,M=8,th=1.7. Fig 3.13 Predicted and DFD for N=8,M=8 and th=1.7 Fig 3.14 Motion Field Vector for N=8,M=8,th=1.7 If we compare the DFD for N=8,M=8 in Fig 3.14 and N=8,M=16 in Fig 3.12, we don't see much changes due to the fact that actual displacement between Reference and Target frame is not more than 6 pixels approximately. So for fixed N, if we change M above 6-7, we should not find much difference. This is also demonstrated by the fact that Total SAD value doesn't change much as in the Tabular Summary for all cases applied on Image1 shown in Tab 3.1 10
  • 11. Block Size(N) Search Threshold(th) Number of Time in secs Total SAD Total SAD(0) Range(M) Iterations 16 16 0 107812 10.13 65986 231549 16 16 0.5 107812 9.43 67616 231549 16 16 1.7 107812 16 70343 231549 8 16 1.7 431245 30.98 60450 231549 8 8 1.7 114445 4.92 60491 231549 Tab 3.1 Overall Summary of all cases analyzed 3.2 Analysis on Example Image 2 Similar Analysis was done for the Example Image 2 and the results for all the cases are shown in Fig 3.15 to Fig 3.24 Case 1: N=16,M=16,th=0 Fig 3.15 Reference Example Image 2 Fig 3.16 Target and Predicted Image for Example 2 with N=16,M=16,th=0 11
  • 12. Fig 3.17 DFD and FD Image for Example 2 with N=16,M=16,th=0 Motion Vector Field Columns 0 5 10 15 20 25 0 2 4 6 Rows 8 10 12 14 16 Fig 3.18 Motion vector Field for Image 2 with N=16,M=16 and th=0 If we compare Reference and Target Image, we can see there are some regions which because of motion get occluded, for example the surrounding region behind the Vehicle. So, we can't estimate motion for such areas, even though we see some motion vectors in that region. This problem is called “Occlusion” Problem and is one of the limitations of Basic Block Matching method. Another limitation is “Aperture Problem”, in which we have blocks of same intensity values multiple times in the regions successively and so we don't get any motion estimation for such cases, since in actual mathematically there is no motion. However, if the region is sub block of bigger block, we need to have motion vectors since there is a motion. Although not exactly, but we see a similar case at Vehicles Door region at approximately Block(10,5) in Motion Vector field. In Fig 3.18 we still see some motion vector of small magnitude because actually we don't have same intesnity throughout that region, but it has similar texture, which can be proved by the fact that the region at Block(10,5) is not much visible even in Frame Difference(FD). Now, for N=16,M=16 and th=0, we are almost getting the desired Motion vector field indicating motion at all places, which is actually true if we compare the Reference and Target Image. This is unlike Example image 1 where we were concerned in estimating motion in particular region. 12
  • 13. Now, if here th=0 will be the best possible Threshold Value. Now, if we change the threshold we expect little degraded results, since some required motion vectors will not satisfy the threshold condition. Case 2: Image 2 with N=16,M=16, th=1 Fig 3.19 to Fig 3.20 shows the results for Case 2 Fig 3.19 Predicted and DFD Image for N=16,M=16,th=1 Fig 3.20 Motion Vector Field for N=16,M=16,th=1 Here, if we compare the DFD for th=1 in Fig 3.19 and for th=0 in Fig 3.17, we can't see much of the difference visually. However, if we compare Total SAD value for both cases, we find that it has increased from 692509 to 694021. Also, if we compare Motion Vector Field in Fig 3.20 and Fig 3.18, as expected we see some required motion vectors missing. This proves the point made earlier that th=0 is the most optimal threshold value. Case 3: N=8,M=16,th=0 Fig 3.21 and Fig 3.22 shows the Predicted, DFD and Motion Vector Field for N=8,M=16,th=0 13
  • 14. Fig 3.21 Predicted and DFD Image for N=8,M=16,th=0 If we compare DFD image for N=8 in Fig 3.21 and for N=16 in Fig 3.17 with th=0, we can clearly see for N=8, the bright spot on the vehicle is missing, and thus giving more accurate predicted Image. This is because for smaller block size 8X8, the bright spot couldn't be a part of matching block in the Target Frame, so we don't see it in the predicted image. Thus, with smaller block size, we start getting finer details in the Target Image. If we compare Motion Vector field in Fig 3.22 and Fig 3.16, we can see that for same threshold value i.e th=0, we get the optimal results. So, in this case, the quality of Motion Field is actually improved for N=8,M=16 and th=0. This is unlike the Example 1 Image where the situation was reverse and we had to track motion at some part of whole Image. Finally, for N=8,M=8,th=0, results are shown in Fig 3.23 and Fig 3.24 and then all the cases analyzed are tabulated in Table 3.2. Fig 3.22 Motion vector Field for N=8,M=16,th=0 Fig 3.23 Predicted and DFD Image with N=8,M=8,th=0; 14
  • 15. Motion Vector Field Columns 0 5 10 15 20 25 30 35 40 45 0 5 10 Rows 15 20 25 30 Fig 3.24 Motion Vector Field for N=8,M=8,th=0 Block Size(N) Search Threshold(th) Number of Time in secs Total SAD Total SAD(0) Range(M) Iterations 16 16 0 375706 35.98 692509 1714664 16 16 0.5 375706 35.57 692812 1714664 16 16 1 375706 36.39 694021 1714664 8 16 0 1470151 114.9 619854 1714664 8 8 0 390151 17.11 623930 1714664 Tab 3.2 Summary for All case analyzed For Example Image 2 3.3 Changing the Search Method From the analysis shown in Tab 3.1 and Tab 3.2, we can see that Full exhaustive search method gives very good motion estimation prediction. The main reason for getting such good results is because we try searching over entire Search Window Resolution. On the flip side, this method takes a lot of computational effort. So, there are various methods as mentioned in the introduction part for getting faster and almost close to Full Exhaustive Method Results. As regarding the quality of Motion Vector Field, we may miss some Object motion vector fields, since we scan at few specific points rather than at each and every location in Search Range M as done in Full Exhaustive Search Method. Thus, the quality of Motion vector field depends on the search method's accuracy. For example, here in the same implementation if we put the Threshold Condition ( SAD(v') < SAD(0) -th*N*N) inside the loop of Motion Vector Search Range and if the condition is not satisfied, we break out of the loop and assume that there is no motion and assign '0' value to the motion vector, we get following Motion Vector Field for N=16,M=16,th=0 shown in Fig 3.25. We can easily see that many required motion vectors are missing but still we get a rough estimate of the motion estimation. The number of iterations/computations performed reduces to 46547 as compared to 107812 in Full Search Method. If we use methods like 3 point, Cross Search Methods, we can get better accuracy in Motion Vector Field results. 15
  • 16. Fig 3.25 Motion Vector Field for Modified Search Method with N=16,M=16,th=0 4. Conclusion Based on summary obtained in Table 3.1 for Example Image 1 and Table 3.2 for Example Image 2, following conclusions can be drawn: • Effect of Changing BM parameters on Motion Estimation Accuracy ◦ Block Size(N): Smaller the Block size, we get finer details of the target Image in the predicted image i.e lower Total SAD value. However, the computational effort increases. ◦ Search Window(M): Theoretically, greater the value of M, better the quality of predicted image, lower total SAD value and more accurate Motion Vector Field Representation. Practically, we need to ensure that the value of M is greater than the absolute maximum displacement between Reference and Target image in any direction. Also, higher the value, more is the computational effort. ◦ Threshold(th): The optimal value of 'th' depends on the images. If we need to estimate for entire Image, optimal value will be independent of N and is equal to zero. However, if we have to consider only a particular region in image for motion estimation, every time we change N and M, we need to get optimal threshold value. In general , increasing 'th' results in increased total SAD value. • Full Exhaustive Search Method gives a very accurate Motion vector Field Representation, however the computational effort required is more. Using other search methods like 3 point search method, can help getting faster results. • Block Matching based motion estimation method cannot estimate motion for the part when it is occluded in between the frames or if it has Aperture problem. 5. References [1] 'Digital Video Processing', A. Murat Tekalp, Chapter 6 Block Based Methods [2] 'ECE 565 Computer Vision and Image Processing' class notes, Professor Jovan Brankov 16
  • 17. 6. Appendix 6.1 MATLAB Code for Block Matching based Motion Estimation function [f_e dfd fd tot_sad tot_sado comp]=blockmatching(f_r,f_t,N,M,th) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %%%%%%%%%%Full Exhaustive Block Matching Motion Estimation Method%%% % Inputs % f_r ---> Reference Image % f_t ---> Target Image % N ---> Block Size % M ---> Search Window % th ---> Threshold Value % Outputs % f_e ---> Estimated Image % dfd ---> Displaced Frame Difference % fd ---> Frame Difference % tot_sad ---> Total SAD value % tot_sado ---> Total SAD value at v=0 % comp --> Number of Iterations/Computations Performed %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%% %Converting the images from uint8 to Double Format f_r=double(f_r); f_t=double(f_t); %Determining the Image Size [row col]=size(f_t); %Initializing a Estimated Image f_e=zeros(row,col); f_e=double(f_e); a=1; b=1; %Initiating the Total SAD variable tot_sad=0; tot_sado=0; it=1; %Number of Computations comp=1; tic for i=1:N:row for j=1:N:col %Initializing Motion Vectors and SAD matrices v1_min=0; v2_min=0; sad=[]; v1_mat=[]; v2_mat=[]; it=1; 17
  • 18. %Searching for the optimal motion vector over the entire search range M for v1=-M:M for v2=-M:M %Incrementing the number of Computations comp=comp+1; %Determining the Row start points for Target and Reference Blocks to be compared for Motion Estimation start_t_i=i; start_r_i=v1+i; %Determining the Row end points for Target and Reference Blocks if(start_t_i+N>row) end_t_i=row; end_r_i=v1+row; else end_t_i=start_t_i+N-1; end_r_i=start_r_i+N-1; end; %Determining the Column Start Points for Target and Reference Blocks start_t_j=j; start_r_j=j+v2; %Determining the Column end points for Target and Reference Blocks if(start_t_j+N>col) end_t_j=col; end_r_j=v2+col; else end_t_j=start_t_j+N-1; end_r_j=start_r_j+N-1; end; if(end_r_i<row && end_r_j<col && start_r_i>0 && start_r_j>0) %Calculating the SAD value for the current motion vector dif=f_t(start_t_i:end_t_i,start_t_j:end_t_j)-f_r(start_r_i:end_r_i,start_r_j:end_r_j); dif=abs(dif); sadx=sum(sum(dif)); if(it==1) sad=sadx; v1_mat=v1; v2_mat=v2; it=it+1; else sad=[sad ;sadx]; v1_mat=[v1_mat; v1]; v2_mat=[v2_mat; v2]; it=it+1; 18
  • 19. end; end; end; end; % Finding the Motion vectors for Minimum SAD value if(isempty(sad)==0) pos=find(sad==min(sad)); v1_min=v1_mat(pos(1),1); v2_min=v2_mat(pos(1),1); end; %Calculating SAD(0) sado=abs(f_t(start_t_i:end_t_i,start_t_j:end_t_j)-f_r(start_t_i:end_t_i,start_t_j:end_t_j)); sado=sum(sum(sado)); tot_sado=tot_sado+sado; %Checking for the Threshold Condition if(min(sad)>=sado-th*N*N) v1_min=0; v2_min=0; tot_sad=tot_sad+sado; else tot_sad=tot_sad+min(sad); end; %Storing the determined motion vectors in an array V1(a,b)=v1_min; V2(a,b)=v2_min; b=b+1; %Calculating the start and end points in the Predicted and to be %assigned Reference Block start_r_j=j+v2_min; start_r_i=v1_min+i; if(start_r_j+N-1>col && start_t_j+N-1<=col) end_r_j=2*start_r_j+N-col -1; end_t_j=col; end; if(start_t_j+N-1>col&&start_r_j+N-1<=col) end_r_j=start_r_j+start_t_j+N-col -2; end_t_j=col; end; if(start_t_j+N-1>col && start_r_j+N-1>col ) end_t_j=col; end_r_j=start_r_j+end_t_j-start_t_j; end; if(start_t_j+N-1<=col ) end_r_j=start_r_j+N-1; end_t_j=start_t_j+N-1; end; if(start_r_i+N-1>row || start_t_i+N-1<=row) 19
  • 20. end_r_i=2*start_r_i+N-row -1; end_t_i=row; end; if(start_t_i+N-1>row || start_r_i+N-1<=row) end_r_i=start_r_i+start_t_i+N-row -2; end_t_i=row; end; if(start_t_i+N-1>row && start_r_i+N-1>row ) end_t_i=row end_r_i=start_r_i+end_t_i-start_t_i; end; if(start_t_i+N-1<=row ) end_t_i=start_t_i+N-1; end_r_i=start_r_i+N-1; end; f_e(start_t_i:end_t_i,start_t_j:end_t_j)=f_r(start_r_i:end_r_i,start_r_j:end_r_j); end; b=1; a=a+1; end; %Getting the Displaced Difference Frame Image dfd=imsubtract(f_e,f_t); %Getting the minimum value so as to properly match -ve values for better %display min_dfd=min(min(dfd)); dfd=dfd+abs(min_dfd); %Getting the Frame Difference fd=imsubtract(f_r,f_t); %Getting the minimum value so as to properly match -ve values for better %display min_fd=min(min(fd)); fd=fd+abs(min_fd); figure,imshow(mat2gray(f_r)); title('Reference Image'); figure,subplot(1,2,1),imshow(mat2gray(f_t)); title('Target Image'); subplot(1,2,2),imshow(mat2gray(f_e)); title('Predicted Image'); figure,subplot(1,2,1),imshow(mat2gray(dfd)); title('Displaced Frame Difference'); subplot(1,2,2),imshow(mat2gray(fd)); title('Frame Difference'); figure,quiver(V2,V1); set(gca,'xaxislocation','top','yaxislocation','left','xdir','default','ydir','reverse'); title('Motion Vector Field'); xlabel('Columns'); ylabel('Rows'); toc 20