Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
>
Posta o exercício, se não der em PHP vou tentar fazer em JAVA mesmo :D
o exercicio é um pouco extenso. Vou postar um filtro de cada vez.
Introdução
Quando uma imagem é adquirida por uma câmera ou algum outro sistema de captura, ela normalmente
contém variações em intensidade e contraste, conhecidos como “ruídos”, que podem inviabilizar o seu
uso direto se não forem previamente tratadas. O processo de supressão do “ruído” presente em uma
imagem é chamado de suavização. Neste exercício-programa você terá a oportunidade de:
(1) escrever uma classe em Java que implementará três estratégias de suavizaçãao de imagens e
(2) escrever uma classe que permitirá ao usuário carregar, visualizar, suavizar e salvar imagens em arquivos.
Primeira Parte — Suavização
Uma imagem em tons de cinza pode ser definida como uma matriz bidimensional com m linhas e n
colunas onde cada c´elula desta matriz (“pixel”) indica uma intensidade na imagem. Para efeitos deste
EP, cada intensidade ser´a representada por um valor inteiro i, 0 i < 256, onde i = 0 simboliza a
ausˆencia de cor (“cor preta”) e i = 255 simboliza a cor branca. Valores intermedi´arios representam tons
de cinza. No site da disciplina, vocˆe encontrar´a o arquivo Imagem.java, que define a classe Imagem,
que contém como atributo uma matriz bidimensional de tamanho arbitr´ario, um construtor para sua
inicializa¸c˜ao e m´etodos para descobrir a largura (colunas) e altura (linhas) da imagem.
A sua tarefa inicial é adicionar três métodos à classe Imagem.java que permitirão a suavização da
imagem, conforme descritos abaixo:
void filtroMedio(int tamanho)
O filtro médio suaviza uma imagem I através do cálculo da média de todos os valores dos pixels
em uma vizinhança local determinada por tamanho. Para uma vizinhançaa 3x3 (tamanho=3), o valor
do pixel suavizado H na posição (i, j) será:
/applications/core/interface/imageproxy/imageproxy.php?img=http://s4.postimage.org/ke11epitq/image.png&key=a020768255b03d689c81e18af1732205af0c5cd16a33c2c8428a7dc8e304093d" alt="image.png" />
onde I(i, j) representa a intensidade original na posição (i, j). Vocˆe dever´a calcular os valores suavizados
para todos os pixels contidos na imagem. Dependendo da posi¸c˜ao e tamanho do filtro, não será
possível calcular a média usando toda a vizinhança. Um exemplo disto são os cantos da imagem. Neste
caso, você deverá aproveitar a máxima vizinhança possível, respeitando valor de tamanho, ajustando o
peso apropriadamente na equação acima. Você poderá supor que tamanho sempre será ímpar e maior
que 1.
Nota: resolvi isso em 2009 com Java para a faculdade.
/*******************************************************************/
/ MAC 110 - Introdução à Computação /
/ IME-USP - Primeiro Semestre de 2009 /
/ 42 - Roberto Cesar /
/ /
/ Terceiro Exercício-Programa /
/ Arquivo: Imagem.java /
/ /
/ William Bruno Rocha de Moraes n°USP 5992768 /
/ /
/ 27/06/2009 /
/*******************************************************************/
class Imagem
{
public int[][] pixels;
public int altura;
public int largura;
// Inicializa matriz de pixels da classe, e as dimensões
Imagem(int[][] matriz)
{
this.pixels = matriz;
this.altura = altura();
this.largura = largura();
}
// Devolve largura em pixels da imagem
public int largura()
{
if (pixels != null)
return pixels[0].length;
else
return 0;
}
// Devolve altura em pixels da imagem
public int altura()
{
if (pixels != null)
return pixels.length;
else
return 0;
}
public void filtroMedio(int tamanho)
{
}
public void filtroMediano(int tamanho)
{
}
public void filtroGaussiano(double sigma, int tamanho)
{
}Carregando comentários...