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.

% Llegir una imatge
imatge = imread('imatge.jpg');

Visualització d'Imatges

Per visualitzar una imatge, utilitzem la funció imshow.

% Visualitzar una imatge
imshow(imatge);

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ó

  1. Llegeix una imatge de la teva elecció.
  2. Visualitza la imatge utilitzant imshow.

Exercici 2: Conversió a Escala de Grisos

  1. Converteix la imatge a escala de grisos.
  2. Visualitza la imatge en escala de grisos.

Exercici 3: Ajust de Brillantor i Contrast

  1. Ajusta la brillantor i el contrast de la imatge en escala de grisos.
  2. Visualitza la imatge ajustada.

Exercici 4: Transformacions Geomètriques

  1. Redimensiona la imatge a la meitat de la seva mida original.
  2. Rota la imatge 90 graus.

Exercici 5: Filtratge d'Imatges

  1. Aplica un filtre de suavitzat a la imatge original.
  2. Detecta les vores de la imatge en escala de grisos utilitzant el filtre de Sobel.

Exercici 6: Segmentació d'Imatges

  1. Aplica umbralització a la imatge en escala de grisos.
  2. Segmenta la imatge basada en un color específic.

Solucions

Solució Exercici 1

% Lectura i visualització
imatge = imread('peppers.png');
imshow(imatge);
title('Imatge Original');

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.

© Copyright 2024. Tots els drets reservats