Пример #1
0
  public boolean ifft(String imagePath, String outputFileName) throws FourierException {

    setFile(new File(imagePath)); // Define objeto BufferedImage para encapsular a imagem
    BufferedImage src, output = null;
    FourierImagem fft;

    // Armazena arquivo imagem numa BufferedImage
    try {
      src = ImageIO.read(inputFile);
    } catch (IOException e1) {
      throw new FourierException(FourierException.ARQUIVO_N_EXISTE);
    }

    // Espectro de fourier como saída
    fft = new FourierImagem(src);
    fft.transform(); // direta
    fft.transform(); // inversa
    output = fft.toImage(fft.getGrayImage());

    // Persistência em arquivo com formato bmp
    File outputFile = new File(outputFileName);
    try {
      ImageIO.write(output, "JPG", outputFile);
    } catch (IOException e) {
      throw new FourierException(FourierException.ERRO_SALVAR_SAIDA);
    }

    return true;
  }
Пример #2
0
  /**
   * Transforma a imagem de entrada no domínio do espaço em uma imagem no domínio da freqüência com
   * a realização da transformada rápida de Fourier.
   *
   * @param src a imagem no domínio do espaço passada como parâmetro
   * @return a imagem no domínio da freqüência
   * @throws FourierException caso existam problemas no processo de mudança de domínio
   */
  public BufferedImage computeSpectrum(BufferedImage src) throws FourierException {

    FourierImagem fft = new FourierImagem(src);
    fft.transform();

    return fft.getEspectro();
  }
Пример #3
0
  /**
   * Realiza a operação de filtragem com o filtro passa alta butterworth, retornando a imagem
   * resultante no domínio da freqüência
   *
   * @param src Image de entrada
   * @param raio o raio do filtro passa alta
   * @return a imagem filtrada
   * @throws FourierException caso não seja possível realizar a operação ou existam erros no
   *     procedimento
   */
  public static BufferedImage butterworthPassaAltaFreq(BufferedImage src, double raio, int n)
      throws FourierException {

    BufferedImage resultadoFreq = null;

    // Filtragem no domínio da freqüência
    FourierImagem fr = new FourierImagem(src);
    fr.transform();
    Filtragem.filtroButterworthPassaAlta(fr, n, raio);
    resultadoFreq = fr.getEspectro();

    return resultadoFreq;
  }
Пример #4
0
  /**
   * Realiza a operação de filtragem com o filtro passa baixa gaussiano, retornando a imagem
   * resultante no domínio da freqüência
   *
   * @param src Image de entrada
   * @param raio o raio do filtro passa alta
   * @return a imagem filtrada
   * @throws FourierException caso não seja possível realizar a operação ou existam erros no
   *     procedimento
   */
  public static BufferedImage gaussianoPassaBaixaFreq(BufferedImage src, double raio)
      throws FourierException {

    BufferedImage resultadoFreq = null;

    // Filtragem no domínio da freqüência
    FourierImagem fr = new FourierImagem(src);
    fr.transform();
    Filtragem.filtroGaussianoPassaBaixa(fr, raio);
    resultadoFreq = fr.getEspectro();

    return resultadoFreq;
  }
Пример #5
0
  /**
   * Realiza a operação de filtragem com o filtro rejeita faixa, retornando a imagem resultante no
   * domínio da freqüência, onde ficam mais evidentes os efeitos filtragem
   *
   * @param src Image de entrada
   * @param raioInterno o raio interno do filtro
   * @param raioExterno o raio externo do filtro
   * @return a imagem filtrada
   * @throws FourierException caso não seja possível realizar a operação ou existam erros no
   *     procedimento
   */
  public BufferedImage rejeitaFaixaFreq(BufferedImage src, double raioInterno, double raioExterno)
      throws FourierException {

    if ((raioInterno < 0) || (raioInterno > 1) || (raioExterno < 0) || (raioExterno > 1)) {
      throw new FourierException(FourierException.RAIO_FAIXA);
    }

    // Filtragem no domínio da freqüência
    FourierImagem fr = new FourierImagem(src);
    fr.transform();
    Filtragem.rejeitaFaixa(fr, raioInterno, raioExterno);
    return fr.getEspectro();
  }
Пример #6
0
  /**
   * Realiza a operação de filtragem com o filtro rejeita faixa, retornando a imagem resultante no
   * domínio do espaço, onde ficam mais evidentes os efeitos filtragem
   *
   * @param src Image de entrada
   * @param raioInterno o raio interno do filtro
   * @param raioExterno o raio externo do filtro
   * @return a imagem filtrada
   * @throws FourierException caso não seja possível realizar a operação ou existam erros no
   *     procedimento
   */
  public BufferedImage rejeitaFaixaEsp(BufferedImage src, double raioInterno, double raioExterno)
      throws FourierException {

    BufferedImage resultadoEspaco = null;

    // Filtragem no domínio da freqüência
    FourierImagem fr = new FourierImagem(src);
    fr.transform();
    Filtragem.rejeitaFaixa(fr, raioInterno, raioExterno);

    // Voltar para o domínio do espaço
    fr.transform();
    resultadoEspaco = fr.toImage(fr.getGrayImage());
    return resultadoEspaco;
  }
Пример #7
0
  /**
   * Realiza a operação de filtragem com o filtro passa alta, retornando a imagem resultante no
   * domínio do espaço, onde ficam mais evidentes os efeitos filtragem
   *
   * @param src Image de entrada
   * @param raio o raio do filtro passa alta
   * @return a imagem filtrada
   * @throws FourierException caso não seja possível realizar a operação ou existam erros no
   *     procedimento
   */
  public static BufferedImage passaAltaEsp(BufferedImage src, double raio) throws FourierException {

    BufferedImage resultadoEspaco;

    // Filtragem no domínio da freqüência
    FourierImagem fr = new FourierImagem(src);
    fr.transform();
    Filtragem.passaAlta(fr, raio);

    // Voltar para o domínio do espaço
    fr.transform();
    resultadoEspaco = fr.toImage(fr.getGrayImage());

    return resultadoEspaco;
  }