El processament d'imatges és una àrea clau en MATLAB, especialment útil en camps com la visió per computador, la medicina, la robòtica i molts altres. En aquest tema, aprendrem a carregar, manipular, analitzar i visualitzar imatges utilitzant les eines i funcions que MATLAB proporciona.
Continguts
Introducció al Processament d'Imatges
El processament d'imatges implica una sèrie d'operacions per millorar, analitzar i extreure informació d'imatges digitals. MATLAB ofereix una àmplia gamma de funcions per treballar amb imatges, des de la lectura i visualització fins a la manipulació i l'anàlisi avançada.
Lectura i Visualització d'Imatges
Lectura d'Imatges
Per llegir una imatge en MATLAB, utilitzem la funció imread. Aquesta funció carrega la imatge en una matriu.
Visualització d'Imatges
Per visualitzar una imatge, utilitzem la funció imshow.
Exemple Pràctic
% Llegir i visualitzar una imatge
imatge = imread('peppers.png');
imshow(imatge);
title('Imatge Original');Manipulació d'Imatges
Conversió a Escala de Grisos
Podem convertir una imatge en color a escala de grisos utilitzant la funció rgb2gray.
% Convertir a escala de grisos
imatge_gris = rgb2gray(imatge);
imshow(imatge_gris);
title('Imatge en Escala de Grisos');Ajust de la Brillantor i el Contrast
Podem ajustar la brillantor i el contrast d'una imatge utilitzant la funció imadjust.
% Ajustar la brillantor i el contrast
imatge_ajustada = imadjust(imatge_gris);
imshow(imatge_ajustada);
title('Imatge amb Brillantor i Contrast Ajustats');Transformacions Geomètriques
Redimensionament
Podem redimensionar una imatge utilitzant la funció imresize.
% Redimensionar la imatge
imatge_redimensionada = imresize(imatge, 0.5);
imshow(imatge_redimensionada);
title('Imatge Redimensionada');Rotació
Podem rotar una imatge utilitzant la funció imrotate.
% Rotar la imatge
imatge_rotada = imrotate(imatge, 45);
imshow(imatge_rotada);
title('Imatge Rotada');Filtratge d'Imatges
Filtre de Suavitzat
Podem aplicar un filtre de suavitzat utilitzant la funció imgaussfilt.
% Aplicar un filtre de suavitzat
imatge_suavitzada = imgaussfilt(imatge, 2);
imshow(imatge_suavitzada);
title('Imatge Suavitzada');Filtre de Sobel
Podem aplicar un filtre de Sobel per detectar vores utilitzant la funció edge.
% Detectar vores amb el filtre de Sobel
imatge_vors = edge(imatge_gris, 'Sobel');
imshow(imatge_vors);
title('Detecció de Vores amb Sobel');Segmentació d'Imatges
Umbralització
Podem segmentar una imatge utilitzant la tècnica d'umbralització amb la funció imbinarize.
% Aplicar umbralització
imatge_binaria = imbinarize(imatge_gris);
imshow(imatge_binaria);
title('Imatge Umbralitzada');Segmentació Basada en Color
Podem segmentar una imatge basada en el color utilitzant la funció roicolor.
% Segmentar basada en color
imatge_segmentada = roicolor(imatge, [100 150], [50 100], [0 50]);
imshow(imatge_segmentada);
title('Segmentació Basada en Color');Exercicis Pràctics
Exercici 1: Lectura i Visualització
- Llegeix una imatge de la teva elecció.
- Visualitza la imatge utilitzant
imshow.
Exercici 2: Conversió a Escala de Grisos
- Converteix la imatge a escala de grisos.
- Visualitza la imatge en escala de grisos.
Exercici 3: Ajust de Brillantor i Contrast
- Ajusta la brillantor i el contrast de la imatge en escala de grisos.
- Visualitza la imatge ajustada.
Exercici 4: Transformacions Geomètriques
- Redimensiona la imatge a la meitat de la seva mida original.
- Rota la imatge 90 graus.
Exercici 5: Filtratge d'Imatges
- Aplica un filtre de suavitzat a la imatge original.
- Detecta les vores de la imatge en escala de grisos utilitzant el filtre de Sobel.
Exercici 6: Segmentació d'Imatges
- Aplica umbralització a la imatge en escala de grisos.
- Segmenta la imatge basada en un color específic.
Solucions
Solució Exercici 1
Solució Exercici 2
% Conversió a escala de grisos
imatge_gris = rgb2gray(imatge);
imshow(imatge_gris);
title('Imatge en Escala de Grisos');Solució Exercici 3
% Ajust de brillantor i contrast
imatge_ajustada = imadjust(imatge_gris);
imshow(imatge_ajustada);
title('Imatge amb Brillantor i Contrast Ajustats');Solució Exercici 4
% Redimensionament
imatge_redimensionada = imresize(imatge, 0.5);
imshow(imatge_redimensionada);
title('Imatge Redimensionada');
% Rotació
imatge_rotada = imrotate(imatge, 90);
imshow(imatge_rotada);
title('Imatge Rotada');Solució Exercici 5
% Filtre de suavitzat
imatge_suavitzada = imgaussfilt(imatge, 2);
imshow(imatge_suavitzada);
title('Imatge Suavitzada');
% Filtre de Sobel
imatge_vors = edge(imatge_gris, 'Sobel');
imshow(imatge_vors);
title('Detecció de Vores amb Sobel');Solució Exercici 6
% Umbralització
imatge_binaria = imbinarize(imatge_gris);
imshow(imatge_binaria);
title('Imatge Umbralitzada');
% Segmentació basada en color
imatge_segmentada = roicolor(imatge, [100 150], [50 100], [0 50]);
imshow(imatge_segmentada);
title('Segmentació Basada en Color');Conclusió
En aquest tema, hem après a treballar amb imatges en MATLAB, des de la lectura i visualització fins a la manipulació, transformació, filtratge i segmentació. Aquests conceptes són fonamentals per a qualsevol aplicació de processament d'imatges i proporcionen una base sòlida per a treballs més avançats en visió per computador i anàlisi d'imatges.
Curs de Programació en MATLAB
Mòdul 1: Introducció a MATLAB
- Començant amb MATLAB
- Interfície i Entorn de MATLAB
- Comandes i Sintaxi Bàsiques
- Variables i Tipus de Dades
- Operacions i Funcions Bàsiques
Mòdul 2: Vectors i Matrius
- Creació de Vectors i Matrius
- Operacions amb Matrius
- Indexació i Segmentació
- Funcions de Matrius
- Àlgebra Lineal en MATLAB
Mòdul 3: Estructures de Programació
- Flux de Control: if, else, switch
- Bucles: for, while
- Funcions: Definició i Abast
- Scripts vs. Funcions
- Depuració i Gestió d'Errors
Mòdul 4: Visualització de Dades
- Conceptes Bàsics de Gràfics
- Gràfics 2D
- Gràfics 3D
- Personalització de Gràfics
- Tècniques Avançades de Gràfics
Mòdul 5: Anàlisi de Dades i Estadística
- Importació i Exportació de Dades
- Estadístiques Descriptives
- Preprocessament de Dades
- Anàlisi de Regressió
- Proves Estadístiques
Mòdul 6: Temes Avançats
- Entrada/Sortida de Fitxers
- Gestió de Grans Conjunts de Dades
- Tècniques d'Optimització
- Conceptes Bàsics de Simulink
- Computació Paral·lela
