Você está na página 1de 12

Faculdade de Ciências Aplicadas Objetivos

e Sociais de Petrolina – FACAPE


Processamento de Imagens Dar uma visão geral dos fundamentos de
processamento digital de imagens.
com MATLAB Introdução a ferramentas analíticas
atualmente usadas em processamento de
imagens a fim de obter informações de
imagens e processá-las.
Desenvolver a habilidade de aplicar estas
ferramentas em realce de imagens,
segmentação e extração de características
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 coleção de
MATLAB é um ambiente otimizado para
funções MATLAB que ampliam a capacidade do
operação com matrizes. ambiente de computação numérica do MATLAB.
Imagens são matrizes. O toolbox oferece uma enorme quantidade de
Existem muitas funções embutidas no operações em processamento de imagens:
Toolbox Processamento de Imagens do Operações geométricas
MATLAB úteis ao tratamento de imagens. Operações ponto-a-ponto e orientada à vizinhança
Diversos tipos de filtragem
É muito fácil escrever suas próprias funções Transformadas
de processamento de imagens. Análise e realce de imagens
Operações sobre imagens binárias, 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 binárias
Double (64-bit double-precision
BMP (Microsoft Windows Bitmap) floating point) Em uma imagem binária, cada pixel assume
GIF (Graphics Interchange Files) Single (32-bit single-precision
floating point)
apenas um de dois valores discretos possíveis:
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 Visualização de imagens.
componentes R (red), G (green) e B (blue) para cada
pixel. Protótipo:
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.
Protótipo: Protótipo:
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 gráfico.
Para imagens coloridas: Protótipo:
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 binária
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


Dimensões de uma imagem Conversão 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. Protótipo:
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:
parâmetro, 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

Conversão entre tipos Conversão 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.
Protótipo:
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
Conversão entre tipos Conversão entre tipos - Resumo

Comando rgb2ind
dither ind2rgb
Converte uma imagem RGB para uma imagem
indexada. gray2ind mat2gray
Protótipo: 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 extração de bordas de uma imagem.
isbw Protótipo:
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


Operações geométricas Operações geométricas
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

Operações geométricas Operações geométricas


Comando imresize
Altera o tamanho de uma imagem.
Comando imrotate
Protótipo: Rotaciona uma imagem.
B = imresize(A, M, 'method')
'method' = Protótipo:
nearest = vizinho mais próximo B = imrotate(A, Ângulo, 'method');
bilinear = interpolação bilinear
bicubic = interpolação bicúbica 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
Operações geométricas Operações aritméticas

imabsdiff imlincomb
imadd immultiply
rotacionada de 35º

imcomplement imsubtract
imdivide

original

Processamento Digital de Imagens 29 Processamento Digital de Imagens 30

Operações aritméticas Operações aritméticas


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
Operações aritméticas Cálculos estatísticos
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); Protótipo:
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

Cálculos estatísticos Realce de imagem

Comando mean2 Comando histeq


Calcula a média de uma matriz bidimensional. Calcula a equalização de histograma.
Protótipo: Exemplo:
M = mean2(A) >> I2 = histeq(I);
>> figure, imshow(I2)
Comando std2 >> figure, imhist(I2)
Calcula o desvio padrão bidimensional. Comando imadjust
Protótipo:
D = std2(A)
Realiza a especificação 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.
Protótipo:
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


continuação...
>> h = [1 2 1; 0 0 0; -1 -2 -1]; Comando fspecial
>> I2 = filter2(h,I); Cria um filtro 2D de um tipo específico.
>> 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 Função MATLAB
Uma função MATLAB tem parâmetros de entrada
Filtragem linear e saída.
conv2 MATLAB pode retornar mais de uma variável no
convolução bidimensional final de uma função.
Variáveis no escopo de uma função MATLAB
convmtx2 saem do escopo e são eliminadas quando a
função MATLAB deixa de existir.
matriz de convolução bidimensional
Protótipo:
convn function [output] = function_name(input_arguments)
Exemplo:
convolução n-dimensional function [output] = square(input)
output = input*input;
end
Processamento Digital de Imagens 41 Processamento Digital de Imagens 42

Função MATLAB Exercício 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 informações 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 (níveis de cinza).
..... 4. Agora converta-o para uma imagem binária (preto e
end branco).
end Mais:
imwrite (im2, 'saida.bmp', 'bmp'); 1. Use subplots para mostrar todas as três imagens.
end 2. Você encontra o ovo de páscoa na árvore?

Processamento Digital de Imagens 43 Processamento Digital de Imagens 44


Solução
>> 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

Você também pode gostar