Sei sulla pagina 1di 12

Faculdade de Cincias Aplicadas Objetivos

e Sociais de Petrolina FACAPE


Processamento de Imagens Dar uma viso geral dos fundamentos de
processamento digital de imagens.
com MATLAB Introduo a ferramentas analticas
atualmente usadas em processamento de
imagens a fim de obter informaes de
imagens e process-las.
Desenvolver a habilidade de aplicar estas
ferramentas em realce de imagens,
segmentao e extrao de caractersticas
usando o ambiente de processamento de
Prof. Sergio imagens do MATLAB.
Processamento Digital de Imagens 1 Processamento Digital de Imagens 2

Imagens no MATLAB Imagens no MATLAB


O Image Processing Toolbox uma coleo de
MATLAB um ambiente otimizado para
funes MATLAB que ampliam a capacidade do
operao com matrizes. ambiente de computao numrica do MATLAB.
Imagens so matrizes. O toolbox oferece uma enorme quantidade de
Existem muitas funes embutidas no operaes em processamento de imagens:
Toolbox Processamento de Imagens do Operaes geomtricas
MATLAB teis ao tratamento de imagens. Operaes ponto-a-ponto e orientada vizinhana
Diversos tipos de filtragem
muito fcil escrever suas prprias funes Transformadas
de processamento de imagens. Anlise e realce de imagens
Operaes sobre imagens binrias, etc.
Processamento Digital de Imagens 3 Processamento Digital de Imagens 4
Imagens no MATLAB Imagens no MATLAB
MATLAB pode importar/exportar Tipos de dados em MATLAB:
diversos formatos de imagens: Imagens binrias
Double (64-bit double-precision
BMP (Microsoft Windows Bitmap) floating point) Em uma imagem binria, cada pixel assume
GIF (Graphics Interchange Files) Single (32-bit single-precision
floating point)
apenas um de dois valores discretos possveis:
HDF (Hierarchical Data Format)
Int32 (32-bit signed integer)
0 (off) e 1 (on).
JPEG (Joint Photographic Experts
Group) Int16 (16-bit signed integer)
PCX (Paintbrush) Int8 (8-bit signed integer)
PBM (Portable Bitmap) Uint32 (32-bit unsigned integer)
PNG (Portable Network Graphics) Uint16 (16-bit unsigned integer)
TIFF (Tagged Image File Format) Uint8 (8-bit unsigned integer)
XWD (X Window Dump)
E diversos outros tipos de dados
de imagens.
Processamento Digital de Imagens 5 Processamento Digital de Imagens 6

Imagens no MATLAB Imagens no MATLAB


Imagens de intensidade (em escala de cinza) Imagens indexadas
Uma imagem de intensidade consiste apenas de uma
matriz, I, cujos valores representam intensidades Uma imagem indexada consiste de uma matriz
dentro de alguma de dados, X, e uma matriz de mapa de cores,
faixa. Por exemplo,
[0 1] (double) ou map.
[0 255] (uint8).

Processamento Digital de Imagens 7 Processamento Digital de Imagens 8


Imagens no MATLAB Image Viewer
Imagens RGB
Uma imagem RGB armazenada em MATLAB como
Comando imshow
dados mxnx3 onde cada camada mxn define as Visualizao de imagens.
componentes R (red), G (green) e B (blue) para cada
pixel. Prottipo:
imshow(nome_do_arquivo)
Exemplo:
imshow('eight.tif')
Alternativas ao imshow
imagesc(I)
imtool(I)
image(I)
Processamento Digital de Imagens 9 Processamento Digital de Imagens 10

Image Viewer E/S de Arquivos de Imagem

Comando imzoom Comando imread


Zoom in ou zoom out em uma imagem. L um arquivo de imagem.
Prottipo: Prottipo:
imzoom(fator) A = imread(filename)
Exemplo: Exemplo: >> clear
>> imshow('eight.tif') >> I = imread('lena.gif');
>> I(1:5, 1:5)
>> imzoom(2) ans =
127 127 127 126 127
127 127 127 126 127
127 127 127 126 127
127 127 127 126 127
127 127 127 126 127
Processamento Digital de Imagens 11 Processamento Digital de Imagens 12
E/S de Arquivos de Imagem E/S de Arquivos de Imagem

Leitura de Imagem BMP. Comando imwrite


[A, MAP] = imread('nome.bmp');
Escreve uma imagem para um arquivo grfico.
Para imagens coloridas: Prottipo:
A = imread('nome.bmp'); imwrite(A, filename, FMT)
Gera uma matriz mxnx3 (onde 3 a quantidade de FMT = formato
planos). Exemplo:
R = A(:, :, 1); % Matriz de tons vermelhos imwrite(A, 'eight', 'tif')
G = A(:, :, 2); % Matriz de tons verdes
B = A(:, :, 3); % Matriz de tons azuis

Processamento Digital de Imagens 13 Processamento Digital de Imagens 14

Imagens e Matrizes Imagens e Matrizes


[1, 1]
Como construir uma Imagem binria
matriz (ou imagem) de o
row = 256;
intensidades?
col = 256;
row = 256;
Row 1 to 256

img = rand(row, col);


col = 256;
img = round(img);
img = zeros(row, col);
figure;
img(100:105, :) = 0.5;
imshow(img);
img(:, 100:105) = 1;
figure; o
Column 1 to 256
imshow(img); [256, 256]

Processamento Digital de Imagens 15 Processamento Digital de Imagens 16


Dimenses de uma imagem Converso entre tipos
Comando im2bw
Comando size
[lin, col] = size(im); Converte uma imagem para preto-e-branco.
Para imagens em tons de cinza, e preto e branco. Prottipo:
BW = im2bw(X, MAP, level)
[lin, col, plan] = size(im); X = imagem original
Para imagens coloridas (plan = 3, indicando que MAP = paleta de cores da imagem original
uma estrutura com 3 matrizes). Para imagens em level = valor de corte (threshold): 0 level 1
tons de cinza ou preto-e-branco, se usado esse Exemplo 1:
parmetro, ele ter valor 1. [A,MAP] = tiffread('eight.tif');
bw = im2bw(A,MAP,0.4);
imshow(bw);
Processamento Digital de Imagens 17 Processamento Digital de Imagens 18

Converso entre tipos Converso entre tipos


Exemplo 2:
level = graythresh(I3);
Comando rgb2gray
bw = im2bw(I3, level);
figure, imshow(bw) Converte uma imagem RGB para uma imagem
em tons de cinza.
Prottipo:
I = rgb2gray(RGB)
RGB = imagem original true color
Exemplo:
A = imread('flowers.tif');
I = rgb2gray(A);
imshow(I);

Imagem original Imagem binarizada


Processamento Digital de Imagens 19 Processamento Digital de Imagens 20
Converso entre tipos Converso entre tipos - Resumo

Comando rgb2ind
dither ind2rgb
Converte uma imagem RGB para uma imagem
indexada. gray2ind mat2gray
Prottipo: grayslice rgb2gray
[X, NEWMAP] = rgb2ind(RGB, n) im2bw rgb2ind
NEWMAP = paleta de cores final
n = n de cores ind2gray

Processamento Digital de Imagens 21 Processamento Digital de Imagens 22

Tipos de imagens Bordas de imagem

Alguns comandos que verificam os tipos de Comando edge


certas imagens: Realiza a extrao de bordas de uma imagem.
isbw Prottipo:
verdadeiro para imagens B&W. BW = edge(A, method);
method: sobel, roberts, prewitt, log, zerocross
isgray
Exemplo:
verdadeiro para imagens em tons de cinza.
>> A = imread('rice', 'tif');
isind >> BW = edge(A, 'sobel');
verdadeiro para imagens indexadas. >> imshow(BW);

Processamento Digital de Imagens 23 Processamento Digital de Imagens 24


Operaes geomtricas Operaes geomtricas
Comando imcrop
Comando imcrop Exemplo 2:
usado para definir uma subimagem retangular >> I=imread('rice.tif');
original
da atual imagem. >> imshow(I)
>> I2 = imcrop;
Exemplo 1: >> imshow(I2)
imshow('eight.tif')
B = imcrop;
Seleciona uma rea com o mouse.

corte

Processamento Digital de Imagens 25 Processamento Digital de Imagens 26

Operaes geomtricas Operaes geomtricas


Comando imresize
Altera o tamanho de uma imagem.
Comando imrotate
Prottipo: Rotaciona uma imagem.
B = imresize(A, M, 'method')
'method' = Prottipo:
nearest = vizinho mais prximo B = imrotate(A, ngulo, 'method');
bilinear = interpolao bilinear
bicubic = interpolao bicbica Method = nearest, bilinear ou bicubic
Retorna uma matriz que M vezes maior (ou menor) que A. Exemplo:
Exemplo 1:
>> A = imread('eight', 'tif'); >> A = imread('ic.tif');
>> B = imresize(A, 0.5, 'nearest'); >> B = imrotate(A, 35, 'bilinear');
>> imshow(B)
>> imshow(A), figure, imshow(B)
Exemplo 2:
>> Ismall = imresize(A, [100 100], 'bilinear');
Processamento Digital de Imagens 27 Processamento Digital de Imagens 28
Operaes geomtricas Operaes aritmticas

imabsdiff imlincomb
imadd immultiply
rotacionada de 35

imcomplement imsubtract
imdivide

original

Processamento Digital de Imagens 29 Processamento Digital de Imagens 30

Operaes aritmticas Operaes aritmticas


Comando iadd: adicionando imagens Clareando imagens
RGB = imread('flowers.tif');
I = imread('rice.tif'); RGB2 = imadd(RGB, 50);
J = imread('cameraman.tif'); subplot(1, 2, 1); imshow(RGB);
K = imadd(I, J); subplot(1, 2, 2); imshow(RGB2);
imshow(K)

imagem IDigital de Imagens


Processamento imagem J imagem K 31 Processamento Digital de Imagens 32
Operaes aritmticas Clculos estatsticos
Comando imsubtract: subtraindo imagens.
Fundo de uma cena.
Comando imhist
rice = imread('rice.tif'); Calcula e mostra o histograma de uma
background = imopen(rice, strel('disk', 15)); imagem.
rice2 = imsubtract(rice, background); Prottipo:
imshow(rice), figure, imshow(rice2); imhist(A): histograma de 256 cores

imhist(A,N): histograma de N cores


Exemplo:
>> figure, imhist(I)

Processamento Digital de Imagens 33 Processamento Digital de Imagens 34

Clculos estatsticos Realce de imagem

Comando mean2 Comando histeq


Calcula a mdia de uma matriz bidimensional. Calcula a equalizao de histograma.
Prottipo: Exemplo:
M = mean2(A) >> I2 = histeq(I);
>> figure, imshow(I2)
Comando std2 >> figure, imhist(I2)
Calcula o desvio padro bidimensional. Comando imadjust
Prottipo:
D = std2(A)
Realiza a especificao de histograma (atribui o
histograma de uma imagem A a outra imagem
B).
Processamento Digital de Imagens 35 Processamento Digital de Imagens 36
Realce de imagem Filtragem de imagem

Comando filter2
Corresponde a um filtro digital bidimensional.
Prottipo:
Filter2(B,X)
Filtra a imagem X usando o filtro FIR definido pela
matriz B.
Exemplo:
>> I = imread('rice.tif');
>> imshow(I);
Histograma equalizado
Histograma original

Imagem equalizada
Imagem original
Processamento Digital de Imagens 37 Processamento Digital de Imagens 38

Filtragem de imagem Filtragem de imagem


continuao...
>> h = [1 2 1; 0 0 0; -1 -2 -1]; Comando fspecial
>> I2 = filter2(h,I); Cria um filtro 2D de um tipo especfico.
>> imshow(I2),colorbar gaussian
Exemplo 1:
sobel >> h=fspecial('laplacian', 5);
>> I2=uint8(round(filter2(h,I)));
prewitt
>> imshow(I2)
laplacian
log Exemplo 2:
>> h=fspecial('sobel');
average >> I2=filter2(h,I));
>> imshow(I2)
unsharp

Imagem original Imagem filtrada


Processamento Digital de Imagens 39 Processamento Digital de Imagens 40
Filtragem de imagem Funo MATLAB
Uma funo MATLAB tem parmetros de entrada
Filtragem linear e sada.
conv2 MATLAB pode retornar mais de uma varivel no
convoluo bidimensional final de uma funo.
Variveis no escopo de uma funo MATLAB
convmtx2 saem do escopo e so eliminadas quando a
funo MATLAB deixa de existir.
matriz de convoluo bidimensional
Prottipo:
convn function [output] = function_name(input_arguments)
Exemplo:
convoluo n-dimensional function [output] = square(input)
output = input*input;
end
Processamento Digital de Imagens 41 Processamento Digital de Imagens 42

Funo MATLAB Exerccio 1


1. Carregue o arquivo tree.tif no MATLAB. Que tipo de
function im2 = teste(nome) imagem essa? Voc pode comentar sobre isso antes
im = imread(nome); de obter informaes do sistema?
[lin, col] = size(im); 2. Mostre a imagem carregada.
for i = 1:lin 3. Converta a imagem para uma imagem de intensidade
for j=1:col (nveis de cinza).
..... 4. Agora converta-o para uma imagem binria (preto e
end branco).
end Mais:
imwrite (im2, 'saida.bmp', 'bmp'); 1. Use subplots para mostrar todas as trs imagens.
end 2. Voc encontra o ovo de pscoa na rvore?

Processamento Digital de Imagens 43 Processamento Digital de Imagens 44


Soluo
>> im_info = imfinfo('trees.tif');
>> im_info(1).ColorType

>> [I,map] = imread('trees.tif');


>> subplot(2,2,1), subimage(I,map)

>> I_gray = ind2gray(I,map);


>> subplot(2,2,2), subimage(I_gray)

>> I_bw = im2bw(I,map,0.4);


>> subplot(2,2,3), subimage(I_bw)

% Easter egg
>> figure
>> [I2,map] = imread('trees.tif',2);
>> imshow(I2,map)

Processamento Digital de Imagens 45