Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | Static Protected Member Functions | List of all members
JammingOp Class Reference

A detector for widespread electromagnetic interference. More...

#include <JammingOp.h>

Inheritance diagram for JammingOp:
Inheritance graph
[legend]
Collaboration diagram for JammingOp:
Collaboration graph
[legend]

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 >
getParameter (const std::string &p) const
 Gets a single parameter.
 
const ReferenceMapgetParameters () const
 
ReferenceMapgetParameters ()
 
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.
 
BeanLikeoperator= (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
 

Detailed Description

A detector for widespread electromagnetic interference.

Detects smooth, widespread interference. Based on fitting a function that models how radar receives external emitters:

\[ dbz = b_1 + b_1x + b_2*\log(x); \]

Constructor & Destructor Documentation

◆ JammingOp()

JammingOp ( double  smoothnessThreshold = 5.0,
double  distanceMin = 80.0,
double  refit = true,
int  debugRow = -1 
)
inline

Default constructor.

Parameters
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

Member Function Documentation

◆ modelledEmitter()

static double modelledEmitter ( double  dBZ0,
double  distance 
)
inlinestatic

Model for radar amplification of an external emitter.

Parameters
distance- distance in metres

◆ runDetector()

void runDetector ( const PlainData< PolarSrc > &  srcData,
PlainData< PolarDst > &  dstProb 
) const
protectedvirtual

Process as sweep (data in one elevation angle)

Parameters
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.

Member Data Documentation

◆ debugRow

int debugRow

Curvature is computed as a maximum difference between the fitted 2nd order polynomial curve

\[ \hat{y_2}(x) = b_0 + b_1x + b_2x^2 \]

and the direct line crossing its point values, $(0,b_0)$ and $(w,\hat{y_2}(w))$ where $w$ is the maximum of $x$. Denote $d_y=\hat{y_2}(w)-\hat{y_2}(0)$. Then, the line is

\[ \hat{y_1}(x) = b_0 + \frac{x}{w}d_y \]

and the difference

\[ d(x) = \hat{y_2}(x) - \hat{y_1}(x) = x(b_1 - \frac{d_y}{w}) + b_2x^2 \]

and its derivative is

\[ d'(x) = b_1 - \frac{d_y}{w} + 2b_2x . \]

Setting $d'(x)=0$ we get

\[ x = (\frac{d_y}{w}-b_1)/2b_2 \]

$(0,b_0)$ and $(x_w,b_0 + b_1x_w + b_2x_w^2)$ where $x_w$ is the maximum of x.


The documentation for this class was generated from the following files: