Sie sind auf Seite 1von 14

PARALELISMO CON MATLAB

PROCESAMIENTO DE IMÁGENES
MATLAB

 Matlab es un software matemático que maneja la programación en lenguaje m, el elemento básico es una matriz
que no necesita ser dimensionada y está basado en las bibliotecas de algebra: LAPACK(Linear Algebra Packege) y
BLAS(Basic Linear Algebra Subprograms), además de manejar un ambiente de programación brinda el manejo de
gráficos y simulaciones.
 Presenta un conjunto de cajas de herramientas utilizadas para resolver problemas particulares, uno de ellos es la
programación paralela que utiliza: Parallel Computing Toolbox y MATLAB Distributed Computing Server.
PARALLEL COMPUTING TOOLBOX

 Permite resolver problemas de alto costo computacional utilizando procesadores multinúcleo, GPU y clústeres,
contiene un conjunto de comandos que permiten paralelizar ciertos segmentos de código secuencial, como
bucles y matrices distribuidas. Permite la programación paralela sin MPI. Tiene un conjunto de comandos que
permiten modificar la programación secuencial, analizaremos los principales:
 1.Parallel for-loop (PARFOR)
 2.Single Program Multiple Data (SPMD)
MATLAB DISTRIBUTED COMPUTING SERVER

 Trabaja conjuntamente con Parallel Computing Toolbox, permitiendo ejecutar programas computacionalmente
intensivos en conjuntos de computadoras denominados Clúster o Grids, se admite trabajos por lotes,
procesamiento de conjuntos grandes de datos entre otros, permite la instalación y ejecución del servicio MDCE
para constatar la conexión entre todos los nodos que ejecutarán los programas paralelamente.
 El servidor de computación distribuida de MATLAB le permite ejecutar un uso computacional intensivo
programas MATLAB y modelos Simulink en agrupaciones de computadoras, nubes y cuadrículas, lo que le permite
acelerar los cálculos y resolver grandes problemas.
PROCESAMIENTO PARALELO
PARALELISMO LOCAL VS CLUSTER

 Programación paralela en Matlab (en la izquierda Paralelo Local y en la derecha paralela en clúster).
CLUSTER
VIDEO
PROCESAMIENTO DE IMÁGENES

Decimación
La decimación o diezmado de una imagen consiste en reducir el tamaño de una imagen eliminando pixeles
EJEMPLO

 Se tiene un video de duración 1min aproximadamente, el cual se segmenta en imágenes (2078), cada una de ellas
está decimada a un factor n, en el siguiente código, n se ha tomado=2, luego de esto, se procede a concatenar el
conjunto de imágenes con menor resolución y volver al video inicial, dado que existen varios datos que procesar
se ha introducido el paralelismo, de tal manera que se obtiene los siguientes resultados
 Secuencial: 45-50 s
 Paralelo local: 29-34 s
 Paralelo en clúster con 3 PC: 22-18s
EJEMPLO

 %CREAR DIRECTORIO
 workingDir = 'C:\Users\ADM-DGIP\Desktop';
 mkdir(workingDir);
 mkdir(workingDir,'images');
 shuttleVideo = VideoReader('vid.mp4');
 h=0;
 n=2;
 Tic
 % DESCOMPONER VIDEO EN FRAMES
 parfor ii=1:2078
 img = readFrame(shuttleVideo);
 filename = [sprintf('%.4d',ii) '.jpg'];
 fullname = fullfile(workingDir,'images',filename);
 imwrite(img,fullname) % Write out to a JPEG file (img1.jpg, img2.jpg, etc.)
 h=h+ii;
 end
EJEMPLO

 %DECIMADO DE TODAS LAS IMÁGENES QUE CONTIENE EL VIDEO


 parfor i=1:2077
 a=strcat(string(filtro(i)),'.jpg');
 imagen=imread(char(a));
 imagen_siaub2= imagen(1:n:end,1:n:end,1:1:end);
 filename = [sprintf('%.4d',i) '.jpg'];
 fullname = fullfile(workingDir,'images',filename);
 imwrite(imagen_siaub2,fullname)
 end
EJEMPLO
 %RECOPILACION DE LAS IMÁGENES DE MENOR CALIDAD EN UN VIDEO
 imageNames = dir(fullfile(workingDir,'images','*.jpg'));

 imageNames = sort({imageNames.name});
 outputVideo = VideoWriter(fullfile(workingDir,'shuttle_out.avi'));
 outputVideo.FrameRate = shuttleVideo.FrameRate;
 open(outputVideo);

 for ii = 1:length(imageNames)-1
 img = imread(fullfile(workingDir,'images',imageNames{ii}));
 writeVideo(outputVideo,img)
 end
 close(outputVideo)
 toc

Das könnte Ihnen auch gefallen