ola pessoal !! será que alguem pode me ajudar a criar um método que recebera como parametro uma matriz e um limiar ,e tera que binarizar esta matriz recebida , onde se transformará os pixels em zero
se (o valor atual for menor ou igual ao limiar) ou 1 (se o valor atual for maior que o limiar).
o método tem essa assinatura binarizaImagem(imagem, limiar):
se alguem puder dar um help eu agradeço !!! obrigado pelo espaço!!
então cara esse é um exercicio progrma que preciso fazer!!
ele recebera informações da placa através de matrizes, mas eu começei a progrmar agora , então estou meio perdido , consegui fazer dois metodos , anteriores a este, que irão dar forma as matrizes recebidas, para ai poder binarizar!!! o que eu fiz foi esta classe , mas não esta completa!! e de ante-mão desculpe a ignorância!!
importjava.util.Scanner;publicclassImagem{intnb=0;inta[][];intconverteVetorMatriz(int[]vetorImg,intnLinhas,intnColunas){vetorImg=newint[nColunas*nLinhas];for(inti=0;i<nColunas;i++){for(intj=0;j<nLinhas;j++){System.out.println("Entre A["+i+"]["+j+"]");}}System.out.println();for(inti=0;i<nColunas;i++){for(intj=0;j<nLinhas;j++){vetorImg[nb]=a[i][j];nb++;}}for(inti=0;i<nColunas*nLinhas;i++){System.out.println(vetorImg[i]+" ");}returnvetorImg[nColunas*nLinhas];}intcomparaImagem(intimagemUm[][],intimagemDois[][]){intm=0;intn=0;inti,j;for(i=0;i<m;i++)for(j=0;j<n;j++){System.out.printf("ImagemUm[%d][%d]\n",i+1,j+1);}for(i=0;i<m;i++)for(j=0;j<n;j++){System.out.printf("ImagemDois[%d][%d]\n",i+1,j+1);}for(i=0;i<m;i++)for(j=0;j<n;j++)if(imagemUm[i][j]!=imagemDois[i][j]){return1;}else{return0;}return-1;}intbinarizaImagem(int[]imagem,intlimiar){// aqui é que esta o problema!}
T
thingol
Bom, já que você tem um vetor unidimensional, basta um for apenas. Tem certeza que é unidimensional?
intbinarizaImagem(int[]imagem,intlimiar){for(inti=0; i < imagem.length; ++i) {....completeaquicomoqueachaquedeveser}
}
R
rodsoliver
então cara , no método converteVetorMatriz, esse recebera um vetor uni e transformará em bi , nem sei se esta certo o que eu fiz, ai o metodo compara ,vericará os tamanhos, e o binariza recebe uma matriz ,que a principio não esta binarizada e a binariza como te falei no exemplo ,com o fundo em zeros e o numero formado em um!!
T
thingol
Uma coisa que eu percebi é que você foi programando direto, sem saber para que serve cada coisa, e simplesmente foi tirando os erros de compilação. Por exemplo, o método “comparaImagem” usa os valores de m e de n iguais a zero, ou seja, ele sempre supõe que a matriz seja completamente vazia. Que tal passar esses tamanhos como parâmetros do método, hein?
T
thingol
De fato,
vetorImg[nb]=a[i][j];
O que ocorre no código acima? Responda a alternativa correta. Sua chance de acertar é 50%.
a) Você pega o valor de vetorImg[nb] e o copia sobre a[i][j].
b) Você pega o valor de a[i][j] (que está indefinido) e joga sobre vetorImg[nb].
O que o operador de atribuição “=” faz? Copia as coisas da esquerda para a direita ou da direita para a esquerda?
R
rodsoliver
cara acho que a b) e copia da esquerda para direirta ! certo?
T
thingol
É a b), mas você confundiu o sentido. É da direita para a esquerda. Por isso, você já viu que deveria ser
a[i][j]=vetorImg[nb];
já que você queria criar uma matriz bidimensional a partir de um vetor unidimensional.
R
rodsoliver
blz valeu ,mas para binariza-la agora como posso fazer?, cara desculpa as perguntas frequentes ,é que estava atolado de coisas e sem tempo para faze-lo, mas quero realmente aprender ,para que fique claro !! mas ja esta ajudando valeu!
T
thingol
A primeira coisa é refazer a definição da classe Imagem. Do jeito que ela está, há muita confusão sobre o que é entrada e o que é saída.