Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- pImg_mdf = new BYTE [iWidth * iHeight];/// to store the difference image
- int N = 8; // block size 8x8
- int R = 16; //Range for searching 16x16 block
- int dy,dx;
- //int MAD_min = 256;
- for(int i=0; i<iHeight-N; i+N)
- for(int j=0; j<iWidth-N; j+N){
- int MAD_min=256*N*N, mvx=0,mvy=0;
- for(int k =-R;k<=R;k++)
- for(int l =-R;l<=R;l++){
- int MAD=0;
- for(int p=i;p<=i+N-1;p++)
- for(int q=j;q<j+N-1;j++){
- if ((p+q > 0)&&(p+q < iHeight + 1)&&(q+l > 0)&&(q+l < Wp + 1))
- MAD += abs(pImg_f1[p*Wp+q] - pImg_f2[(p+k)*Wp+q+l]);
- }
- MAD = MAD/N*N;
- if(MAD<MAD_min){
- MAD_min = MAD;
- dy = k;dx = l;
- }
- }
- for(int x=i;x<i+N-1;x++) ///store the best matching block
- for(int y=j;y<j+N-1;y++){
- pImg_mdf[x*Wp+y] = pImg_f2[(i+dy)*Wp+dx];
- pImg[x*Wp+y]= pImg_mdf[x*Wp+y];
- }
- }
- OnDraw(GetDC());
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement