Elaboradar 0.1
|
◆ clean() [1/3]
Funzione che crea l'oggetto cleaner, lo inizializza, pulisce i dati e modifica il PolarScan di DBZH.
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
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 Referenzia radarelab::PolarScanBase::beam_count, radarelab::PolarScanBase::beam_size, bin_wind_magic_number, radarelab::PolarScanBase::cell_size, clean_beam(), Cleaner(), radarelab::PolarScan< T >::nodata, radarelab::PolarScan< T >::undetect, e Z_missing. |