00001 #include "SeaBee/Attentionator.H" 00002 00003 Attentionator::Attentionator(ModelManager& mgr, 00004 const std::string& descrName, 00005 const std::string& tagName) : 00006 ModelComponent(mgr, descrName, tagName), 00007 itsImage(0, 0, NO_INIT) 00008 { 00009 00010 itsEVC = nub::soft_ref<EnvVisualCortex>(new EnvVisualCortex(mgr)); 00011 addSubComponent(itsEVC); 00012 } 00013 00014 Attentionator::~Attentionator() { 00015 } 00016 00017 void Attentionator::updateImage(Image< PixRGB<byte> > image) { 00018 itsImage = image; 00019 } 00020 00021 Point2D<int> Attentionator::getSalientPoint() { 00022 Point2D<int> mostSalientPoint; 00023 Image<float> salFloatMap; 00024 float salientValue; 00025 int mapLevel; 00026 00027 LINFO("Dims: %s", convertToString(itsImage.getDims()).c_str()); 00028 00029 itsEVC->input(itsImage); 00030 salFloatMap = itsEVC->getVCXmap(); 00031 mapLevel = itsEVC->getMapLevel(); 00032 findMax(salFloatMap, mostSalientPoint, salientValue); 00033 mostSalientPoint.i = mostSalientPoint.i << mapLevel; 00034 mostSalientPoint.j = mostSalientPoint.j << mapLevel; 00035 00036 return mostSalientPoint; 00037 } 00038 00039 Image<PixRGB<byte> > Attentionator::getSaliencyMap() { 00040 Image<PixRGB<byte> > salMap = itsEVC->getVCXmap(); 00041 if(salMap.initialized()) 00042 return rescaleBilinear(salMap, itsImage.getDims()); 00043 else { 00044 LINFO("DIDNT WORK\n"); 00045 return Image<PixRGB<byte> >(); 00046 } 00047 } 00048