convert image in matlab

Respuestas (2)

Image Analyst
Image Analyst el 3 de Sept. de 2013

0 votos

There are various Photoshop tutorials to turn images into sketches or cartoons. You can do the same things in MATLAB if you can figure out what some of the filters do. For example: Photoshop sketch tutorials
DGM
DGM el 22 de Jun. de 2022
Editada: DGM el 22 de Jun. de 2022

0 votos

As IA notes, in order to find out how to do a Photoshop task in MATLAB, you figure out how to do it in Photoshop first. Translating the task to MATLAB is going to be difficult, since basic color adjustment, blending and compositing tools don't exist in base MATLAB or IPT. MIMT does have a lot of the basics covered, but it's still no Photoshop. Think of it as a half-baked GIMP-like in MATLAB.
Grabbing a couple textures and the first PS tutorial that showed up in a web search, I came up with this. It's not exactly a clone of the process, and I'm using blend modes that aren't available in PS, but the concept is similar.
% read base image
inpict = imread('peppers.png');
inpict = mono(inpict,'y'); % desaturate
sz = imsize(inpict,2);
% read sketch texture
sktexture = imread('sketchtexture1.jpg');
sktexture = imresize(sktexture,0.5); % scale
sktexture = imcrop(sktexture,[100 100 fliplr(sz)-1]); % crop out a region
sktexture = mono(sktexture,'y'); % desaturate
% read paper texture
ptexture = imread('papertexture1.jpg');
ptexture = imresize(ptexture,0.25); % scale
ptexture = imcrop(ptexture,[1 1 fliplr(sz)-1]); % crop out a region
% prepare edge layer
edges = imgaussfilt(inpict,3);
edges = imblend(iminv(edges),inpict,1,'colordodge');
edges = imlnc(edges,'independent','in',stretchlim(edges),'k',2,'g',2);
% prepare textured shading layer
shading = medfilt2(inpict,[17 17]); % reduce detail
shading = imflatfield(shading,50); % flatten
shading = imlnc(shading,'independent','k',2,'g',0.5);
shading = imblend(sktexture,shading,1,'contrast',1);
shading = imlnc(shading,'independent','k',2);
% blend layers
outpict = imblend(edges,shading,1,'multiply');
outpict = imblend(ptexture,outpict,1,'scaleadd',0.5);
imshow(outpict)
It's not perfect. I probably could've used a better sketch texture, but it works well enough.
Then again, the question wasn't really ever clear about what "hand drawn" meant. There are other old techniques.
%% rotoscope/painting filter examples
inpict = imread('peppers.png');
% DGM's awful rotoscope filter
m = nhfilter(inpict,'median',10);
e2 = imadjust(255-edgemap(mono(m,'y')));
e2 = imadjust(e2,[0.5 0.9]);
B = imblend(e2,m,1,'multiply');
% Mark Lowry's "Landscape Painter" filter for GIMP's FXF circa 2006
darkenlayer = imgaussfilt(inpict,5);
C = imblend(darkenlayer,inpict,1,'darkenrgb');
outpict = [B; C];
imshow(outpict)

Categorías

Más información sobre Convert Image Type en Centro de ayuda y File Exchange.

Etiquetas

Aún no se han introducido etiquetas.

Preguntada:

el 3 de Sept. de 2013

Editada:

DGM
el 22 de Jun. de 2022

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by