Elaboradar  0.1

◆ clean() [1/3]

void radarelab::algo::Cleaner::clean ( PolarScan< double > &  scan_Z,
PolarScan< double > &  scan_W,
PolarScan< double > &  scan_V,
double  bin_wind_magic_number,
unsigned  iel = 0,
bool  set_undetect = false 
)
static

Funzione che crea l'oggetto cleaner, lo inizializza, pulisce i dati e modifica il PolarScan di DBZH.

Parametri
[in,out]scan_Z- volume di DBZH
[in]scan_W- volume di WRAD
[in]scan_V- volume di V
[in]bin_wind_magic_number- soglia vento per dati in formato SP20
[in]iel- indice elevazione solo per debug

Definizione alla linea 935 del file cleaner.cpp.

936 {
937 
938  if (scan_z.beam_count != scan_w.beam_count)
939  throw std::runtime_error("scan_z beam_count no equal to scan_w beam_count");
940  if (scan_z.beam_size != scan_w.beam_size)
941  throw std::runtime_error("scan_z beam_size no equal to scan_w beam_size");
942 
943  if (scan_z.beam_count != scan_v.beam_count)
944  throw std::runtime_error("scan_z beam_count no equal to scan_v beam_count");
945  if (scan_z.beam_size != scan_v.beam_size)
946  throw std::runtime_error("scan_z beam_size no equal to scan_v beam_size");
947 
948  Cleaner cleaner(scan_z.undetect, scan_w.undetect, scan_v.nodata, bin_wind_magic_number);
949 
950  const unsigned beam_count = scan_z.beam_count;
951  const unsigned beam_size = scan_z.beam_size;
952 
953  // fprintf(stderr, "NEWCLEANER zmis %f, wthr %f, vmis %f, mn %f\n",
954  // cleaner.Z_missing, cleaner.W_threshold, cleaner.V_missing, cleaner.bin_wind_magic_number);
955 
956  radarelab::volume::Scans<double> Z_S, SD2D,SD_Ray,SD_Az;
957  Z_S.push_back(scan_z);
958  radarelab::volume::textureSD( Z_S,SD2D, 1000. , 3,false);
959  radarelab::volume::textureSD( Z_S,SD_Ray, scan_z.cell_size*9 , 360./scan_z.beam_count,false);
960  radarelab::volume::textureSD( Z_S,SD_Az, scan_z.cell_size , 5*360./scan_z.beam_count,false);
961 
962 //radarelab::gdal_init_once();
963 //printf("scrivo Z ");
964 //Matrix2D <double>img;
965 //img = (scan_z.array() - scan_z.offset )/ scan_z.gain /256 ;
966 //Matrix2D <unsigned char>img_tmp, z_clean;
967 //std::string ext;
968 //char pippo[200];
969 //sprintf(pippo, "_%02d.png",iel);
970 //ext=pippo;
971 
972 //img_tmp=img.cast<unsigned char>();
973 //z_clean=img_tmp;
974 //radarelab::write_image(img_tmp,"/ponte/rad_svn/proc_operative/test_arch/rev_actual/radar/immagini/Cleaner/PPI_Z"+ext, "PNG");
975 
976 //printf("V ");
977 //img = (scan_v.array()-scan_v.offset)/scan_v.gain/256 ;
978 //img_tmp=img.cast<unsigned char>();
979 //radarelab::write_image(img_tmp,"/ponte/rad_svn/proc_operative/test_arch/rev_actual/radar/immagini/Cleaner/PPI_V"+ext,"PNG");
980 //printf("W ");
981 //img = (scan_w.array()-scan_w.offset)/scan_w.gain/256 ;
982 //img_tmp=img.cast<unsigned char>();
983 //radarelab::write_image(img_tmp,"/ponte/rad_svn/proc_operative/test_arch/rev_actual/radar/immagini/Cleaner/PPI_W"+ext,"PNG");
984 //printf("SD2d ");
985 //img = (SD2D[0].array()-SD2D[0].offset)/SD2D[0].gain/256 ;
986 //img_tmp=img.cast<unsigned char>();
987 //radarelab::write_image(img_tmp,"/ponte/rad_svn/proc_operative/test_arch/rev_actual/radar/immagini/Cleaner/PPI_SD2d"+ext,"PNG");
988 //printf("\n");
989 
990  double new_val=cleaner.Z_missing;
991  if (set_undetect) new_val=scan_z.nodata;
992 
993  for (unsigned i = 0; i < beam_count; ++i)
994  {
995  // Compute which elements need to be cleaned
996  // vector<bool> corrected = cleaner.clean_beam(scan_z.row(i), scan_w.row(i), scan_v.row(i),SD2D[0].row(i), scan_z, scan_w, scan_v, SD2D[0],i);
997  vector<bool> corrected = cleaner.clean_beam(scan_z.row(i), scan_w.row(i), scan_v.row(i),i);
998 
999  for (unsigned ib = 0; ib < beam_size; ++ib)
1000  if (corrected[ib])
1001  {
1002  //scan_z(i, ib) = cleaner.Z_missing;
1003  scan_z(i, ib) = new_val;
1004  // scan_w(i, ib) = cleaner.W_threshold;
1005  // scan_v(i, ib) = cleaner.V_missing;
1006  }
1007 // img_tmp(i,ib)=255;
1008 // z_clean(i,ib)=0;
1009 // } else img_tmp(i,ib)= 0 ;
1010 
1011  }
1012 //radarelab::write_image(img_tmp,"/ponte/rad_svn/proc_operative/test_arch/rev_actual/radar/immagini/Cleaner/PPI_clean"+ext,"PNG");
1013 //radarelab::write_image(z_clean,"/ponte/rad_svn/proc_operative/test_arch/rev_actual/radar/immagini/Cleaner/PPI_Zclean"+ext,"PNG");
1014 }
Cleaner(double Z_missing, double W_threshold, double V_missing, double bin_wind_magic_number)
Constructor.
Definition: cleaner.h:33
const double bin_wind_magic_number
valore magico per dati in formato SP20
Definition: cleaner.h:29

Referenzia radarelab::PolarScanBase::beam_count, radarelab::PolarScanBase::beam_size, radarelab::PolarScanBase::cell_size, clean_beam(), radarelab::PolarScan< T >::nodata, radarelab::PolarScan< T >::undetect, e Z_missing.