Advertisement
Guest User

munpaste

a guest
Jan 22nd, 2017
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.60 KB | None | 0 0
  1. public static int filtterinKoonLaskija(String rivi){
  2. //tämä operaatio hakee käyttäjän antamasta tekstistä filterin koon
  3. if (rivi != null){
  4. //jos käyttäjä antanut vain tekstiksi "filter" koko on 3
  5. if(rivi.length() < 8){
  6. return 3;
  7. }
  8. else{
  9. //erotetaan numerot muusta tekstistä
  10. int filtterinKoko = 0;
  11. String numeroSanana = "";
  12. for(int i = 7; i < rivi.length(); i++){
  13. numeroSanana = numeroSanana + rivi.charAt(i);
  14. }
  15. //muutetaan tekstinumerot int muuttujaksi ja palautetaan arvo
  16. filtterinKoko = Integer.parseInt(numeroSanana);
  17. return filtterinKoko;
  18. }
  19. }
  20. else{
  21. return 0;
  22. }
  23. }
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30. public static char[][] suodattaja(char[][] taulu, int filtterinKoko){
  31. //tämä operaatio suodattaa kuvan mediaanisuodattimella
  32. if (taulu != null){
  33. //reunan koko
  34. int reuna = filtterinKoko / 2;
  35. //taulukko jossa taulu numeroina
  36. int numeroTaulukko[][] = new int[taulu.length][taulu[0].length];
  37. //numerotaulukon täyttösilmukka
  38. for(int rivi = 0; rivi < taulu.length; rivi++){
  39. for(int sarake = 0; sarake < taulu[0].length; sarake++){
  40. for (int merkki = 0; merkki < MERKIT.length; merkki++){
  41. if(taulu[rivi][sarake] == MERKIT[merkki]){
  42. numeroTaulukko[rivi][sarake] = MERKITINT[merkki];
  43. }
  44. }
  45. }
  46. }
  47. //taulukko jossa mediaaninumerot
  48. int mediaaniNumerot[] = new int[filtterinKoko * filtterinKoko];
  49. //taulukko johon laitetaan mediaanit numerotaulukosta
  50. int [][] mediaaniNumeroTaulukko = new int[taulu.length][taulu[0].length];
  51. for(int sarake = 0; sarake < taulu.length; sarake++){
  52. for(int rivi = 0; rivi < taulu[0].length; rivi++){
  53. mediaaniNumeroTaulukko[sarake][rivi] = numeroTaulukko[sarake][rivi];
  54. }
  55. }
  56. //silmukka jossa etsitään mediaanit
  57. for(int kaydytRivit = 0; kaydytRivit < numeroTaulukko.length - filtterinKoko + 1; kaydytRivit++){
  58. for(int kaydytSarakkeet = 0; kaydytSarakkeet < numeroTaulukko[0].length - filtterinKoko + 1;
  59. kaydytSarakkeet++){
  60. int taytetytMediaaniNumerot = 0;
  61. for(int numeronEkaTayttaja = 0; numeronEkaTayttaja < filtterinKoko; numeronEkaTayttaja++){
  62. for(int numeronTokaTayttaja = 0; numeronTokaTayttaja < filtterinKoko;
  63. numeronTokaTayttaja++){
  64. mediaaniNumerot[taytetytMediaaniNumerot]= numeroTaulukko
  65. [numeronEkaTayttaja + kaydytRivit][numeronTokaTayttaja + kaydytSarakkeet];
  66. taytetytMediaaniNumerot = taytetytMediaaniNumerot + 1;
  67. }
  68. }
  69. //järjestetään mediaanit pienimmästä suurimpaan
  70. int i = 0;
  71. while (i < mediaaniNumerot.length){
  72. int pieninAlkio = mediaaniNumerot[i];
  73. for (int x = i; x < mediaaniNumerot.length; x++){
  74. if (mediaaniNumerot[x] < pieninAlkio){
  75. pieninAlkio = mediaaniNumerot[x];
  76. int siirrettava = mediaaniNumerot[i];
  77. mediaaniNumerot[i] = pieninAlkio;
  78. mediaaniNumerot[x] = siirrettava;
  79. }
  80. }
  81. i++;
  82. }
  83. //laitetaan mediaani mediaaniNumeroTaulukkoon
  84. int mediaani = mediaaniNumerot[mediaaniNumerot.length / 2];
  85. mediaaniNumeroTaulukko[kaydytRivit + reuna][kaydytSarakkeet + reuna] = mediaani;
  86. }
  87. }
  88. // vaihdetaan numerot merkeiksi
  89. for(int rivi = 0; rivi < taulu.length; rivi++){
  90. for(int sarake = 0; sarake < taulu[0].length; sarake++){
  91. taulu[rivi][sarake] = MERKIT[mediaaniNumeroTaulukko[rivi][sarake]];
  92. }
  93. }
  94. //palautetaan muokattu kuva
  95. return taulu;
  96. }
  97. else{
  98. return null;
  99. }
  100. }
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement