IAFET calcula la cantidad de informacion (en unidades relativas) asignada a la zona de frecuencia espacial fe, frecuencia temporal ft y contraste C por el sistema visual, segun una dependencia: K K IAFet(fe,ft,C)= ------------ = ------------------------- Afe Aft AC Cu(fe,ft) + f(fe,ft,C) Donde: Afe = Umbrales incrementales de frecuencia espacial Aft = Umbrales incrementales de frecuencia temporal AC = Umbrales incrementales de contraste y consideramos que Afe y Aft son constantes. Asi mismo, consideramos que los umbrales incrementales de contraste vienen dados por la suma de dos terminos: Cu(fe,ft) = Termino independiente de C Umbral absoluto de contraste para la frecuencia fe,ft Calculado segun la superficie espacio-temporal de Kelly NOTA: Como en la expresion de Kelly hay un log(ft/fe), cuando ft o fe sean cero, se sustituiran por 0.00001 para evitar singularidades. f(fe,ft,C) = Termino DEPENDIENTE de C Da cuenta de la no-linealidad de la respuesta del sistema a contrastes, o lo que es lo mismo, de la no-uniformidad de la sensibilidad en contrastes. Es de sobra conocido que la respuesta (en el caso de ft=0) es no lineal (existen expresiones explicitas para modelizar esta no linealidad), pero no existen datos sobre dichas no-linealidades para frecuencias temporales no nulas. (o al menos yo no los conozco... quiza Pascual si). Aqui supondremos (lo cual es mucho suponer) que la no linea- lidad es analoga a la que se da para ft=0. Podemos no considerar la no-linealidad y trabajar solo con el termino constante: el contraste umbral de Kelly Cu(fe,ft): aplic_no_lineal? Podemos 'elegir' una determinada asignacion de bits por coeficiente frecuencial, es decir, seleccionar una asignacion igual a la que surge de considerar la no li- nealidad, pero imponiendo una distribucion lineal en amplitud. (si se pone un 0 en aplic_no_lineal?, se puede poner un 1 en ciaf_no_lin?) Para una determinada frecuencia temporal, IAFET permite calcular la IAF espacio- temporal para M frecuencias espaciales y N contrastes, de forma que, genera una matriz M*N con el resultado para cada frecuencia espacial en cada fila. NOTAS: * 'fe' debe ser un vector columna y C debe ser un vector fila! * El factor 'facfrec' actua sobre el dominio de frecuencias espaciales en el momento del calculo de la CSFet (Kelly 79), de forma que permite controlar ligeramente el ancho de banda de la CSF: Si facfrec>1 se reduce la banda de paso y si facfrec<1 se aumenta. (Para obtener Elect. Lett. facfrec=0.75-0.8) Esta es una forma chapucera pero rapida de ampliar la banda de paso espacial de la CSFet de Kelly 79 (que no concuerda con Kelly 86 donde aparece mayor). USO: [IAFet,CSFet]=iafet(fe,facfrec,ft,C,[aplic_no_lineal?(0/1) ciaf_no_lin? aplic_log?],estabiliz?(0/1));
0001 function [IAFet,CSFet]=iafet(fe,facfrec,ft,C,nolin,estab) 0002 0003 % IAFET calcula la cantidad de informacion (en unidades relativas) 0004 % asignada a la zona de frecuencia espacial fe, frecuencia temporal 0005 % ft y contraste C por el sistema visual, segun una dependencia: 0006 % 0007 % K K 0008 % IAFet(fe,ft,C)= ------------ = ------------------------- 0009 % Afe Aft AC Cu(fe,ft) + f(fe,ft,C) 0010 % 0011 % Donde: 0012 % 0013 % Afe = Umbrales incrementales de frecuencia espacial 0014 % 0015 % Aft = Umbrales incrementales de frecuencia temporal 0016 % 0017 % AC = Umbrales incrementales de contraste 0018 % 0019 % y consideramos que Afe y Aft son constantes. 0020 % Asi mismo, consideramos que los umbrales incrementales de contraste vienen 0021 % dados por la suma de dos terminos: 0022 % 0023 % Cu(fe,ft) = Termino independiente de C 0024 % Umbral absoluto de contraste para la frecuencia fe,ft 0025 % Calculado segun la superficie espacio-temporal de Kelly 0026 % NOTA: Como en la expresion de Kelly hay un log(ft/fe), 0027 % cuando ft o fe sean cero, se sustituiran por 0.00001 0028 % para evitar singularidades. 0029 % 0030 % f(fe,ft,C) = Termino DEPENDIENTE de C 0031 % Da cuenta de la no-linealidad de la respuesta del sistema a 0032 % contrastes, o lo que es lo mismo, de la no-uniformidad de la 0033 % sensibilidad en contrastes. 0034 % Es de sobra conocido que la respuesta (en el caso de ft=0) 0035 % es no lineal (existen expresiones explicitas para modelizar 0036 % esta no linealidad), pero no existen datos sobre dichas 0037 % no-linealidades para frecuencias temporales no nulas. 0038 % (o al menos yo no los conozco... quiza Pascual si). 0039 % 0040 % Aqui supondremos (lo cual es mucho suponer) que la no linea- 0041 % lidad es analoga a la que se da para ft=0. 0042 % 0043 % Podemos no considerar la no-linealidad y trabajar solo con el termino constante: 0044 % el contraste umbral de Kelly Cu(fe,ft): aplic_no_lineal? 0045 % Podemos 'elegir' una determinada asignacion de bits por coeficiente frecuencial, 0046 % es decir, seleccionar una asignacion igual a la que surge de considerar la no li- 0047 % nealidad, pero imponiendo una distribucion lineal en amplitud. (si se pone un 0 0048 % en aplic_no_lineal?, se puede poner un 1 en ciaf_no_lin?) 0049 % 0050 % Para una determinada frecuencia temporal, IAFET permite calcular la IAF espacio- 0051 % temporal para M frecuencias espaciales y N contrastes, de forma que, genera una 0052 % matriz M*N con el resultado para cada frecuencia espacial en cada fila. 0053 % 0054 % NOTAS: 0055 % 0056 % * 'fe' debe ser un vector columna y C debe ser un vector fila! 0057 % 0058 % * El factor 'facfrec' actua sobre el dominio de frecuencias espaciales en el 0059 % momento del calculo de la CSFet (Kelly 79), de forma que permite controlar 0060 % ligeramente el ancho de banda de la CSF: Si facfrec>1 se reduce la banda 0061 % de paso y si facfrec<1 se aumenta. 0062 % (Para obtener Elect. Lett. facfrec=0.75-0.8) 0063 % Esta es una forma chapucera pero rapida de ampliar la banda de paso espacial 0064 % de la CSFet de Kelly 79 (que no concuerda con Kelly 86 donde aparece mayor). 0065 % 0066 % USO: [IAFet,CSFet]=iafet(fe,facfrec,ft,C,[aplic_no_lineal?(0/1) ciaf_no_lin? aplic_log?],estabiliz?(0/1)); 0067 % 0068 0069 if length(nolin)==1 0070 nolin=[nolin nolin]; 0071 end 0072 0073 nolini=nolin; 0074 nolin=nolini(1); 0075 0076 if ((nolini(1)==0)&(nolini(2)==1)) 0077 nolin=1; 0078 end 0079 0080 fe=fe+0.00001*(fe==0); 0081 0082 % Para ft menores que 0.4 la CSF espacio temporal de Kelly del 79 no se reduce a la 0083 % CSF espacial de Kelly del 85, con lo que utilizamos la expresion sin dependencia de 0084 % ft cuando las frecuencias temporales son lo suficientemente bajas (TODO ESTO EN CASO 0085 % DE ESTABILIZACION). 0086 0087 if estab==1 0088 if ft>0.3 0089 fec=facfrec*fe; 0090 CSFet=(250/1896.4)*(ft.*fec*4*pi^2).*(6.1+7.3*abs(log(ft./(3*fec))).^3).*exp(-(4*pi*(ft+2*fec)/45.9)); 0091 CSFet=0.000001*(CSFet==0)+CSFet; 0092 c1=(1./CSFet)>1; 0093 c2=(1./CSFet)<1; 0094 CSFet=CSFet.*c2+c1; 0095 Cu=1./CSFet; 0096 Cu=Cu*ones(1,length(C)); 0097 % Cu=1./CSFet; 0098 % Cu=Cu.*(Cu<1)+(Cu>=1); 0099 % Cu=Cu*ones(1,length(C)); 0100 else 0101 fm=3; % Frec. max. sensib. 0102 p=1; % Anch. banda 0103 cum=0.004; % Minimo contraste umbral 0104 fe=facfrec*fe; 0105 CSFet=((fe/fm).^p).*exp(-(fe/fm)); 0106 CSFet=CSFet/maxi(CSFet); 0107 CSFet=(1/cum)*CSFet; 0108 CSFet=0.000001*(CSFet==0)+CSFet; 0109 c1=(1./CSFet)>1; 0110 c2=(1./CSFet)<1; 0111 CSFet=CSFet.*c2+c1; 0112 Cu=1./CSFet; 0113 Cu=Cu*ones(1,length(C)); 0114 end 0115 if nolin==1 0116 lonf=length(fe); 0117 fe=fe*ones(1,length(C)); 0118 k=(-0.079389*log10(fe)+0.322725); 0119 n=0.84*((fe.^1.7)./(0.7.^1.7+fe.^1.7)); 0120 C=ones(lonf,1)*C; 0121 IAFet=1./(Cu+(((k.*(C.^n))-Cu).*(C./((Cu./k).^(1./n)+C)))); 0122 else 0123 IAFet=1./Cu; 0124 end 0125 else 0126 fec=facfrec*fe; 0127 CSFet=(250/1896.4)*((ft+0.1*fec).*fec*4*pi^2).*(6.1+7.3*abs(log((ft+0.1*fec)./(3*fec))).^3).*exp(-(4*pi*((ft+0.1*fec)+2*fec)/45.9)); 0128 CSFet=0.000001*(CSFet==0)+CSFet; 0129 c1=(1./CSFet)>1; 0130 c2=(1./CSFet)<1; 0131 CSFet=CSFet.*c2+c1; 0132 Cu=1./CSFet; 0133 Cu=Cu*ones(1,length(C)); 0134 % Cu=1./CSFet; 0135 % Cu=Cu.*(Cu<1)+(Cu>=1); 0136 % Cu=Cu*ones(1,length(C)); 0137 if nolin==1 0138 fe=facfrec*fe; 0139 lonf=length(fe); 0140 fe=fe*ones(1,length(C)); 0141 k=(-0.079389*log10(fe)+0.322725); 0142 n=0.84*((fe.^1.7)./(0.7.^1.7+fe.^1.7)); 0143 C=ones(lonf,1)*C; 0144 IAFet=1./(Cu+(((k.*(C.^n))-Cu).*(C./((Cu./k).^(1./n)+C)))); 0145 else 0146 IAFet=1./Cu; 0147 end 0148 end 0149 0150 if ((nolini(1)==0)&(nolini(2)==1)) 0151 s=size(IAFet); 0152 iafet=sum(IAFet')'; 0153 IAFet=iafet*ones(1,s(2)); 0154 end