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