Home > PR > do_overlap.m

do_overlap

PURPOSE ^

function imagen = do_overlap(Im,M,N,ov)

SYNOPSIS ^

function imagen = do_overlap(Im,M,N,ov)

DESCRIPTION ^

   function imagen = do_overlap(Im,M,N,ov)

 A partir de una imagen con bloques de tamaņo MxM devuelve
 una imagen con bloques de tamaņo NxN considerando ovelapping
 entre los bloques (para hacer suaves las transiciones)

 La forma del overlapping esta definida en la funcion 
 do_overlap

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 %   function imagen = do_overlap(Im,M,N,ov)
0002 %
0003 % A partir de una imagen con bloques de tamaņo MxM devuelve
0004 % una imagen con bloques de tamaņo NxN considerando ovelapping
0005 % entre los bloques (para hacer suaves las transiciones)
0006 %
0007 % La forma del overlapping esta definida en la funcion
0008 % do_overlap
0009 %
0010 
0011 function imagen = do_overlap(Im,M,N,ov)
0012 
0013 a=(M-N)/2;
0014 v = [zeros(1,a-ov/2) linspace(0,1,ov) ones(1,M-2*(a-ov/2+ov)) linspace(1,0,ov) zeros(1,a-ov/2)];
0015 p = v'*v;
0016 
0017 %figure,mesh(p)
0018 
0019 [nv nh]=size(Im);
0020 
0021 nhor = nh/M;
0022 nver = nv/M; 
0023 
0024 imagen = zeros(nhor*N,nver*N);
0025 
0026 % Parte central: influencia 9 bloques
0027 
0028 for i=2:nver-1
0029    for j=2:nhor-1
0030       cf = 1;
0031       Algo = zeros(2*N+M);
0032       SumaPesos = zeros(2*N+M);
0033       for k=i-1:i+1
0034          cc = 1;
0035          for r=j-1:j+1
0036             B = Im( (k-1)*M+1:k*M, (r-1)*M+1:r*M);
0037             B = B.*p;
0038             
0039             %figure,colormap(gray);imagesc(B,[0 256]);title(num2str([k r]));pause;close
0040             
0041             Algo(cf:cf+M-1,cc:cc+M-1) = Algo(cf:cf+M-1,cc:cc+M-1)+B;
0042             SumaPesos(cf:cf+M-1,cc:cc+M-1) = SumaPesos(cf:cf+M-1,cc:cc+M-1) +p;
0043             cc = cc+N;
0044          end
0045          cf = cf + N;
0046       end
0047       
0048       %figure,mesh(SumaPesos);pause
0049       Algo(SumaPesos~=0) = Algo(SumaPesos~=0)./SumaPesos(SumaPesos~=0);
0050       
0051       %tt = size(Algo,1);
0052       
0053       %for y=2:tt-1
0054       %    Algo(tt/2,y) = sum(sum(Algo(tt/2-1:tt/2+1,y-1:y+1)))/9;
0055       %end
0056       
0057       %for y=2:tt-1
0058       %    Algo(i,tt/2) = sum(sum(Algo(y-1:y+1,tt/2-1:tt/2+1)))/9;
0059       %end
0060 
0061       %figure,mesh(Algo);
0062 
0063       
0064       Bloque = Algo(M/2+N/2+1:M/2+N/2+N,M/2+N/2+1:M/2+N/2+N);
0065 
0066       imagen ((i-1)*N+1:i*N,(j-1)*N+1:j*N) = Bloque;
0067      
0068       
0069    end
0070 end
0071             
0072 
0073 % Parte superior: influencia 6 bloques
0074 
0075 i=1;
0076 
0077 for j=2:nhor-1
0078    cf = 1;
0079    Algo = zeros(M+N,2*N+M);
0080    SumaPesos = zeros(M+N,2*N+M);
0081    for k=i:i+1
0082       cc = 1;
0083       for r=j-1:j+1
0084          B = Im( (k-1)*M+1:k*M, (r-1)*M+1:r*M);
0085          B = B.*p;
0086          
0087          Algo(cf:cf+M-1,cc:cc+M-1) = Algo(cf:cf+M-1,cc:cc+M-1)+B;
0088          SumaPesos(cf:cf+M-1,cc:cc+M-1) = SumaPesos(cf:cf+M-1,cc:cc+M-1) +p;
0089          cc = cc+N;
0090       end
0091       cf = cf + N;
0092    end
0093 
0094    Algo(SumaPesos~=0) = Algo(SumaPesos~=0)./SumaPesos(SumaPesos~=0);
0095    
0096    Bloque = Algo(M/2-N/2+1:M/2-N/2+N,M/2+N/2+1:M/2+N/2+N);
0097 
0098    imagen ((i-1)*N+1:i*N,(j-1)*N+1:j*N) = Bloque;
0099    
0100 end
0101    
0102    
0103 % Parte inferior: influencia 6 bloques
0104 
0105 i=nver;
0106 
0107 for j=2:nhor-1
0108    cf = 1;
0109    Algo = zeros(M+N,2*N+M);
0110    SumaPesos = zeros(M+N,2*N+M);
0111    for k=i-1:i
0112       cc = 1;
0113       for r=j-1:j+1
0114          B = Im( (k-1)*M+1:k*M, (r-1)*M+1:r*M);
0115          B = B.*p;
0116          
0117          Algo(cf:cf+M-1,cc:cc+M-1) = Algo(cf:cf+M-1,cc:cc+M-1)+B;
0118          SumaPesos(cf:cf+M-1,cc:cc+M-1) = SumaPesos(cf:cf+M-1,cc:cc+M-1) +p;
0119          cc = cc+N;
0120       end
0121       cf = cf + N;
0122    end
0123 
0124    Algo(SumaPesos~=0) = Algo(SumaPesos~=0)./SumaPesos(SumaPesos~=0);
0125    
0126    Bloque = Algo(M/2+N/2+1:M/2+N/2+N,M/2+N/2+1:M/2+N/2+N);
0127 
0128    imagen ((i-1)*N+1:i*N,(j-1)*N+1:j*N) = Bloque;
0129    
0130 end
0131    
0132 
0133 
0134 % Parte izquierda: influencia 6 bloques
0135 
0136 j=1;
0137 
0138 for i=2:nver-1
0139    cf = 1;
0140    Algo = zeros(2*N+M,M+N);
0141    SumaPesos = zeros(2*N+M,M+N);
0142    for k=i-1:i+1
0143       cc = 1;
0144       for r=j:j+1
0145          B = Im( (k-1)*M+1:k*M, (r-1)*M+1:r*M);
0146          B = B.*p;
0147          
0148          Algo(cf:cf+M-1,cc:cc+M-1) = Algo(cf:cf+M-1,cc:cc+M-1)+B;
0149          SumaPesos(cf:cf+M-1,cc:cc+M-1) = SumaPesos(cf:cf+M-1,cc:cc+M-1) +p;
0150          cc = cc+N;
0151       end
0152       cf = cf + N;
0153    end
0154 
0155    Algo(SumaPesos~=0) = Algo(SumaPesos~=0)./SumaPesos(SumaPesos~=0);
0156    
0157    Bloque = Algo(M/2+N/2+1:M/2+N/2+N,M/2-N/2+1:M/2-N/2+N);
0158 
0159    imagen ((i-1)*N+1:i*N,(j-1)*N+1:j*N) = Bloque;
0160    
0161 end
0162    
0163 
0164 % Parte derecha: influencia 6 bloques
0165 
0166 j=nhor;
0167 
0168 for i=2:nver-1
0169    cf = 1;
0170    Algo = zeros(2*N+M,M+N);
0171    SumaPesos = zeros(2*N+M,M+N);
0172    for k=i-1:i+1
0173       cc = 1;
0174       for r=j-1:j
0175          B = Im( (k-1)*M+1:k*M, (r-1)*M+1:r*M);
0176          B = B.*p;
0177          
0178          Algo(cf:cf+M-1,cc:cc+M-1) = Algo(cf:cf+M-1,cc:cc+M-1)+B;
0179          SumaPesos(cf:cf+M-1,cc:cc+M-1) = SumaPesos(cf:cf+M-1,cc:cc+M-1) +p;
0180          cc = cc+N;
0181       end
0182       cf = cf + N;
0183    end
0184 
0185    Algo(SumaPesos~=0) = Algo(SumaPesos~=0)./SumaPesos(SumaPesos~=0);
0186    
0187    Bloque = Algo(M/2+N/2+1:M/2+N/2+N,M/2+N/2+1:M/2+N/2+N);
0188 
0189    imagen ((i-1)*N+1:i*N,(j-1)*N+1:j*N) = Bloque;
0190    
0191 end 
0192 
0193 
0194 % Esquina superior izquierda: influencia 4 bloques
0195 
0196             
0197 cf = 1;
0198 Algo = zeros(M+N,M+N);
0199 SumaPesos = zeros(M+N,M+N);
0200 
0201 i=1;
0202 j=1;
0203 
0204 for k=i:i+1
0205    cc = 1;
0206    for r=j:j+1
0207       B = Im( (k-1)*M+1:k*M, (r-1)*M+1:r*M);
0208       B = B.*p;
0209       
0210       Algo(cf:cf+M-1,cc:cc+M-1) = Algo(cf:cf+M-1,cc:cc+M-1)+B;
0211       SumaPesos(cf:cf+M-1,cc:cc+M-1) = SumaPesos(cf:cf+M-1,cc:cc+M-1) +p;
0212       cc = cc+N;
0213    end
0214    cf = cf + N;
0215 end
0216 
0217 Algo(SumaPesos~=0) = Algo(SumaPesos~=0)./SumaPesos(SumaPesos~=0);
0218 
0219 Bloque = Algo(M/2-N/2+1:M/2-N/2+N,M/2-N/2+1:M/2-N/2+N);
0220 
0221 imagen ((i-1)*N+1:i*N,(j-1)*N+1:j*N) = Bloque;
0222             
0223             
0224 % Esquina superior derecha: influencia 4 bloques
0225 
0226             
0227 cf = 1;
0228 Algo = zeros(M+N,M+N);
0229 SumaPesos = zeros(M+N,M+N);
0230 
0231 i=1;
0232 j=nhor;
0233 
0234 for k=i:i+1
0235    cc = 1;
0236    for r=j-1:j
0237       B = Im( (k-1)*M+1:k*M, (r-1)*M+1:r*M);
0238       B = B.*p;
0239       
0240       Algo(cf:cf+M-1,cc:cc+M-1) = Algo(cf:cf+M-1,cc:cc+M-1)+B;
0241       SumaPesos(cf:cf+M-1,cc:cc+M-1) = SumaPesos(cf:cf+M-1,cc:cc+M-1) +p;
0242       cc = cc+N;
0243    end
0244    cf = cf + N;
0245 end
0246 
0247 Algo(SumaPesos~=0) = Algo(SumaPesos~=0)./SumaPesos(SumaPesos~=0);
0248 
0249 Bloque = Algo(M/2-N/2+1:M/2-N/2+N,M/2+N/2+1:M/2+N/2+N);
0250 
0251 imagen ((i-1)*N+1:i*N,(j-1)*N+1:j*N) = Bloque;
0252                         
0253             
0254 % Esquina inferior izquierda: influencia 4 bloques
0255 
0256             
0257 cf = 1;
0258 Algo = zeros(M+N,M+N);
0259 SumaPesos = zeros(M+N,M+N);
0260 
0261 i=nver;
0262 j=1;
0263 
0264 for k=i-1:i
0265    cc = 1;
0266    for r=j:j+1
0267       B = Im( (k-1)*M+1:k*M, (r-1)*M+1:r*M);
0268       B = B.*p;
0269       
0270       Algo(cf:cf+M-1,cc:cc+M-1) = Algo(cf:cf+M-1,cc:cc+M-1)+B;
0271       SumaPesos(cf:cf+M-1,cc:cc+M-1) = SumaPesos(cf:cf+M-1,cc:cc+M-1) +p;
0272       cc = cc+N;
0273    end
0274    cf = cf + N;
0275 end
0276 
0277 Algo(SumaPesos~=0) = Algo(SumaPesos~=0)./SumaPesos(SumaPesos~=0);
0278 
0279 Bloque = Algo(M/2+N/2+1:M/2+N/2+N,M/2-N/2+1:M/2-N/2+N);
0280 
0281 imagen ((i-1)*N+1:i*N,(j-1)*N+1:j*N) = Bloque;
0282                         
0283             
0284 % Esquina inferior derecha: influencia 4 bloques
0285 
0286             
0287 cf = 1;
0288 Algo = zeros(M+N,M+N);
0289 SumaPesos = zeros(M+N,M+N);
0290 
0291 i=nver;
0292 j=nhor;
0293 
0294 for k=i-1:i
0295    cc = 1;
0296    for r=j-1:j
0297       B = Im( (k-1)*M+1:k*M, (r-1)*M+1:r*M);
0298       B = B.*p;
0299       
0300       Algo(cf:cf+M-1,cc:cc+M-1) = Algo(cf:cf+M-1,cc:cc+M-1)+B;
0301       SumaPesos(cf:cf+M-1,cc:cc+M-1) = SumaPesos(cf:cf+M-1,cc:cc+M-1) +p;
0302       cc = cc+N;
0303    end
0304    cf = cf + N;
0305 end
0306 
0307 Algo(SumaPesos~=0) = Algo(SumaPesos~=0)./SumaPesos(SumaPesos~=0);
0308 
0309 Bloque = Algo(M/2+N/2+1:M/2+N/2+N,M/2+N/2+1:M/2+N/2+N);
0310 
0311 imagen ((i-1)*N+1:i*N,(j-1)*N+1:j*N) = Bloque;
0312 
0313 
0314 
0315 
0316 % [fils cols] = size(imagen);
0317 %
0318 % for i=N:N:fils-1
0319 %    for j=2:cols-1
0320 %        imagen(i,j) = sum(sum(imagen(i-1:i+1,j-1:j+1)))/9;
0321 %    end
0322 % end
0323 %
0324 % for j=N:N:fils-1
0325 %    for i=2:cols-1
0326 %        imagen(j,i) = sum(sum(imagen(j-1:j+1,i-1:i+1)))/9;
0327 %    end
0328 % end
0329 %
0330 
0331 
0332 
0333 
0334 
0335

Generated on Wed 29-Nov-2006 16:19:19 by m2html © 2003