El día de hoy tuve la necesidad de transformar una imagen RGB a tono sepia utilizando Matlab. Como no encontré rápidamente un post que me diera la solución, decidí no perder más el tiempo y crear una propia. Aquí dejo el código resultante. Muy posiblemente existan otras formas mejores de hacerlo, pero esta cumplia con mis expectativas. Más adelante dedicaré un post para explicar detalladamente por qué el tono sepia se obtiene de esta manera, pero mientras tanto cuelgo aquí la función.
function result=sepia(X)
tRGB = [0.393 0.769 0.189; 0.349 0.686 0.168; 0.272 0.534 0.131];
R=double(X(:,:,1));
G=double(X(:,:,2));
B=double(X(:,:,3));
%para la capa R
tr=round(R*tRGB(1,1)+G*tRGB(1,2)+B*tRGB(1,3));
tr(tr>255)=255;
%capa G
tg=round(R*tRGB(2,1)+G*tRGB(2,2)+B*tRGB(2,3));
tg(tg>255)=255;
%capa B
tb=round(R*tRGB(3,1)+G*tRGB(3,2)+B*tRGB(3,3));
tg(tg>255)=255;
result=uint8(cat(3,tr,tg,tb));
end
Cómo usarlo
imagenSepia=sepia(imagenRGB);
Para mostrar la imagen que acabas de transformar, puedes utilizar el comando imshow:
imshow(imagenSepia);
Espero que te sirva.
Hola, como carga la imagen?
ResponderEliminarA = imread(filename)
Eliminar