clear all,clc,close all,more off
try  % Para cargar el páquete de imágenes en OCTAVE
    pkg load image % Si no esta instalado, usar: pkg install image-2.6.1.tar.gz
                   % o el que obtenga de http://octave.sourceforge.net/packages.php
end

posfig=[20,30,1100,600];  posg=[0.25 0.1 0.7 0.8];

h=figure(1);
set(h,'Resize','off','Position',posfig,'Color',[1 1 1],...
   'Name','CONVERSION RGB ==> L*a*b* (Iluminante D65)')
axes('Position',posg,'box','on','color',[.8 .9 .8]);

alt=580;

leer=uicontrol(gcf,'Style','pushbutton','String','1) Leer imagen...',...
    'Position',[5,alt-30,200,40],'FontSize',16,...
    'BackgroundColor',[1 .8 .7],'Callback',...
    ['A=leerimagenmainO(calclab,calclabds,npuntos,posg,leer);'],...
    'tooltip','Abre una ventana para buscar y seleccionar la imagen a usar');

qucal=uicontrol(gcf,'Style','pushbutton','String','2) Calibrar',...
    'BackgroundColor',[.9 .7 .6],'Position',[5,alt-80,200,40],...
    'FontSize',16,'Callback',...
    ['if exist(''A''),calibracionrapidaO(qucal,A),else,',...
    'errordlg(''No hay imagen''),end'],...
    'tooltip','Seleccionar el parche marrón (arriba, izquierda) y el negro (abajo, derecha). Si no salen en esos lugares, rotar la imagen en la ventana de comandos u otro programa');

cortarimagen=uicontrol(gcf,'Style','pushbutton','String',...
    '3) Cortar región a medir','FontSize',13,...
    'BackgroundColor',[.8 .6 .5],'Position',[5,alt-130,200,40],...
    'Callback',['A=imcrop(A);cla,pause(0.1),imshow(A)'],...
    'tooltip','OCTAVE: dos clicks para seleccionar esquinas opuestas de la región rectangular a medir. MATLAB: seleccionar la región rectangular. Doble click en la región, o botón derecho, Crop image');

alt2=400;

uicontrol(gcf,'Style','text','String','4) Modelo:','BackgroundColor','r',...
    'Foregroundcolor','w','FontSize',16,'Position',[5,alt2,200,25],...
    'tooltip','Si tiene ColorChecker y usó Calibración, usar el modelo empírico. Caso contrario, usar el modelo directo, pero TENER CUIDADO SON LOS RESULTADOS!');

modelo=uicontrol(gcf,'Style','popupmenu','String','Cuadrático+interacciones|Directo',...
    'BackgroundColor','y','FontSize',12,...
    'Position',[5,alt2-32,200,30],'value',1);

calcul=uicontrol(gcf,'Style','pushbutton','String','5) RGB>L*a*b*(D65)',...
    'Position',[5,alt2-100,200,45],'FontSize',12,...
    'FontWeight','Bold','BackgroundColor',[.5 .9 1],...
    'Callback',['if exist(''A'');',...
    '[Lab,promedios,desviaciones]=transform_rgb2labO(A,h,calclab,calclabds,npuntos,calcul,modelo);',...
    'else,errordlg(''No hay imagen'',''Error''),end;'],...
    'tooltip','Toma los valores RGB de la región seleccionada, aplica el modelo elegido para obtener L*a*b* (para iluminante D65)');

chk55=uicontrol(gcf,'Style','pushbutton','String','Graficar Superficies L*a*b*',...
    'BackgroundColor',[.9 .5 .3],'Position',[5,alt2-140,200,30],'FontSize',10,...
    'Callback',['if exist(''Lab''),graficosO(Lab),else,',...
    'errordlg(''No existe L*a*b*'',''Error''),end']);

alt3=220;
uicontrol(gcf,'Style','text','String','L*a*b* PROMEDIO:',...
    'BackgroundColor','w','Position',[5,alt3,150,25],'FontSize',11);
calclab=uicontrol(gcf,'Style','edit','String','',...
    'Position',[5,alt3-25,200,25],'FontSize',11);
uicontrol(gcf,'Style','text','String','L*a*b* D. ESTANDAR:',...
    'BackgroundColor','w','Position',[5,alt3-50,150,20],'FontSize',11);
calclabds=uicontrol(gcf,'Style','edit','String','',...
    'Position',[5,alt3-75,200,22],'FontSize',11);
uicontrol(gcf,'Style','text','String','PUNTOS:',...
    'BackgroundColor','w','Position',[5,alt3-100,75,20],'FontSize',11);
npuntos=uicontrol(gcf,'Style','edit','String','',...
    'Position',[80,alt3-100,125,22],'FontSize',11);

parche=uicontrol(gcf,'Style','pushbutton','String','Ver parche RGB',...
    'BackgroundColor',[.5 .6 .3],'Position',[5,alt3-140,140,22],'FontSize',10,...
    'Callback',['if exist(''promedios''),inversorlabrgbO(promedios(1),promedios(2),promedios(3));else,',...
    'errordlg(''No existe L*a*b*'',''Error''),end'],...
    'tooltip','Toma los valores L*a*b*, los convierte a RGB usando el modelo teórico y muestra un parche de color');

CD65=uicontrol(gcf,'Style','pushbutton','String','Lab C a D65',...
    'BackgroundColor',[.6 .7 .3],'Position',[5,alt3-180,140,22],'FontSize',10,...
    'Callback',['transformar_C_D65_O()'],'tooltip','Se usa para convertir valores del iluminante C al iluminante D65');

alt4=5;
uicontrol(gcf,'Style','pushbutton','String','Cerrar',...
    'Position',[2,alt4,85,20], 'Callback','clear all,clc,close all',...
    'FontSize',11,'BackgroundColor',[1 0.4 0]);
uicontrol(gcf,'Style','pushbutton','String','Reiniciar',...
    'Position',[100,alt4,85,20],'Callback','clear all,close all,siscolorO',...
    'FontSize',11,'BackgroundColor',[1 0.4 0]);
clc