• Sábado 18 de Mayo de 2024, 20:52

Autor Tema:  TRANSFORMACION DEL NIVEL DE GRIS A COLOR  (Leído 6204 veces)

hardoc

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
TRANSFORMACION DEL NIVEL DE GRIS A COLOR
« en: Sábado 9 de Mayo de 2009, 06:37 »
0
HOLA AMIGOS SOY NUEVO CON ESTE PROGRAMA Y PUES EL PRROFESOR SE ESTA PONIENDO MUY EXIGENTE NO NOS ENSEÑA Y QUIERE QUE LE ENTREGUEMOS MUCHAS PRACTICAS UNA DE ELLAS ES ESTA PASAR UNA IMAGEN DE GRISES A COLOR PUES YA ESTUVE INVESTIGANDO MUCHO PERO NO ENCUENTRO NADA YA ESTOY DESESPERADO JIJIJI ESPERO QUE ME AYUDEN POR FAVOR, YA HICE EL DE PASAR UNA IMAGEN DE COLOR A GRISES, PERO AHORA NOS ESTA PIDIENDO ALREVEZ, AYUDENME.

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: TRANSFORMACION DEL NIVEL DE GRIS A COLOR
« Respuesta #1 en: Domingo 10 de Mayo de 2009, 00:37 »
0
Tienes razón, es más complicado el proceso inverso, debido a que en la conversión de color a gris has perdido toda la información de componentes y solamente te quedas con la información de intensidad.

Para conseguir el proceso inverso (que es casi imposible sin información de "ayuda"), existen diferentes estrategias, una puede ser asignar colores aleatorios, otra crear una tabla de colores aproximados para relacionarlos a cada valor de intensidad, otra, intentar algún algoritmo inverso, p. ej., para la conversión a gris la obtuviste mediante una suma ponderada de las tres componentes de color de la imagen (rojo, verde y azul), ahora, cada valor de intensidad entonces tiene un cierto porcentaje de cada color, puedes obtener los porcentajes y relacionarlos de alguna manera con valores de intensidad separando para cada componente. No tengo algoritmos a la mano y por eso no te indico nada, pero intenta inventar alguna estrategia por muy burda que sea, ya imagino que su profesor les indicará alguno :).
La imaginación es el límite.
Hardware & Software | Mexchip

hardoc

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: TRANSFORMACION DEL NIVEL DE GRIS A COLOR
« Respuesta #2 en: Domingo 10 de Mayo de 2009, 05:36 »
0
Hola gracias por tu comentario mira lo que tengo de teoria pero no se como aplicarla en el programa supuestamente son unos algoritmmos o serian unas formulas pero pues no se como aplicarlo, estaba pensando que que se dejaria la suma ponderada para asi sacar el intenso color de gris y asi darselo pero con intensidad de rojo otro para azul y otro para verde y asi a la hora de juntarlos forma el color original les dejo la teoria que tengo va para ver si me pueden hechar la mano
El mensaje contiene 2 archivos adjuntos. Debes ingresar o registrarte para poder verlos y descargarlos.

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: TRANSFORMACION DEL NIVEL DE GRIS A COLOR
« Respuesta #3 en: Martes 12 de Mayo de 2009, 05:51 »
0
Precisamente, en la segunda imagen que colocas (escanear0001) se describe un procedimiento para realizar la conversión de gris a "pseudocolor" (lo de "pseudo" es porque no conseguirás exactamente el resultado original, sino una aproximación), ahí está la fórmula que deberás implementar, así como una tabla de relación de colores que debes proponer de alguna forma. Supongo que en la(s) página(s) anterior(es) a escanear0001 debe haber más información sobre el método, intenta implementarlo y si tienes algún problema, coloca las páginas que te comento (o indica el libro o algún nombre con el que se haga referencia al método mostrado), y consulta aquí que con gusto te echamos una mano.
La imaginación es el límite.
Hardware & Software | Mexchip

hardoc

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: TRANSFORMACION DEL NIVEL DE GRIS A COLOR
« Respuesta #4 en: Miércoles 13 de Mayo de 2009, 03:58 »
0
Gracias por ayudarme y decirme mas o menos, ya le enseñe al profesor lo que hice pero estoy mal, lo que hice fue qu no utilice las formulas que estan hay hice 3 imagenes cada una de su color que es rojo verde y azul RGB, pero con un programa que ya avia hecho pense que con ese pues lo podia unir se llama de super posicion, pero cuando lo vio el profesor pues nada que ver jajaja eso dijo, siento que con las formulas me debe de dar pero esas son las dos hojas las cuales nada mas habla de ese tema espero que me ayuden dejo el codigo que hixe


persona=imread('image.JPG');
[x,y,z]=size(persona);
    for a=1:1:x
        for b=1:1:y
           persona(a,b,1)=round((persona(a,b,1)+persona(a,b,2)+persona(a,b,3))/3);
           persona(a,b,2)=persona(a,b,1);
           persona(a,b,3)=persona(a,b,1);
           
        end
    end
for i=1:1:x
    for j=1:1:y
        R(i,j,1)=255;
        R(i,j,2)= persona(i,j,2);
        R(i,j,3)= persona(i,j,3);

        G(i,j,2)=255;
        G(i,j,1)= persona(i,j,1);
        G(i,j,3)= persona(i,j,3);

        B(i,j,3)=255;
        B(i,j,2)= persona(i,j,2);
        B(i,j,1)= persona(i,j,1);
    end
end
figure,imshow(uint8(R));
figure,imshow(uint8(G));
figure,imshow(uint8(B));


foto1 = imread('21.jpg');
foto2 = imread('22.jpg');
foto3 = imread('23.jpg');

[x,y,z] = size(foto1);
[u,v,w] = size(foto2);
[t,g,s] = size(foto3);

alto = 0;
ancho = 0;

if (x < u)
    alto = x;
end
if(y < v)
    ancho = y;
end
if(x > u)
    alto = u;
end
if(y > v)
    ancho = v;
end
if (x == u)
    alto = x;
end
if(y == v)
    ancho = y;
end
     
suma = zeros(alto,ancho,3);
lambda = 0.5;

for m=1:1:alto
    for n = 1:1:ancho
        suma(m,n,1) = round((foto1(m,n,1) * lambda) + (foto2(m,n,1) * lambda) + (foto3(m,n,1) * lambda));
        suma(m,n,2) = round((foto1(m,n,1) * lambda) + (foto2(m,n,1) * lambda) + (foto3(m,n,1) * lambda));
        suma(m,n,3) = round((foto1(m,n,1) * lambda) + (foto2(m,n,1) * lambda) + (foto3(m,n,1) * lambda));
    end
end
       
 figure, imshow(uint8(suma));




GRACIAS POR SU AYUDA

hardoc

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: TRANSFORMACION DEL NIVEL DE GRIS A COLOR
« Respuesta #5 en: Jueves 14 de Mayo de 2009, 04:21 »
0
Hola de nuevo, en verdad gracias por los comentarios que me han dado e seguido investigando y me he encontrado un programa donde vienen varios programas dentro de el y uno de ellos es el de pseudocolor que es lo que yo quiero hacer, el problema que tengo es que tiene una imagen ya predefinida y no puedo cambiarla para que me de con la imagen que yo quiera, por favor ayudenme se los agradeseria les dejo el programa para que lo chequen y haber si  me pueden ayudar.
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: TRANSFORMACION DEL NIVEL DE GRIS A COLOR
« Respuesta #6 en: Jueves 14 de Mayo de 2009, 09:08 »
0
Tienes un problema de interpretación, ya tienes descrito el algoritmo pero no lo has comprendido para poder pasar a plasmarlo en un programa. De lo que se trata, es ir obteniendo cada pixel en la imagen de escala de grises y obtener una equivalencia de componentes RGB con la fórmula que se indica, basada en la tabla de correspondencias de los valores 0, 128 y 255 de intensidad en escala de grises. Como te mencioné antes, debiera haber más información sobre cómo crear la tabla de equivalencias y cómo obtener el valor del subíndice i (al menos eso esperaría). Si no, la tabla simplemente la propones, y el valor de i podría obtenerse viendo en qué intervalo cae el valor de intensidad a evaluar: i puede tomar los valores 0, 1 o 2; 0 para cuando el valor de intensidad es 0, 1 para cuando 0 < valor_intensidad <= 128 y 2 para 128 < valor_intensidad <= 255 (aclaro, esto lo estoy tratando de deducir a falta de más información que supongo deberías tener).

Una vez determinado el valor del subíndice i, puedes evaluar la fórmula tres veces, una para cada componente (R, G y B). Por ejemplo, para i = 1, R_i sería 100,   R_(i-1) = 5, G_i = 10, B_i = 20, G_(i-1) = 100, B_(i-1) = 60, g_(i-1) = g_0 = 0. En la fórmula, p será el valor de intensidad del pixel en turno, debes recorrer la imagen y evaluar para cada pixel, pasando los valores RGB obtenidos a una nueva imagen.

No es muy complicado una vez que puedes interpretar la teoría, ya está descrito el algoritmo (aunque sigo pensando que faltan algunos detalles que deberían estar en el libro en alguna página anterior), ahora debes interpretarlo y pasar a la codificación.

Espero haberte dado alguna idea y no confundirte más.

En cuanto al programa que conseguiste, no sigue el algoritmo que se describe en la documentación que tienes pero por si te es de utilidad, te comento algunas cosas:
  • la porción que te interesa carga variables del archivo mandrill que viene con la instalación de MATLAB (usado para varios ejemplos), el cual contiene tres variables: X, map y caption.
  • X corresponde a la imagen, pero indexada (o indizada), lo cual significa que cada valor en la matriz no es un valor correspondiente a un color, sino un número que corresponde a una posición en una matriz de colores, llamada paleta. map es la paleta de colores correspondiente a X.
  • la creación de "pseudocolor" se realiza mediante la generación aleatoria de una paleta de colores, aplicada a la imagen indexada X.
  • las imágenes que usan paleta de colores comúnmente son imágenes de 8 bits, las imágenes de 16, 24 y 32 bits no manejan paleta pues pueden representar sin problemas los colores que necesiten para cada valor de pixel, esto lo menciono pues seguramente la gran mayoría de imágenes que tengas a la mano serán de 24 bits. Para utilizar una imagen que tú desees y que funcione de la misma manera, deberás usar una imagen indexada o convertir alguna imagen que no use paleta.

Por último, creo que tu objetivo debería ser intentar implementar la documentación que ya tienes a la mano, no necesitas más, inténtalo y si tienes problemas con la codificación en MATLAB, para eso está este foro.

Hasta pronto y suerte con tu proyecto.
La imaginación es el límite.
Hardware & Software | Mexchip