Uma imagem bitmap pode ser utilizada para testar os algoritmos e códigos de exemplos fornecidos neste material:
Figura 1.Imagem Original.
A cor é composta de 3 componentes: o vermelho, o verde e o azul. É comum identificar a cor pelos elementos RGB (iniciais do inglês referentes às componentes de cor Red, Gree, Blue).
O código a seguir apresenta uma definição de classe referente a Cor, com seus três componentes básicos
class Cor { int vermelho; int verde; int azul; }
Em uma imagem matricial, podemos filtrar uma única cor do conjunto de cores RGB. Neste algoritmo de exemplo, estamos apenas pegando a cor vermelha da imagem.
Figura 2.Somente com a componente cor vermelha.
imagemOrigem imagemDestino Para y = 0; até imagemOrigem.altura fazer Para x = 0 até imagemOrigem.largura fazer cor = pegarPixel(imagemOrigem, x, y) cor.verde = 0 cor.azul = 0 pintarPixel(imagemDestino, x, y, cor) Fim para Fim para
Você pode fazer o download do código em C referente ao algoritmo acima, assim como um código que separa as três cores, gerando três novas images filtradas.
Uma imagem pode ser redimensionada, gerando uma nova imagem de tamanho diferente da original. No exemplo a seguir, a imagem é reduzida para sua metade, tanto em largura como em sua altura.
Figura 3.A Metade do tamanho da imagem original.
imagemOrigem imagemDestino imagemDestino.tamanho(imagemOrigem.largura / 2, imagemOrigem.altura / 2) Para y = 0; até imagemDestino.altura fazer Para x = 0 até imagemDestino.largura fazer cor = pegarPixel(imagemOrigem, x * 2, y * 2) pintarPixel(imagemDestino, x, y, cor) Fim para Fim para
Aqui pode ser feito o download do código em C do redimensionamento da imagem, gerando uma nova imagem reduzida.
Para criar o efeito de Line Art de uma imagem, devemos primeiramente transformar as cores da imagem em tons de cinza e, depois modificar suas cores. Neste exemplo, caso a cor resultante for menor que 127, então a cor se transformará em 0 (preto), senão ela se transformará em 255 (branco).
Figura 4.Line Art.
imagemOrigem imagemDestino Para y = 0; até imagemOrigem.altura fazer Para x = 0 até imagemOrigem.largura fazer cor = cinza(pegarPixel(imagemOrigem, x * 2, y * 2)) Se cor < 127 então cor = 0 senão cor = 255 pintarPixel(imagemDestino, x, y, cor); Fim para Fim para
Aqui você pode fazer o download do código em C do exemplo apresentado acima, para transformar a imagem em line art.
O algoritmo de filtro a seguir é proposto para detectar boradas em imagens, baseado no algoritmo de detecção de bordas de Saulo P. Zambiasi. Este algoritmo transforma a imagem em lineart e compara se seus pixeis (x,y) são diferentes dos pixeis (x+1, y+1).
Figura 5.Algoritmo de detecção de bordas.
imagemOrigem imagemDestino Para y = 0; até imagemOrigem.altura fazer Para x = 0 até imagemOrigem.largura fazer corA = lineart(pegarPixel(imagemOrigem, x, y); corA = lineart(pegarPixel(imagemOrigem, x+1, y+1); se corA = corB então cor = 255; senao cor = 0; pintarPixel(imagemDestino, x, y, cor); Fim para Fim para
Aqui você pode fazer o download do código em C do exemplo apresentado acima, para detectar as bordas da imagem.
[voltar]