|
A detector for widespread electromagnetic interference. More...
#include <JammingOp.h>
Public Member Functions | |
JammingOp (double smoothnessThreshold=5.0, double distanceMin=80.0, double refit=true, int debugRow=-1) | |
Public Member Functions inherited from DetectorOp | |
DetectorOp (const std::string &name=__FUNCTION__, const std::string &description="", const std::string &echoClass="") | |
DetectorOp (const DetectorOp &op) | |
virtual const std::string & | getOutputQuantity (const std::string &inputQuantity="") const |
Returns the quantity name, by default the name of the class in upper case letters. More... | |
virtual void | computeProducts (const DataSetMap< PolarSrc > &srcVolume, DataSetMap< PolarDst > &dstVolume) const |
virtual void | runDetection (const DataSetMap< PolarSrc > &srcVolume, DataSetMap< PolarDst > &dstVolume) const |
virtual void | runDetection (const DataSet< PolarSrc > &srcDataSet, PlainData< PolarDst > &dstProb, DataSet< PolarDst > &aux) const |
Process as sweep (data in one elevation angle) More... | |
virtual void | processData (const Data< src_t > &srcData, Data< dst_t > &dstData) const |
Public Member Functions inherited from VolumeTraversalOp | |
VolumeTraversalOp (const std::string &name, const std::string &description="") | |
virtual void | traverseVolume (const Hi5Tree &src, Hi5Tree &dst) const |
Base class for radar data processors. More... | |
Public Member Functions inherited from PolarProductOp | |
PolarProductOp (const std::string &name=__FUNCTION__, const std::string &description="") | |
PolarProductOp (const PolarProductOp &op) | |
Public Member Functions inherited from VolumeOp< PolarODIM > | |
VolumeOp (const std::string &name, const std::string &description="") | |
virtual void | processVolume (const Hi5Tree &src, Hi5Tree &dst) const |
Traverse through given volume and create new, processed data (volume or polar product). More... | |
Public Member Functions inherited from BinaryPixelVectorOp< MultiplicationFunctor > | |
BinaryPixelVectorOp (const std::string &name, const std::string &description) | |
virtual void | process (const ImageFrame &src, Image &dst) const |
Main interface. Typically splits processing to each channel. More... | |
virtual void | process (const ImageFrame &src1, const ImageFrame &src2, Image &dst) const |
virtual void | traverseChannels (const ImageTray< const Channel > &srcTray, ImageTray< Channel > &dstTray) const |
virtual void | traverseChannels (const ImageTray< const Channel > &src, const ImageTray< const Channel > &src2, ImageTray< Channel > &dst) const |
void | traverseFrame (const ImageFrame &src1, const ImageFrame &src2, ImageFrame &dst) const |
Public Member Functions inherited from PixelVectorOp | |
virtual void | getDstConf (const ImageConf &srcConf, ImageConf &dstConf) const |
Given source image, determine respective dest image configuration. More... | |
Public Member Functions inherited from ImageOp | |
virtual void | process (const ImageFrame &src, const ImageFrame &srcWeight, Image &dst, Image &dstWeight) const |
virtual void | process (const ImageTray< const Channel > &src, ImageTray< Image > &dst, bool checkOverlap=true) const |
Run the operator on a series of images. Geometry and type may be changed. UNDER CONSTR. More... | |
virtual void | traverseChannel (const Channel &src, Channel &dst) const |
Apply to single channel. | |
virtual void | traverseChannel (const Channel &src, const Channel &srcAlpha, Channel &dst, Channel &dstAlpha) const |
Apply to single channel with alpha. | |
virtual void | makeCompatible (const ImageConf &src, Image &dst) const |
Depending on the operator, modifies the geometry and type of dst. More... | |
virtual void | makeCompatible2 (const ImageFrame &src1, const ImageFrame &src2, Image &dst) const |
Modifies the geometry and type of dst to fit the computation result. | |
virtual void | help (std::ostream &ostr=std::cout) const |
Prints name, description and parameters using BeanLike::toOStr(). Virtual, so derived classes may extend output. | |
Public Member Functions inherited from ImageMod | |
virtual int | srcAlpha () const |
Tell if alpha channel(s) is required in input. More... | |
virtual void | process (Image &dst) const |
Run this modifier for an image. More... | |
virtual void | traverseChannels (ImageTray< Channel > &dst) const |
Run this modifier for a set of channels. More... | |
virtual void | traverseChannel (Channel &dst) const |
Run this modifier for an image frame. More... | |
virtual void | traverseChannel (Channel &dst, Channel &dstAlpha) const |
Run this modifier for an image frame. More... | |
virtual void | traverseChannels (ImageFrame &dst) const |
Converts dst to ImageTray<Channel> and calls traverseFrame(ImageTray<Channel> &) . | |
Public Member Functions inherited from BeanLike | |
virtual const std::string & | getName () const |
Return the name of an instance. | |
virtual const std::string & | getDescription () const |
Return a brief description. | |
bool | hasParameters () const |
template<class F > | |
F | getParameter (const std::string &p) const |
Gets a single parameter. | |
const ReferenceMap & | getParameters () const |
ReferenceMap & | getParameters () |
template<class F > | |
void | setParametersFromEntries (const F &args) |
void | setParameters (std::initializer_list< Variable::init_pair_t > args) |
Grants access to (if above hidden) | |
virtual void | setParameters (const std::string &p, char assignmentSymbol='=', char separatorSymbol=0) |
Sets comma-separated parameters in a predetermined order "a,b,c" or by specifing them "b=2". More... | |
template<class T > | |
void | setParameters (const std::map< std::string, T > &args) |
Set parameters. | |
template<class T > | |
void | setParameters (const SmartMap< T > &args) |
Set parameters. | |
void | setParameter (const std::string &p, const Castable &value) |
Sets a single parameter. | |
template<class T > | |
void | setParameter (const std::string &p, const VariableT< T > &value) |
template<class F > | |
void | setParameter (const std::string &p, const F &value) |
Sets a single parameter. More... | |
template<class F > | |
void | setParameter (const std::string &p, std::initializer_list< F > value) |
Sets a single parameter. | |
BeanLike & | operator= (const BeanLike &b) |
virtual std::ostream & | toStream (std::ostream &ostr, bool compact=true) const |
BeanLike (const BeanLike &b) | |
BeanLike (const std::string &name, const std::string &description="") | |
Static Public Member Functions | |
static double | modelledEmitter (double dBZ0, double distance) |
Model for radar amplification of an external emitter. More... | |
Public Attributes | |
double | smoothnessThreshold |
double | distanceMin |
bool | refit |
int | debugRow |
Public Attributes inherited from DetectorOp | |
const drain::image::Palette::value_type & | classEntry |
Index applied in the legend of the classification results. More... | |
bool | UNIVERSAL |
If true, applies also to quantities str than the one used in detection. The detection and the accumulation will be stored one step upwards. | |
Public Attributes inherited from PixelVectorOp | |
std::string | functorDef |
Public Attributes inherited from ImageMod | |
bool | physicalScale |
Protected Member Functions | |
virtual void | runDetector (const PlainData< PolarSrc > &srcData, PlainData< PolarDst > &dstProb) const |
Process as sweep (data in one elevation angle) More... | |
Protected Member Functions inherited from DetectorOp | |
virtual void | initDataDst (const PlainData< PolarSrc > &srcData, PlainData< PolarDst > &dstData, const std::string &quantity="") const |
If raised, make template? Cf. Volume::initDst ? | |
void | storeDebugData (int debugLevel, const ImageFrame &srcImage, const std::string &label) const |
void | storeDebugData (const ImageFrame &srcImage, PlainData< PolarDst > &dstData, const std::string &quantityLabel) const |
virtual void | writeHow (PlainData< PolarDst > &dstData) const |
After running a cmd, write execution details. | |
void | _enhanceDirectionally (Image &data, float medianPos, int windowWidth) const |
Enhances the detection result by reinforcing sectors of strong response, attenuating others. Optional utility for derived classes. More... | |
void | _infect (Image &data, int windowWidth, int windowHeight, double enhancement) const |
Protected Member Functions inherited from AndreOp | |
AndreOp (const std::string &name, const std::string &description) | |
Generally, the whole data structure can be traversed. More... | |
virtual void | setGeometry (const PolarODIM &srcODIM, PlainData< PolarDst > &dstData) const |
Protected Member Functions inherited from VolumeTraversalOp | |
void | collect (const Hi5Tree &src, Hi5Tree &dst) const |
Protected Member Functions inherited from PolarProductOp | |
void | copyPolarGeometry (const PolarODIM &srcODIM, PlainData< PolarDst > &dstData) const |
virtual void | deriveDstGeometry (const DataSetMap< PolarSrc > &srcSweeps, PolarODIM &dstOdim, bool MINIMISE_RSCALE=false) const |
Based on input data, find geometry that maximises range and ray count. More... | |
virtual void | determineMetadata (const DataSetMap< PolarSrc > &srcSweeps, PolarODIM &dstOdim) const |
Update timestamps etc. More... | |
Protected Member Functions inherited from PixelVectorOp | |
PixelVectorOp (const std::string &name, const std::string &description) | |
Protected Member Functions inherited from ImageOp | |
ImageOp (const std::string &name=__FUNCTION__, const std::string &description="") | |
ImageOp (const ImageOp &op) | |
virtual bool | processOverlappingWithTemp (const ImageFrame &src, Image &dst) const |
virtual bool | processOverlappingWithTemp (const ImageTray< const Channel > &src, ImageTray< Image > &dst) const |
bool | traverseOverlappingWithTemp (const Channel &src, Channel &dst) const |
bool | traverseOverlappingWithTemp (const Channel &src, const Channel &srcWeight, Channel &dst, Channel &dstWeight) const |
void | traverseChannelsEqually (const ImageTray< const Channel > &src, ImageTray< Channel > &dst) const |
Calls processWithTemp() if the frames overlap. More... | |
void | traverseChannelsRepeated (const ImageTray< const Channel > &src, ImageTray< Channel > &dst) const |
Recycle channels until all dst channels completed. | |
void | traverseChannelsSeparately (const ImageTray< const Channel > &src, ImageTray< Channel > &dst) const |
Process each (src,dst) channel pair independently. Raise error if their counts differ. More... | |
void | traverseAsChannelTrays (const ImageFrame &src, ImageFrame &dst) const |
Redirect to processing as trays. This is the opposite of processChannels...() functions. | |
void | traverseAsChannelTrays (const ImageFrame &src, const ImageFrame &srcWeight, ImageFrame &dst, ImageFrame &dstWeight) const |
Redirect to processing as trays. This is the opposite of processChannels...() functions. | |
virtual void | initializeParameters (const ImageFrame &src, const ImageFrame &dst) const |
Set applicable internal parameters before calling traverse(). | |
virtual void | initializeParameters (const ImageFrame &src, const ImageFrame &src2, const ImageFrame &dst) const |
Set applicable internal parameters before calling traverse(). | |
Protected Member Functions inherited from ImageMod | |
ImageMod (const std::string &name=__FUNCTION__, const std::string &description="") | |
ImageMod (const ImageMod &op) | |
virtual void | processChannelsSeparately (ImageTray< Channel > &dst) const |
Run this modifier by calling traverseChannel(Channel &) for each image. | |
virtual void | initialize (Image &dst) const |
Modifies the geometry and the type of dst such that traverseChannel(Channel &) can be called. | |
virtual void | initializeAlpha (const Image &srcAlpha, Image &dstAlpha) const |
Modifies the geometry and the type of dst such that traverseChannel(Channel &) can be called. | |
Protected Member Functions inherited from BeanLike | |
virtual void | storeLastArguments (const std::string &p) |
Called after setParameters() | |
virtual void | updateBean () const |
Called after setParameters() | |
Static Protected Member Functions | |
static double | derivativeDBZ (const PolarODIM &odimIn, const Image &src, int i, int j, int span=10) |
Returns the beam-oriented derivative of the dBZ field. In case of no-data, returns std::numeric_limits<double>::max(). | |
static double | derivativeDBZ_Modelled (double yModelBase, double range, double rangeDifference) |
Static Protected Member Functions inherited from ImageOp | |
static void | adaptCoordinateHandler (const Channel &src, CoordinateHandler2D &handler) |
Additional Inherited Members | |
Static Public Attributes inherited from DetectorOp | |
static bool | SUPPORT_UNIVERSAL |
Static Public Attributes inherited from PolarProductOp | |
static const CoordinatePolicy | polarCoordPolicy |
Protected Attributes inherited from DetectorOp | |
std::string | upperCaseName |
bool | REQUIRE_STANDARD_DATA |
Set to true if operator expects fixed background intensities instead of "nodata" defined by the PolarODIM. Affects getValidData(). More... | |
Protected Attributes inherited from PolarProductOp | |
bool | aboveSeaLevel |
Protected Attributes inherited from BinaryPixelVectorOp< MultiplicationFunctor > | |
MultiplicationFunctor | binaryFunctor |
Protected Attributes inherited from PixelVectorOp | |
double | rescale |
double | POW |
double | INVPOW |
Protected Attributes inherited from BeanLike | |
const std::string | name |
const std::string | description |
ReferenceMap | parameters |
Static Protected Attributes inherited from DetectorOp | |
static unsigned short int | _count |
A detector for widespread electromagnetic interference.
Detects smooth, widespread interference. Based on fitting a function that models how radar receives external emitters:
|
inline |
Default constructor.
smoothnessThreshold | - maximum standard deviation in a 5x3 sliding window |
distanceMin | - minimum sampling distance [km] for curve fitting |
weightLower | - if not 1.0, refit the curve, weighting samples lower the initial curve with this. |
debugRow | - |
sampleContent | - minimum percentage of valid (detected) bins along the beam |
maxCurvature | - b2 in fitting dbz = b0 + b1*x + b2*x*x; |
5.0,0.25,2.0,0.001,40
|
inlinestatic |
Model for radar amplification of an external emitter.
distance | - distance in metres |
|
protectedvirtual |
Process as sweep (data in one elevation angle)
srcDataSet | - input data of one elevation; possibly several quantities (measurement parameters). |
dstProb | - probability field ie. the result of the detection algorithm |
aux | - auxialiary DatasetDst for keeping a copy of normalized data. Process using single data only (no quality "involved", because it is created here...) |
srcData | - input data of one elevation; possibly several quantities (measurement parameters). |
dstProb | - output data, typically in the same dataset as srcData. |
STEP 1: Compute the standard-deviation in a 3x5 window
STEP 1b: Convert std.deviation to fuzzy smoothness value. The largest response is around undetectValue deviation.
Measure of fit between original dBZ data and matched curve.
Similarity measure of slopes of the smoothed dBZ and matched curve.
Horizonal coordinate (i) in double precision
Distance from radar
Original data value
Smoothness (fuzzified stdDev)
Modelled constant-power transmitter curve, in dBZ
Step 1: fi
Step 2: refit
Derive probability from fuzzy difference measure and fuzzy smoothness measure
Range
dBZ
Reimplemented from DetectorOp.
int debugRow |
Curvature is computed as a maximum difference between the fitted 2nd order polynomial curve
and the direct line crossing its point values, and where is the maximum of . Denote . Then, the line is
and the difference
and its derivative is
Setting we get
and where is the maximum of x.