-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfilter.cpp
66 lines (53 loc) · 1.58 KB
/
filter.cpp
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include "filter.h"
#include <vector>
#include <stdexcept>
/*double** Filter::getGaussFilter(int size, double sigma){
double** gauss= new double*[size];
for(int i = 0; i<size; ++i){
gauss[i] = new double[size];
}
int half = size/2;
for (int x = -half; x <= half; x++){
for (int y = -half; y <= half; y++){
gauss[x+half][y+half] = pow(M_E,-1*((((x*x)+(y*y)) / (2.0 *sigma*sigma))));
}
}
return gauss;
}*/
Filter::Filter(int size, int** input){
if(size > 0){
//initialize data matrix
matrix_size = size;
data = std::vector<std::vector<int>>(size,std::vector<int>(size,0));
for(int i=0 ; i<matrix_size ; ++i){
//data[i] = std::vector<int>(size,0);
for(int j=0 ; j<matrix_size ; ++j){
data[i][j]= input[i][j];
}
}
}else throw std::invalid_argument("Size of the filtermatrix must be greater than 0");
}
Filter::Filter(std::vector<std::vector<int> > input){
if(input.size() > 0 && (input.size() == input[0].size()) ){
//initialize data matrix
matrix_size = input.size();
data = input;
}else throw std::invalid_argument("Height and width of the filtermatrix must be equal and bigger than 0");
}
int Filter::size(){
return matrix_size;
}
int Filter::sum(){
int s = 0;
for(int i=0 ; i<matrix_size ; ++i){
for(int j=0 ; j<matrix_size ; ++j){
s+= data[i][j];
}
}
return s;
}
void Filter::print(){
}
int Filter::get(int row, int column){
return data[row][column];
}