processamento de imagens digitais
RELATORIO FINAL
PROJETO DE PROCESSAMENTO DE IMAGENS
DIGITAIS.
Lucas Cardozo
Otavio Carvalho
Vinicius Bittencourt Garcia
Gabriel Delavald
Porto Alegre, Junho de 2013
Questão 1
a) Separar os canais de cores da imagem em RGB e exibí-los em tons de cinza. imread: peppers.png/football.jpg
Sample code:
I = imread('peppers.png'); imshow(I(:,:,1)); imshow(I(:,:,2)); imshow(I(:,:,3)); Peppers:
- Channel R
- Channel G:
- Channel B:
Football:
- Channel R:
- Channel G:
- Channel B:
b) Combinar dois canais por vez, e discutir os resultados:
Discussão:
Nas imagens, consegue-se notar claramente a divisão dos dados nos diferentes espaços de cores. Principalmente na imagem dos pimentões, onde os dados dividemse claramente nos espaços de cores dos pimentões vermelhos e verdes. Já no caso da bola de futebol americano, a maior quantidade de dados importantes pode ser percebida no canal do vermelho, e nota-se a maior intensidade de contornos na relação entre os canais vermelho e verde.
- Football - RG:
- Football - RB:
- Football - GB:
- Peppers - RG:
- Peppers - RB:
- Peppers - GB
c) Converter para dois espaços de cores (HSV/YCbCr)
HSV:
function y=rgb2hsv(im)
% rgb2cmy( image )
% Tranformacao de RGB para HSV im = double(im) / 255; ir = double(im(:,:,1)); ig = double(im(:,:,2)); ib = double(im(:,:,3)); bv = max(im,[],3); bnd_min = min(im,[],3); bh = ir; bs = ig;
[li,co] = size(bv); disp('Convertendo imagem de RGB para HSV'); disp('Isso pode levar alguns segundos...'); for i=1:li for j=1:co if bv(i,j) ~= 0.0 bs(i,j) = (bv(i,j) - bnd_min(i,j)) / bv(i,j); else bs(i,j) = 0.0; end % Quando S = 0.0, H e indefinido. H sera definido
% como 0.0 pra manter as saidas no intervalo [0,1] if bs(i,j) == 0.0 bh(i,j) = 0.0; else delta = bv(i,j) - bnd_min(i,j); if ir(i,j) == bv(i,j) bh(i,j) = (ig(i,j) - ib(i,j)) / delta; elseif ig(i,j) ==