Eu preciso exibir uma imagem .RAW que processei no código abaixo. Alguém pode me ajudar?
Eu coloquei a imagem raw no atributo fileIn usando a classe RandomAcessFile. Depois, li o arquivo fileIn através do método readUnsignedByte() e coloquei os dados em uma matriz de inteiros: int img[ ][ ] para serem manipulados.
Alguém possui algum código para exibir uma imagem raw a partir de uma matriz de inteiros?
import java.awt.image.*;
import javax.imageio.*;
import java.io.*;
public class ConvolutionHighPassFilter
{
public int i, j, m, n;
public int pixel,correctSum;
public int filterDim, lenFilterDim;
public int bound,height = -1, width = -1;
public int img[][];
public String source, destination;
RandomAccessFile fileIn,fileOut;
public ConvolutionHighPassFilter(String source, String height, String width,
String filterDim, String destination){
try{
this.height = Integer.parseInt(height);
this.width = Integer.parseInt(width);
this.filterDim = Integer.parseInt(filterDim);
this.source = source;
this.destination = destination;
fileIn = new RandomAccessFile (this.source,"r");
fileOut = new RandomAccessFile (this.destination,"rw");
i = j = m = n = 0;
pixel = correctSum = 0;
img = new int[this.width][this.height];
bound = 0;
}
catch(Exception e){System.out.println("Error constructor");}
}//End Constructor
//coeficiente calculado
public void highPassFilter(){
try {
int Tmp[][] = new int[width][height];
int Filter[][] = new int[filterDim][filterDim];
lenFilterDim = filterDim*filterDim;
bound = filterDim/2;
//Lê imagem e preenche img e Tmp com seus valores
for(i = 0; i < width; i++)
for(j = 0; j < height; j++)
img[i][j] = Tmp[i][j] = fileIn.readUnsignedByte();
//CRIAR CLASSE OU MÉTODO PARA O FILTRO
for(i = 0; i < filterDim; i++)
for(j = 0; j < filterDim; j++)
Filter[i][j] = i - bound; //coeficiente = ...-2 -1 0 1 2...
for(i = bound; i < width - bound; i++){
for(j = bound; j < (height - bound); j++)
{
pixel = 0;
for(m = 0; m < filterDim; m++)
for(n = 0; n < filterDim; n++)
pixel += Filter[m][n] *
Tmp[m + i - bound][n + j - bound];
pixel = pixel/lenFilterDim;
correctSum = ((pixel >= 0) && (pixel < 256) ? pixel : 255);
img[i][j] = correctSum;
}
}
for(i = 0; i < width; i++)
for(j = 0; j < height; j++)
fileOut.writeByte(img[i][j]);
fileOut.close();
}
catch (Exception e) {
System.out.println("Error convolution");}
}//End highPassFilter() Method
public static void main(String[] args)
{
System.out.println("Begin...");
ConvolutionHighPassFilter test =
// new ConvolutionHighPassFilter(args[0],args[1],args[2],args[3],args[4]);
new ConvolutionHighPassFilter(“c:/512.raw”,”512”,”512”,”5”,”c:/512Processed.raw”);
test.highPassFilter();
System.out.println("Finish...");
}
} //public class Convolucao
Pergunta
Guest --marcjr --
Eu preciso exibir uma imagem .RAW que processei no código abaixo. Alguém pode me ajudar?
Eu coloquei a imagem raw no atributo fileIn usando a classe RandomAcessFile. Depois, li o arquivo fileIn através do método readUnsignedByte() e coloquei os dados em uma matriz de inteiros: int img[ ][ ] para serem manipulados.
Alguém possui algum código para exibir uma imagem raw a partir de uma matriz de inteiros?
import java.awt.image.*; import javax.imageio.*; import java.io.*; public class ConvolutionHighPassFilter { public int i, j, m, n; public int pixel,correctSum; public int filterDim, lenFilterDim; public int bound,height = -1, width = -1; public int img[][]; public String source, destination; RandomAccessFile fileIn,fileOut; public ConvolutionHighPassFilter(String source, String height, String width, String filterDim, String destination){ try{ this.height = Integer.parseInt(height); this.width = Integer.parseInt(width); this.filterDim = Integer.parseInt(filterDim); this.source = source; this.destination = destination; fileIn = new RandomAccessFile (this.source,"r"); fileOut = new RandomAccessFile (this.destination,"rw"); i = j = m = n = 0; pixel = correctSum = 0; img = new int[this.width][this.height]; bound = 0; } catch(Exception e){System.out.println("Error constructor");} }//End Constructor //coeficiente calculado public void highPassFilter(){ try { int Tmp[][] = new int[width][height]; int Filter[][] = new int[filterDim][filterDim]; lenFilterDim = filterDim*filterDim; bound = filterDim/2; //Lê imagem e preenche img e Tmp com seus valores for(i = 0; i < width; i++) for(j = 0; j < height; j++) img[i][j] = Tmp[i][j] = fileIn.readUnsignedByte(); //CRIAR CLASSE OU MÉTODO PARA O FILTRO for(i = 0; i < filterDim; i++) for(j = 0; j < filterDim; j++) Filter[i][j] = i - bound; //coeficiente = ...-2 -1 0 1 2... for(i = bound; i < width - bound; i++){ for(j = bound; j < (height - bound); j++) { pixel = 0; for(m = 0; m < filterDim; m++) for(n = 0; n < filterDim; n++) pixel += Filter[m][n] * Tmp[m + i - bound][n + j - bound]; pixel = pixel/lenFilterDim; correctSum = ((pixel >= 0) && (pixel < 256) ? pixel : 255); img[i][j] = correctSum; } } for(i = 0; i < width; i++) for(j = 0; j < height; j++) fileOut.writeByte(img[i][j]); fileOut.close(); } catch (Exception e) { System.out.println("Error convolution");} }//End highPassFilter() Method public static void main(String[] args) { System.out.println("Begin..."); ConvolutionHighPassFilter test = // new ConvolutionHighPassFilter(args[0],args[1],args[2],args[3],args[4]); new ConvolutionHighPassFilter(“c:/512.raw”,”512”,”512”,”5”,”c:/512Processed.raw”); test.highPassFilter(); System.out.println("Finish..."); } } //public class ConvolucaoLink para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.