Home > PR > do_overlapping.m

do_overlapping

PURPOSE ^

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

SYNOPSIS ^

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

DESCRIPTION ^

   function imagen = do_overlapping(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 
 pesos_overlapping

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 %   function imagen = do_overlapping(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 % pesos_overlapping
0009 %
0010 
0011 function imagen = do_overlapping(Im,M,N,ov)
0012 
0013 
0014 p=pesos_overlapping(M,N,ov);
0015 
0016 [nv nh]=size(Im);
0017 
0018 nhor = nh/M;
0019 nver = nv/M; 
0020 
0021 imagen = zeros(nhor*N,nver*N);
0022 
0023 % Parte central: influencia 9 bloques
0024 
0025 for i=2:nver-1
0026    for j=2:nhor-1
0027       cf = 1;
0028       Algo = zeros(2*N+M);
0029       SumaPesos = zeros(2*N+M);
0030       for k=i-1:i+1
0031          cc = 1;
0032          for r=j-1:j+1
0033             B = Im( (k-1)*M+1:k*M, (r-1)*M+1:r*M);
0034             B = B.*p;
0035             
0036             Algo(cf:cf+M-1,cc:cc+M-1) = Algo(cf:cf+M-1,cc:cc+M-1)+B;
0037             SumaPesos(cf:cf+M-1,cc:cc+M-1) = SumaPesos(cf:cf+M-1,cc:cc+M-1) +p;
0038             cc = cc+N;
0039          end
0040          cf = cf + N;
0041       end
0042 
0043       Algo(SumaPesos~=0) = Algo(SumaPesos~=0)./SumaPesos(SumaPesos~=0);
0044       
0045       Bloque = Algo(M/2+N/2+1:M/2+N/2+N,M/2+N/2+1:M/2+N/2+N);
0046 
0047       imagen ((i-1)*N+1:i*N,(j-1)*N+1:j*N) = Bloque;
0048       
0049    end
0050 end
0051             
0052 
0053 % Parte superior: influencia 6 bloques
0054 
0055 i=1;
0056 
0057 for j=2:nhor-1
0058    cf = 1;
0059    Algo = zeros(M+N,2*N+M);
0060    SumaPesos = zeros(M+N,2*N+M);
0061    for k=i:i+1
0062       cc = 1;
0063       for r=j-1:j+1
0064          B = Im( (k-1)*M+1:k*M, (r-1)*M+1:r*M);
0065          B = B.*p;
0066          
0067          Algo(cf:cf+M-1,cc:cc+M-1) = Algo(cf:cf+M-1,cc:cc+M-1)+B;
0068          SumaPesos(cf:cf+M-1,cc:cc+M-1) = SumaPesos(cf:cf+M-1,cc:cc+M-1) +p;
0069          cc = cc+N;
0070       end
0071       cf = cf + N;
0072    end
0073 
0074    Algo(SumaPesos~=0) = Algo(SumaPesos~=0)./SumaPesos(SumaPesos~=0);
0075    
0076    Bloque = Algo(M/2-N/2+1:M/2-N/2+N,M/2+N/2+1:M/2+N/2+N);
0077 
0078    imagen ((i-1)*N+1:i*N,(j-1)*N+1:j*N) = Bloque;
0079    
0080 end
0081    
0082    
0083 % Parte inferior: influencia 6 bloques
0084 
0085 i=nver;
0086 
0087 for j=2:nhor-1
0088    cf = 1;
0089    Algo = zeros(M+N,2*N+M);
0090    SumaPesos = zeros(M+N,2*N+M);
0091    for k=i-1:i
0092       cc = 1;
0093       for r=j-1:j+1
0094          B = Im( (k-1)*M+1:k*M, (r-1)*M+1:r*M);
0095          B = B.*p;
0096          
0097          Algo(cf:cf+M-1,cc:cc+M-1) = Algo(cf:cf+M-1,cc:cc+M-1)+B;
0098          SumaPesos(cf:cf+M-1,cc:cc+M-1) = SumaPesos(cf:cf+M-1,cc:cc+M-1) +p;
0099          cc = cc+N;
0100       end
0101       cf = cf + N;
0102    end
0103 
0104    Algo(SumaPesos~=0) = Algo(SumaPesos~=0)./SumaPesos(SumaPesos~=0);
0105    
0106    Bloque = Algo(M/2+N/2+1:M/2+N/2+N,M/2+N/2+1:M/2+N/2+N);
0107 
0108    imagen ((i-1)*N+1:i*N,(j-1)*N+1:j*N) = Bloque;
0109    
0110 end
0111    
0112 
0113 
0114 % Parte izquierda: influencia 6 bloques
0115 
0116 j=1;
0117 
0118 for i=2:nver-1
0119    cf = 1;
0120    Algo = zeros(2*N+M,M+N);
0121    SumaPesos = zeros(2*N+M,M+N);
0122    for k=i-1:i+1
0123       cc = 1;
0124       for r=j:j+1
0125          B = Im( (k-1)*M+1:k*M, (r-1)*M+1:r*M);
0126          B = B.*p;
0127          
0128          Algo(cf:cf+M-1,cc:cc+M-1) = Algo(cf:cf+M-1,cc:cc+M-1)+B;
0129          SumaPesos(cf:cf+M-1,cc:cc+M-1) = SumaPesos(cf:cf+M-1,cc:cc+M-1) +p;
0130          cc = cc+N;
0131       end
0132       cf = cf + N;
0133    end
0134 
0135    Algo(SumaPesos~=0) = Algo(SumaPesos~=0)./SumaPesos(SumaPesos~=0);
0136    
0137    Bloque = Algo(M/2+N/2+1:M/2+N/2+N,M/2-N/2+1:M/2-N/2+N);
0138 
0139    imagen ((i-1)*N+1:i*N,(j-1)*N+1:j*N) = Bloque;
0140    
0141 end
0142    
0143 
0144 % Parte derecha: influencia 6 bloques
0145 
0146 j=nhor;
0147 
0148 for i=2:nver-1
0149    cf = 1;
0150    Algo = zeros(2*N+M,M+N);
0151    SumaPesos = zeros(2*N+M,M+N);
0152    for k=i-1:i+1
0153       cc = 1;
0154       for r=j-1:j
0155          B = Im( (k-1)*M+1:k*M, (r-1)*M+1:r*M);
0156          B = B.*p;
0157          
0158          Algo(cf:cf+M-1,cc:cc+M-1) = Algo(cf:cf+M-1,cc:cc+M-1)+B;
0159          SumaPesos(cf:cf+M-1,cc:cc+M-1) = SumaPesos(cf:cf+M-1,cc:cc+M-1) +p;
0160          cc = cc+N;
0161       end
0162       cf = cf + N;
0163    end
0164 
0165    Algo(SumaPesos~=0) = Algo(SumaPesos~=0)./SumaPesos(SumaPesos~=0);
0166    
0167    Bloque = Algo(M/2+N/2+1:M/2+N/2+N,M/2+N/2+1:M/2+N/2+N);
0168 
0169    imagen ((i-1)*N+1:i*N,(j-1)*N+1:j*N) = Bloque;
0170    
0171 end 
0172 
0173 
0174 % Esquina superior izquierda: influencia 4 bloques
0175 
0176             
0177 cf = 1;
0178 Algo = zeros(M+N,M+N);
0179 SumaPesos = zeros(M+N,M+N);
0180 
0181 i=1;
0182 j=1;
0183 
0184 for k=i:i+1
0185    cc = 1;
0186    for r=j:j+1
0187       B = Im( (k-1)*M+1:k*M, (r-1)*M+1:r*M);
0188       B = B.*p;
0189       
0190       Algo(cf:cf+M-1,cc:cc+M-1) = Algo(cf:cf+M-1,cc:cc+M-1)+B;
0191       SumaPesos(cf:cf+M-1,cc:cc+M-1) = SumaPesos(cf:cf+M-1,cc:cc+M-1) +p;
0192       cc = cc+N;
0193    end
0194    cf = cf + N;
0195 end
0196 
0197 Algo(SumaPesos~=0) = Algo(SumaPesos~=0)./SumaPesos(SumaPesos~=0);
0198 
0199 Bloque = Algo(M/2-N/2+1:M/2-N/2+N,M/2-N/2+1:M/2-N/2+N);
0200 
0201 imagen ((i-1)*N+1:i*N,(j-1)*N+1:j*N) = Bloque;
0202             
0203             
0204 % Esquina superior derecha: influencia 4 bloques
0205 
0206             
0207 cf = 1;
0208 Algo = zeros(M+N,M+N);
0209 SumaPesos = zeros(M+N,M+N);
0210 
0211 i=1;
0212 j=nhor;
0213 
0214 for k=i:i+1
0215    cc = 1;
0216    for r=j-1:j
0217       B = Im( (k-1)*M+1:k*M, (r-1)*M+1:r*M);
0218       B = B.*p;
0219       
0220       Algo(cf:cf+M-1,cc:cc+M-1) = Algo(cf:cf+M-1,cc:cc+M-1)+B;
0221       SumaPesos(cf:cf+M-1,cc:cc+M-1) = SumaPesos(cf:cf+M-1,cc:cc+M-1) +p;
0222       cc = cc+N;
0223    end
0224    cf = cf + N;
0225 end
0226 
0227 Algo(SumaPesos~=0) = Algo(SumaPesos~=0)./SumaPesos(SumaPesos~=0);
0228 
0229 Bloque = Algo(M/2-N/2+1:M/2-N/2+N,M/2+N/2+1:M/2+N/2+N);
0230 
0231 imagen ((i-1)*N+1:i*N,(j-1)*N+1:j*N) = Bloque;
0232                         
0233             
0234 % Esquina inferior izquierda: influencia 4 bloques
0235 
0236             
0237 cf = 1;
0238 Algo = zeros(M+N,M+N);
0239 SumaPesos = zeros(M+N,M+N);
0240 
0241 i=nver;
0242 j=1;
0243 
0244 for k=i-1:i
0245    cc = 1;
0246    for r=j:j+1
0247       B = Im( (k-1)*M+1:k*M, (r-1)*M+1:r*M);
0248       B = B.*p;
0249       
0250       Algo(cf:cf+M-1,cc:cc+M-1) = Algo(cf:cf+M-1,cc:cc+M-1)+B;
0251       SumaPesos(cf:cf+M-1,cc:cc+M-1) = SumaPesos(cf:cf+M-1,cc:cc+M-1) +p;
0252       cc = cc+N;
0253    end
0254    cf = cf + N;
0255 end
0256 
0257 Algo(SumaPesos~=0) = Algo(SumaPesos~=0)./SumaPesos(SumaPesos~=0);
0258 
0259 Bloque = Algo(M/2+N/2+1:M/2+N/2+N,M/2-N/2+1:M/2-N/2+N);
0260 
0261 imagen ((i-1)*N+1:i*N,(j-1)*N+1:j*N) = Bloque;
0262                         
0263             
0264 % Esquina inferior derecha: influencia 4 bloques
0265 
0266             
0267 cf = 1;
0268 Algo = zeros(M+N,M+N);
0269 SumaPesos = zeros(M+N,M+N);
0270 
0271 i=nver;
0272 j=nhor;
0273 
0274 for k=i-1:i
0275    cc = 1;
0276    for r=j-1:j
0277       B = Im( (k-1)*M+1:k*M, (r-1)*M+1:r*M);
0278       B = B.*p;
0279       
0280       Algo(cf:cf+M-1,cc:cc+M-1) = Algo(cf:cf+M-1,cc:cc+M-1)+B;
0281       SumaPesos(cf:cf+M-1,cc:cc+M-1) = SumaPesos(cf:cf+M-1,cc:cc+M-1) +p;
0282       cc = cc+N;
0283    end
0284    cf = cf + N;
0285 end
0286 
0287 Algo(SumaPesos~=0) = Algo(SumaPesos~=0)./SumaPesos(SumaPesos~=0);
0288 
0289 Bloque = Algo(M/2+N/2+1:M/2+N/2+N,M/2+N/2+1:M/2+N/2+N);
0290 
0291 imagen ((i-1)*N+1:i*N,(j-1)*N+1:j*N) = Bloque;
0292                         
0293             
0294                       
0295          
0296

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