A short-range orientation interactions channel. More...
#include <Channels/SoxChannel.H>
Classes | |
struct | CacheElem |
Public Member Functions | |
SoxChannel (OptionManager &mgr) | |
Construct. | |
virtual | ~SoxChannel () |
Virtual destructor. | |
uint | numScales () const |
Get the number of scales used. | |
Image< float > | getLinearResponse (int ori, int scl) |
Get the linear response of the units for a given orientation+scale. | |
Image< float > | getNonlinearResponse (int ori, int scl) |
Get the non-linear response of the units for a given orientation+scale. | |
nub::ref< GaborChannel > | gabor (const uint idx) const |
Wraps ComplexChannel's subChan() and casts the result to GaborChannel. | |
Protected Member Functions | |
void | buildSubChans () |
(re-)build our subchannels | |
virtual void | doInput (const InputFrame &inframe) |
SoxChannel requires only luminance input. | |
virtual Image< float > | combineOutputs () |
Combine all of the nonlinear responses. | |
virtual void | killCaches () |
Clear our cached inhibitory pool maps. | |
virtual void | paramChanged (ModelParamBase *const param, const bool valueChanged, ParamClient::ChangeStatus *status) |
Overload so that we can reconfigure when our params get changed. | |
Protected Attributes | |
OModelParam< uint > | itsNumOrients |
number of Gabor subchannels | |
OModelParam< double > | thetaPoolWidth |
OModelParam< double > | omegaPoolWidth |
OModelParam< double > | inhibExponent |
OModelParam< double > | excitExponent |
OModelParam< double > | semiSaturation |
OModelParam< double > | cutoff |
A short-range orientation interactions channel.
This class implements a pool of orientation-tuned units whose responses are shaped by divisive inhibition in proportion to population activity.
Definition at line 48 of file SoxChannel.H.
SoxChannel::SoxChannel | ( | OptionManager & | mgr | ) |
Construct.
Definition at line 111 of file SoxChannel.C.
References buildSubChans(), and OptionManager::requestOptionAlias().
SoxChannel::~SoxChannel | ( | ) | [virtual] |
Virtual destructor.
Definition at line 175 of file SoxChannel.C.
void SoxChannel::buildSubChans | ( | ) | [protected] |
(re-)build our subchannels
Definition at line 129 of file SoxChannel.C.
References ComplexChannel::addSubChan(), ModelComponent::getManager(), OModelParam< T >::getVal(), itsNumOrients, makeSharedComp(), MC_RECURSE, and ComplexChannel::removeAllSubChans().
Referenced by paramChanged(), and SoxChannel().
Image< float > SoxChannel::combineOutputs | ( | ) | [protected, virtual] |
Combine all of the nonlinear responses.
Reimplemented from ComplexChannel.
Definition at line 283 of file SoxChannel.C.
References ComplexChannel::getMapDims(), getNonlinearResponse(), OModelParam< T >::getVal(), ComplexChannel::itsNormType, maxNormalize(), MAXNORMMAX, MAXNORMMIN, ComplexChannel::numChans(), numScales(), rescale(), VCXNORM_MAXNORM, and ZEROS.
void SoxChannel::doInput | ( | const InputFrame & | inframe | ) | [protected, virtual] |
SoxChannel requires only luminance input.
Implements ChannelBase.
Definition at line 183 of file SoxChannel.C.
References ASSERT, gabor(), Image< T >::initialized(), and ComplexChannel::numChans().
nub::ref< GaborChannel > SoxChannel::gabor | ( | const uint | idx | ) | const |
Wraps ComplexChannel's subChan() and casts the result to GaborChannel.
Definition at line 171 of file SoxChannel.C.
References ComplexChannel::subChan().
Referenced by doInput(), getLinearResponse(), getNonlinearResponse(), and numScales().
Image< float > SoxChannel::getLinearResponse | ( | int | ori, | |
int | scl | |||
) |
Get the linear response of the units for a given orientation+scale.
Definition at line 196 of file SoxChannel.C.
References ASSERT, gabor(), and Image< T >::initialized().
Referenced by getNonlinearResponse().
Image< float > SoxChannel::getNonlinearResponse | ( | int | ori, | |
int | scl | |||
) |
Get the non-linear response of the units for a given orientation+scale.
This is (rougly speaking) given by a power of the linear response, divided by an inhibitory term that pools over all orientations and scales.
Definition at line 204 of file SoxChannel.C.
References ASSERT, exp(), gabor(), Image< T >::getDims(), ChannelBase::getInputDims(), getLinearResponse(), OModelParam< T >::getVal(), Image< T >::getWidth(), Image< T >::initialized(), inplaceAddWeighted(), log(), NO_INIT, ComplexChannel::numChans(), numScales(), squareOf(), toPower(), and Dims::w().
Referenced by combineOutputs().
void SoxChannel::killCaches | ( | ) | [protected, virtual] |
Clear our cached inhibitory pool maps.
Reimplemented from ComplexChannel.
Definition at line 306 of file SoxChannel.C.
uint SoxChannel::numScales | ( | ) | const |
Get the number of scales used.
Definition at line 179 of file SoxChannel.C.
References gabor().
Referenced by combineOutputs(), and getNonlinearResponse().
void SoxChannel::paramChanged | ( | ModelParamBase *const | param, | |
const bool | valueChanged, | |||
ParamClient::ChangeStatus * | status | |||
) | [protected, virtual] |
Overload so that we can reconfigure when our params get changed.
Reimplemented from ModelComponent.
Definition at line 157 of file SoxChannel.C.
References buildSubChans(), OModelParam< T >::getVal(), itsNumOrients, and ComplexChannel::numChans().
OModelParam<uint> SoxChannel::itsNumOrients [protected] |
number of Gabor subchannels
Definition at line 73 of file SoxChannel.H.
Referenced by buildSubChans(), and paramChanged().