Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static int filtterinKoonLaskija(String rivi){
- //tämä operaatio hakee käyttäjän antamasta tekstistä filterin koon
- if (rivi != null){
- //jos käyttäjä antanut vain tekstiksi "filter" koko on 3
- if(rivi.length() < 8){
- return 3;
- }
- else{
- //erotetaan numerot muusta tekstistä
- int filtterinKoko = 0;
- String numeroSanana = "";
- for(int i = 7; i < rivi.length(); i++){
- numeroSanana = numeroSanana + rivi.charAt(i);
- }
- //muutetaan tekstinumerot int muuttujaksi ja palautetaan arvo
- filtterinKoko = Integer.parseInt(numeroSanana);
- return filtterinKoko;
- }
- }
- else{
- return 0;
- }
- }
- public static char[][] suodattaja(char[][] taulu, int filtterinKoko){
- //tämä operaatio suodattaa kuvan mediaanisuodattimella
- if (taulu != null){
- //reunan koko
- int reuna = filtterinKoko / 2;
- //taulukko jossa taulu numeroina
- int numeroTaulukko[][] = new int[taulu.length][taulu[0].length];
- //numerotaulukon täyttösilmukka
- for(int rivi = 0; rivi < taulu.length; rivi++){
- for(int sarake = 0; sarake < taulu[0].length; sarake++){
- for (int merkki = 0; merkki < MERKIT.length; merkki++){
- if(taulu[rivi][sarake] == MERKIT[merkki]){
- numeroTaulukko[rivi][sarake] = MERKITINT[merkki];
- }
- }
- }
- }
- //taulukko jossa mediaaninumerot
- int mediaaniNumerot[] = new int[filtterinKoko * filtterinKoko];
- //taulukko johon laitetaan mediaanit numerotaulukosta
- int [][] mediaaniNumeroTaulukko = new int[taulu.length][taulu[0].length];
- for(int sarake = 0; sarake < taulu.length; sarake++){
- for(int rivi = 0; rivi < taulu[0].length; rivi++){
- mediaaniNumeroTaulukko[sarake][rivi] = numeroTaulukko[sarake][rivi];
- }
- }
- //silmukka jossa etsitään mediaanit
- for(int kaydytRivit = 0; kaydytRivit < numeroTaulukko.length - filtterinKoko + 1; kaydytRivit++){
- for(int kaydytSarakkeet = 0; kaydytSarakkeet < numeroTaulukko[0].length - filtterinKoko + 1;
- kaydytSarakkeet++){
- int taytetytMediaaniNumerot = 0;
- for(int numeronEkaTayttaja = 0; numeronEkaTayttaja < filtterinKoko; numeronEkaTayttaja++){
- for(int numeronTokaTayttaja = 0; numeronTokaTayttaja < filtterinKoko;
- numeronTokaTayttaja++){
- mediaaniNumerot[taytetytMediaaniNumerot]= numeroTaulukko
- [numeronEkaTayttaja + kaydytRivit][numeronTokaTayttaja + kaydytSarakkeet];
- taytetytMediaaniNumerot = taytetytMediaaniNumerot + 1;
- }
- }
- //järjestetään mediaanit pienimmästä suurimpaan
- int i = 0;
- while (i < mediaaniNumerot.length){
- int pieninAlkio = mediaaniNumerot[i];
- for (int x = i; x < mediaaniNumerot.length; x++){
- if (mediaaniNumerot[x] < pieninAlkio){
- pieninAlkio = mediaaniNumerot[x];
- int siirrettava = mediaaniNumerot[i];
- mediaaniNumerot[i] = pieninAlkio;
- mediaaniNumerot[x] = siirrettava;
- }
- }
- i++;
- }
- //laitetaan mediaani mediaaniNumeroTaulukkoon
- int mediaani = mediaaniNumerot[mediaaniNumerot.length / 2];
- mediaaniNumeroTaulukko[kaydytRivit + reuna][kaydytSarakkeet + reuna] = mediaani;
- }
- }
- // vaihdetaan numerot merkeiksi
- for(int rivi = 0; rivi < taulu.length; rivi++){
- for(int sarake = 0; sarake < taulu[0].length; sarake++){
- taulu[rivi][sarake] = MERKIT[mediaaniNumeroTaulukko[rivi][sarake]];
- }
- }
- //palautetaan muokattu kuva
- return taulu;
- }
- else{
- return null;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement