Programación Específica > Matlab

 TRANSFORMACION DEL NIVEL DE GRIS A COLOR

(1/2) > >>

hardoc:
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:
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 :).

hardoc:
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

Geo:
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.

hardoc:
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

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa