Advertisement
Guest User

Untitled

a guest
Dec 11th, 2016
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.60 KB | None | 0 0
  1.  
  2. public class zajecia5 {
  3.  
  4.  
  5.  
  6.     public void noise(Picture picture, int lvl, double probability){
  7.         Random rand = new Random();
  8.         int level=Math.abs(lvl);
  9.  
  10.  
  11.         for(int i = 0; i<picture.getWidth(); i++){
  12.             for(int k = 0; k<picture.getHeight(); k++){
  13.                 Color c = picture.getColor(i, k);
  14.                 int a = rand.nextInt(level);
  15.                 int r = c.getRed()+(int)Math.floor((probability*a));if(r>255)r=255;
  16.                 int g = c.getGreen()+(int)Math.floor((probability*a));if(g>255)g=255;
  17.                 int b = c.getBlue()+(int)Math.floor((probability*a));if(b>255)b=255;
  18.                 picture.setColor(i, k, new Color(r, g, b));
  19.             }}
  20.         System.out.println(level);
  21.     }
  22.  
  23.  
  24.  
  25.     public void peppersalt(double probability, Picture picture){
  26.  
  27.         double amount = probability;
  28.         double low = amount/2;
  29.         double high = 1 - low;
  30.         double tmp;
  31.  
  32.         for(int i = 0; i<picture.getWidth(); i++){
  33.             for(int k = 0; k<picture.getHeight(); k++){
  34.                 Color c = picture.getColor(i, k);
  35.  
  36.                 int r = c.getRed();
  37.                 int g = c.getGreen();
  38.                 int b = c.getBlue();
  39.                 picture.setColor(i, k, new Color(r, g, b));
  40.  
  41.                 if ((tmp=Math.random()) <= low)
  42.                     picture.setColor(i, k, new Color(0, 0, 0));
  43.                 else if (tmp >= high)
  44.                     picture.setColor(i, k, new Color(255, 255, 255));
  45.             }}
  46.  
  47.     }
  48.     public void normal_dist(Picture picture, int avg, int stddev, double probability){
  49.  
  50.         // 1/stddev*Math.sqrt(2*Math.PI)*Math.exp((Math.pow((x-avg), 2)/Math.pow((2*stddev),2);
  51.         for(int i = 0; i<picture.getWidth(); i++){
  52.             for(int k = 0; k<picture.getHeight(); k++){
  53.                 Color c = picture.getColor(i, k);
  54.                 int r = (int)(Math.floor(probability*(1/stddev*Math.sqrt(2*Math.PI)*Math.exp((Math.pow((c.getRed()-avg), 2)/Math.pow((2*stddev),2)))))); if(r <= 0) r=1; if(r >255) r = 255;
  55.                 int g = (int)(Math.floor(probability*(1/stddev*Math.sqrt(2*Math.PI)*Math.exp((Math.pow((c.getGreen()-avg), 2)/Math.pow((2*stddev),2)))))); if(g <= 0) g=1; if(g >255) g = 255;
  56.                 int b = (int)(Math.floor(probability*(1/stddev*Math.sqrt(2*Math.PI)*Math.exp((Math.pow((c.getBlue()-avg), 2)/Math.pow((2*stddev),2))))));if(b <= 0) b=1; if(b >255) b = 255;
  57. //
  58. //                int r = c.getRed()+(int)(1/stddev*Math.sqrt(2*Math.PI)*Math.exp((Math.pow((c.getRed()-avg), 2)/Math.pow((2*stddev),2)))); if(r>255)r=255;
  59. //                int g = c.getGreen()+(int)(1/stddev*Math.sqrt(2*Math.PI)*Math.exp((Math.pow((c.getGreen()-avg), 2)/Math.pow((2*stddev),2)))); if(g>255)g=255;
  60. //                int b = c.getBlue()+Math.floor(probability*(1/stddev*Math.sqrt(2*Math.PI)*Math.exp((Math.pow((c.getBlue()-avg), 2)/Math.pow((2*stddev),2)))))(int); if(b>255)b=255;
  61.                 picture.setColor(i, k, new Color(r, g, b));
  62.             }}
  63.  
  64.     }
  65.  
  66.     //Zadanie 4 (3 punkt)
  67.    // Proszę wykonać filtrację (Filtry średniej ruchomej) obrazów zaszumionych powyższymi (trzema) sposobami (tylko odcienie szarości).
  68.  
  69.     public void avgFilter(Picture picture){
  70.  
  71.         // 1/stddev*Math.sqrt(2*Math.PI)*Math.exp((Math.pow((x-avg), 2)/Math.pow((2*stddev),2);
  72.         for(int i = 0; i<picture.getWidth(); i++){
  73.             for(int k = 0; k<picture.getHeight(); k++){
  74.                 int maxw=picture.getWidth()-1;
  75.                 int maxh=picture.getHeight()-1;
  76.                 Color c1 = picture.getColor(i-1, k-1);if(i<0)i=0;
  77.                 Color c = picture.getColor(i, k);
  78.                 Color c2 = picture.getColor(i+1, k+1); if(i>maxw)i=maxw;
  79.                 int r1=c1.getRed();
  80.                 int r =  c.getRed();
  81.                 int r2=c2.getRed();
  82.                 int avgr=(r1+r2)/2;
  83.  
  84.                 int g1=c1.getGreen();
  85.                 int g =  c.getGreen();
  86.                 int g2=c2.getGreen();
  87.                 int avgg=(g1+g2)/2;
  88.  
  89.                 int b1=c1.getBlue();
  90.                 int b =  c.getBlue();
  91.                 int b2=c2.getBlue();
  92.                 int avgb=(b1+b2)/2;
  93.  
  94.                 Color newC= new Color(avgr, avgg, avgb);
  95.  
  96.                 picture.setColor(i,k, newC);
  97.  
  98.  
  99.                 if (i!=maxh && k!=maxh){
  100.  
  101.                 }
  102.  
  103.  
  104.  
  105.             }}
  106.  
  107.     }
  108.  
  109.     static int nrows, ncols;
  110.     static int in_img[][], out_img[][];
  111.  
  112.     public void medianFilter(Picture picture){{
  113.  
  114.         int out_img[][];
  115.         out_img= new int [picture.getWidth()][picture.getHeight()];
  116.         for (int i=0; i<picture.getWidth(); i++){
  117.             for (int k=0; k<picture.getHeight(); k++){
  118.                 Color c = picture.getColor(i,k);
  119.               int newcolor =  out_img[i][k] = median(i, k, picture);
  120.                 picture.setColor(i,k, new Color(newcolor, newcolor, newcolor));
  121.             }
  122.          }
  123.     }}
  124.  
  125.  
  126.  
  127.     public int median(int i, int k, Picture picture) {
  128.         int in_img[][];
  129.         in_img = new int [picture.getWidth()][picture.getHeight()];
  130.         int  m, n, count, t[], tmp;
  131.         t = new int[9];
  132.         for (m=i-1, count=0; m<=i+1; m++)
  133.             for (n=k-1; n<=k+1; n++)
  134.                 if (m>=0 && m<picture.getWidth() && n>=0 && n<picture.getHeight())
  135.                     t[count++] = in_img[m][n];
  136.  
  137.         // Bubble sort
  138.         for (m=0; m<count-1; m++)
  139.             for (n=m+1; n<count; n++)
  140.                 if (t[m] < t[n]) {
  141.                     tmp = t[m];
  142.                     t[m] = t[n];
  143.                     t[n] = tmp;
  144.                 }
  145.         return t[count/2];
  146.     }
  147.  
  148. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement