1 #ifndef __FILTER_FACTORY_HPP__
2 #define __FILTER_FACTORY_HPP__
6 template<
class T,
class M,
class I=
unsigned int>
10 typedef M memory_space;
13 filter_factory(
int px,
int py,
int fs,
int input_maps,
int output_maps)
17 , m_input_maps(input_maps)
18 , m_output_maps(output_maps)
27 unsigned int map_size=dia.
h()/m_input_maps;
28 for (
unsigned int map_num = 0; map_num < m_input_maps; map_num++)
31 for (
unsigned int i = 0; i < map_size; ++i)
33 if(!dia.
has(i+map_num*map_size,filternumber))
35 mat[map_num * m_fs *m_fs + fi++]= dia(i+map_num*map_size,filternumber);
46 int nm = m_output_maps;
47 int msize = fs*fs*( nm + m_input_maps-1 );
48 int* off =
new int[ msize ];
50 int dias_per_filter = 0;
52 m_px*m_py*m_input_maps,
53 m_px*m_py*m_output_maps,
55 std::max(m_px*m_py*m_output_maps,
56 m_px*m_py*m_input_maps));
57 for(
int m=0;m<nm+m_input_maps-1;m++ ){
59 for(
int i=0;i<fs;i++ ){
60 for(
int j=0;j<fs;j++ ){
61 off[ offidx++ ] = i*m_px+j + m*m_px*m_py;
68 m_dias_per_filter = dias_per_filter;
70 for(
int i=0;i<msize;i++ )
71 off[ i ] += -( m_px+1 )*( int( fs/2 ) ) - ( m_input_maps-1 ) * m_px*m_py;
78 int m_px, m_py, m_fs, m_input_maps, m_output_maps;
79 int m_dias_per_filter;