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; }
/** * 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(); }
/** * 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; }
/** * 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; }
/** * 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(); }
/** * 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; }
/** * 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; }