Estou fazendo um filtro mediana em java pra suavizar os ruídos de uma imagem
Mas sempre que executo recebo o seguinte erro:
Exception in thread “AWT-EventQueue-0” java.lang.ArrayIndexOutOfBoundsException: 9
public BufferedImage filtroMediana() {
this.cinza = new int[qtdeColunas][qtdeLinhas];
for (int i = 0; i < qtdeColunas; i++) {
for (int j = 0; j < qtdeLinhas; j++) {
cinza[i][j] = (R[i][j] + G[i][j] + B[i][j]) / 3;
}
}
int a = 0;
int[] vet;
int[] vet2;
vet2 = new int [9];
vet = new int[9];
BufferedImage img2 = new BufferedImage(this.qtdeColunas, this.qtdeLinhas, BufferedImage.TYPE_INT_RGB);
for (int i = 1; i < qtdeColunas - 1; i++) {
for (int j = 1; j < qtdeLinhas - 1; j++) {
int media = 0;
for (int coluna = i - 1; coluna <= i + 1; coluna++) {
for (int linha = j - 1; linha <= j + 1; linha++) {
vet[a] = cinza[coluna][linha];
a++;
}
}
for (int coluna = i - 1; coluna <= i + 1; coluna++) {
for (int linha = j - 1; linha <= j + 1; linha++) {
img2.setRGB(coluna, linha, new Color(vet[5], vet[5], vet[5]).getRGB());
}
}
}
}
return img2;
}
Fazendo a depuração, vi que o vetor está sempre recebendo o mesmo valor, sendo que a matriz tem valores diferentes. Alguém poderia me ajudar a encontrar o erro?
eu vi isso
mas como eu tô tentar pegar somente uma matriz 3X3 da matriz da imagem e armazenar os valores dessa matriz 3X3 no vetor e realizar a mediana