-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMedian.java
More file actions
43 lines (41 loc) · 937 Bytes
/
Median.java
File metadata and controls
43 lines (41 loc) · 937 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import java.util.Arrays;
public class Median extends Smoother{
/* constructor */
public Median(int size){
this.size=size;
}
/* calculate median */
private int calc_median(int[] array){
Arrays.sort(array);
int median;
int n=array.length;
if(n%2==0) median=(array[n/2]+array[n/2+1])/2;
else median=array[n/2];
return median;
}
/* override */
public int filtering(int x,int y){
int frame=size/2;
int[] fr=new int[size*size];
int[] fg=new int[size*size];
int[] fb=new int[size*size];
int k=0;
for(int i=-frame;i<=frame;i++)
for(int j=-frame;j<=frame;j++){
int c=getRGB(x+j,y+i);
fr[k]=r(c); fg[k]=g(c); fb[k]=b(c);
k++;
}
int r=calc_median(fr);
int g=calc_median(fg);
int b=calc_median(fb);
return rgb(r,g,b);
}
/* filter */
public int process(int x,int y){
return 0;
}
public int getSum(){
return 0;
}
}