public void applyFilter(Data filter) throws MyExceptions {
		MyOutOfBoundException.test("filter.row", filter.row, 1, row-1);
		MyOutOfBoundException.test("filter.column", filter.column, 1, column-1);
		int width = (filter.row - 1) / 2;
		int height = (filter.column - 1) / 2;
		Data clone = new Data(this);
		for(int i = height; i < row - height; ++i)
			for(int j = width; j < column - width; ++j) {
				int sum = 0;
				for(int a = -height; a < height + 1; ++a)
					for(int b = -width; b < width + 1; ++b) {
						sum += matrix[i + a][j + b] * filter.matrix[a + height][b + width];
					}
				clone.setMatrixValue(i, j, sum);
			}
		matrix = clone.matrix;
		changeMin = true;
		changeMax = true;
	}