Matlab - Ayuda con problemas de color map

 
Vista:
sin imagen de perfil

Ayuda con problemas de color map

Publicado por Francisco Javier (4 intervenciones) el 24/03/2016 22:59:17
Hola a todos estoy teniendo un gran problema con la GUI de matlab:

Estoy intentando visualizar tres imágenes en tres axes diferentes, cada uno de los axes tienen diferentes tags, entonces dos de las imágenes las quiero en escala de grises pero en el otro axes la quiero en un color map específico, estoy teniendo el problema de que cuando le aplico el color map a la tercera imagen este color map también es aplicado a las otras dos imágenes...
No veo por ningún lado el error.

Un saludo a todos y gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Dave
Val: 497
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Ayuda con problemas de color map

Publicado por Dave (1094 intervenciones) el 25/03/2016 00:46:33
Hola Francisco;

Esta situación es un problema comun, pero se puede solucionar con la función Matlab "freezeColors" que la puedes descargar desde el siguiente link:

http://www.mathworks.com/matlabcentral/fileexchange/7943-freezecolors---unfreezecolors

Adicionalmente te dejo un ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
figure('color','w')
subplot(1,2,1)
image(X);
colormap(map);
% Here's John's contribution:
freezeColors
 
subplot(1,2,2)
contour(P,15)
colormap(copper)
axis ij square
pcolor(P)
axis ij square
shading flat

freezecolors_potw_04

​Espero que sea de alguna ayuda.

Saludos
Dave Correa
[email protected]
[email protected]
Servicios de Programación Matlab
http://fismatlab.org​​
http://fismatlab.blogspot.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda con problemas de color map

Publicado por Francisco Javier (4 intervenciones) el 25/03/2016 01:12:38
Hola descargue esa función pero no llega a resolverme el problema a continuación cargo unas imágenes y el código para aclarar cual es mi problema:

Como se puede ver en esta imagen:
ejemplo1

El objetivo es que las dos imagenes pequeñas solo se vean en escala de grises mientras que la imagen grande si que se vea tal y como esta.

Tras aplicar freeeze color obtengo el siguiente resultado:

ejemplo2

En este caso es como si se congelase el color map de una imagen y dejase de aparecer. Aquí dejo el código.
Mediante esta función llamo y muestro las imágenes en los axes:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function Muestra_Imagen(Cubo_PT,Cubo_CT,handles,InfoPT_ord,InfoCT_ord,i,SUV_MIN,HU_MIN,HU_MAX,gp)
    axes(handles.ImagenPT)
%        axis off;
%        imshow(Cubo_PT(:,:,i),[]);
        imagesc(Cubo_PT(:,:,i));
        colormap(gray);
        freezeColors;
        axis off;
    axes(handles.ImagenCT);
%         axis off;
%         imshow(Cubo_CT(:,:,i),[]);
        imagesc(Cubo_CT(:,:,i));
        colormap(gray);
        freezeColors;
        axis off;
    axes(handles.BAT)
        trozo=CreaTrozo(Cubo_PT(:,:,i),InfoCT_ord{1,i},InfoPT_ord{1,i});
        Fusiona(Cubo_CT(:,:,i),trozo,SUV_MIN,HU_MIN,HU_MAX,gp);
end

En la función fusiona es donde llamo a la imagen grande que es la fusión de las otras dos imágenes:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
function Fusiona(imCT,trozo,SUV,HU_MIN,HU_MAX,gp)
%         tam1=size(imCT,1);
%         tam2=size(imCT,2);
%         aux=zeros(tam1,tam2);
%         aux=imCT;
        color = zeros(512,512,3);
        color(:,:,3) = (imCT-min(min(imCT)))./(max(max(imCT))-min(min(imCT)));
        color(:,:,2) = (trozo-min(min(trozo)))./(max(max(trozo))-min(min(trozo)));
        if(gp==0)
        color(:,:,1) = (trozo > SUV) & (imCT > HU_MIN) & (imCT < HU_MAX);
        end
        % imtool(color)
 
        % %%
        % color = zeros([size(imPETscaled,1) size(imPETscaled,2) 3]);
        % posinic = round((CT.ImagePositionPatient(1:2) - PETscaled.ImagePositionPatient(1:2))./CT.PixelSpacing);
        % color(posinic(1):posinic(1)+size(imCT,1)-1,posinic(2):posinic(2)+size(imCT,2)-1 ,3) = (imCT-min(min(imCT)))./(max(max(imCT)-min(min(imCT))));
        % color(:,:,2)= (imPETscaled-min(min(imPETscaled)))./(max(max(imPETscaled)-min(min(imPETscaled))));
        % imtool(color);
        %
        %
 
%         h = figure (100);
%         h.ToolBar= 'none';
%         h.Position = [1 1 1024 1024];
%         subplot('Position', [0.5 0.5 0.5 0.5]); image(im2uint8(color(:,:,3))); axis('image'); axis('off');
%         subplot('Position', [0.0 0.5 0.5 0.5]); image(im2uint8(color(:,:,2))); axis('image'); axis('off');
        %        subplot('Position', [0.5 0.0 0.5 0.5]); imshow(color,[]);
 
        alpha = 0.33;
 
%         subplot('Position', [0.0 0.0 0.5 0.5]); image(im2uint8(color(:,:,3)));
%         hold on; subplot('Position', [0.0 0.0 0.5 0.5]); hPT = image(uint16(im2uint8(color(:,:,2)))+256);hold off;
%         set(hPT, 'alphadata',alpha*ones(size(color(:,:,3))))
%         axis('image'); axis('off');
 
 
        %         subplot('Position', [0.5 0.0 0.5 0.5]); image(im2uint8(color(:,:,3)));
        %         hold on; subplot('Position', [0.5 0.0 0.5 0.5]); hPT = image(uint16(im2uint8(color(:,:,2)))+256);hold off;
        %         alpha = 0.25;
        %         set(hPT, 'alphadata',alpha*ones(size(color(:,:,3))))
        %
        %         hold on; subplot('Position', [0.5 0.0 0.5 0.5]); hBAT = image(uint16(im2uint8(color(:,:,1)))+512);hold off;
        %         alpha = 0.5;
        %
        %         set(hBAT, 'alphadata',alpha*ones(size(color(:,:,3))))
        %
        %         axis('image'); axis('off');
 
        %        commonCMAP = [gray(256); hot(256); zeros(255,3) ; [0 0 1]];
 
 
 
        PET_BAT = im2uint8(color(:,:,2));
        PET_BAT(PET_BAT == 255) = 254;
 
        PET_BAT(color(:,:,1) == 1) = 255;
 
        %h = figure(100);
 
        %subplot('Position', [0.5 0.0 0.5 0.5]); 
        image(im2uint8(color(:,:,3)));
        hold on;
        %subplot('Position', [0.5 0.0 0.5 0.5]);
        hPT = image(uint16(PET_BAT)+256);
        hold off;
        axis('image'); axis('off');
        set(hPT,'alphadata',alpha*ones(size(color(:,:,3))));
        commonCMAP = [gray(256); hot(256)];
        commonCMAP(512,:) = [0 0 1];
        colormap(commonCMAP);

Un cordial saludo y muchas gracias por la respuesta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Ayuda con problemas de color map

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 25/03/2016 01:32:59
Deberías subir tanto el fig y el archivo con la opcion de adjuntar archivos para poder bajar y ejecutar el programa y ver los arreglos pertinentes en lo posible.

Saludos.
JOSE JEREMÍAS CABALLERO
Asesoría online en Matlab
Servicios de programación matlab
[email protected]
El correo es para servicios de programación, toda ayuda gratuita es vía
foro.

http://matlabcaballero.blogspot.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Dave
Val: 497
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Ayuda con problemas de color map

Publicado por Dave (1094 intervenciones) el 25/03/2016 07:00:28
Hola Francisco;

Te sugiero que primer hagas unas pruebas con dos imagenes simples en un script y poco a poco vayas agregandoles los elementos de especificos de los análisis de las imágenes que deseas realizar, por otro lado, en lo posible trata de crear o organizar mejor tu código a través del uso de funciones y/o sub-funciones.

​Espero que sea de alguna ayuda.

Saludos
Dave Correa
[email protected]
[email protected]
Servicios de Programación Matlab
http://fismatlab.org​​
http://fismatlab.blogspot.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar