
Problema al descomponer y volver a componer imagen en RGB
Publicado por Xavier (2 intervenciones) el 30/12/2012 10:36:44
Buenos días a todos los programadores de este estupendo foro.
Soy bastante novato en Matlab, y acutualmente me encuentro realizando una pequeña aplicación donde cojo una imágen RGB, la descompongo en sus 3 matrices (R G B), modifico varios píxeles del canal B, vuelvo a unir los 3 canales y después grabo la imágen.
Todo esto funciona correctamente, pero después, al volver a abrir al imágen y volver a descomponer los valores R G B, veo que el valor que yo había modificado no es el mismo.
P.ongo el trozo del código:
MSG='Hola';
Fichero='Imagen.jpg';
handles.imagen2=imread(Fichero);
R2=handles.imagen2(:,:,1);
G2=handles.imagen2(:,:,2);
B2=handles.imagen2(:,:,3);
B2(1,1)=length(MSG);
handles.ImagenCodificada(:,:,1)=R2;
handles.ImagenCodificada(:,:,2)=G2;
handles.ImagenCodificada(:,:,3)=B2;
Fichero='Imagen2.jpg';
imwrite(handles.ImagenCodificada, Fichero);
handles.ImagenCodificada2=imread(Fichero);
B22=handles.ImagenCodificada2(:,:,3);
Si busco la posición B2(1,1) el valor es correcto: 4 (la longitud de la cadena 'Hola')
Cuando grabo la imágen y busco B22(1,1) el valor ya no es 4 sinó 215.
He hecho un montón de pruebas y no hallo la solución...
¿Alguien me puede ayudar?
Un saludo
Soy bastante novato en Matlab, y acutualmente me encuentro realizando una pequeña aplicación donde cojo una imágen RGB, la descompongo en sus 3 matrices (R G B), modifico varios píxeles del canal B, vuelvo a unir los 3 canales y después grabo la imágen.
Todo esto funciona correctamente, pero después, al volver a abrir al imágen y volver a descomponer los valores R G B, veo que el valor que yo había modificado no es el mismo.
P.ongo el trozo del código:
MSG='Hola';
Fichero='Imagen.jpg';
handles.imagen2=imread(Fichero);
R2=handles.imagen2(:,:,1);
G2=handles.imagen2(:,:,2);
B2=handles.imagen2(:,:,3);
B2(1,1)=length(MSG);
handles.ImagenCodificada(:,:,1)=R2;
handles.ImagenCodificada(:,:,2)=G2;
handles.ImagenCodificada(:,:,3)=B2;
Fichero='Imagen2.jpg';
imwrite(handles.ImagenCodificada, Fichero);
handles.ImagenCodificada2=imread(Fichero);
B22=handles.ImagenCodificada2(:,:,3);
Si busco la posición B2(1,1) el valor es correcto: 4 (la longitud de la cadena 'Hola')
Cuando grabo la imágen y busco B22(1,1) el valor ya no es 4 sinó 215.
He hecho un montón de pruebas y no hallo la solución...
¿Alguien me puede ayudar?
Un saludo
Valora esta pregunta


0