00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #ifndef APPNEURO_CREATEBARSTIMULI_C_DEFINED
00039 #define APPNEURO_CREATEBARSTIMULI_C_DEFINED
00040
00041 #include "Component/ModelManager.H"
00042 #include "GUI/XWinManaged.H"
00043 #include "Image/Image.H"
00044 #include "Image/Pixels.H"
00045 #include "Image/ShapeOps.H"
00046 #include "Image/FilterOps.H"
00047 #include "Image/CutPaste.H"
00048 #include "Image/DrawOps.H"
00049 #include "Image/MathOps.H"
00050 #include "Image/ColorOps.H"
00051 #include "Neuro/getSaliency.H"
00052 #include "Raster/Raster.H"
00053 #include "Util/log.H"
00054 #include "Psycho/EyeTrace.H"
00055 #include "Image/MathOps.H"
00056 #include "Util/StringConversions.H"
00057 #include <fstream>
00058 #include <iostream>
00059 #include <stdio.h>
00060 #include <stdlib.h>
00061
00062
00063
00064 int main(int argc, char** argv)
00065 {
00066 ModelManager manager("create stimuli for pulvinar experiment");
00067
00068 nub::ref<GetSaliency> saliency(new GetSaliency(manager));
00069 manager.addSubComponent(saliency);
00070
00071 if (manager.parseCommandLine(argc, argv, "<orientation1> <orientation2>", 2, 2) == false)
00072 return -1;
00073 manager.start();
00074
00075
00076 Dims dims(700,700);
00077 Image<PixRGB<byte> > inputImg(600,600,NO_INIT);
00078
00079 Image<PixRGB<byte> >::iterator aptr=inputImg.beginw();
00080
00081 while(aptr!= inputImg.end())
00082 *aptr++ = PixRGB<byte>(127.0,127.0,127.0);
00083
00084 int numBars=8;
00085 int hSpacing=50,vSpacing=50,beginX=100,beginY = 100;
00086 double or1, or2;
00087 or1 = atof(manager.getExtraArg(0).c_str());
00088 or2 = atof(manager.getExtraArg(1).c_str());
00089
00090 for(int i=0; i<numBars;i++)
00091 for(int j=0;j<numBars;j++)
00092 {
00093 if(i==2 && j==3)
00094 drawLine(inputImg, Point2D<int>(beginX+j*hSpacing,beginY+i*vSpacing),or1*M_PI/180,25.0,PixRGB<byte>(255.0,255.0,0.0),2);
00095 else if (i==5 && j==6)
00096 drawLine(inputImg, Point2D<int>(beginX+j*hSpacing,beginY+i*vSpacing),or2*M_PI/180,25.0,PixRGB<byte>(255.0,255.0,0.0),2);
00097 else
00098 drawLine(inputImg, Point2D<int>(beginX+j*hSpacing,beginY+i*vSpacing),20*M_PI/180,25.0,PixRGB<byte>(255.0,255.0,0.0),2);
00099
00100 }
00101
00102
00103
00104 const int numSalientSpotsTr = saliency->compute(inputImg, SimTime::SECS(1));
00105
00106 std::string temp ="found" + convertToString(numSalientSpotsTr) + " salient spots";
00107
00108 LINFO("%s",temp.c_str());
00109
00110 const Image<float> OrigSalmap = saliency->getSalmap();
00111
00112
00113
00114 XWinManaged *imgWin;
00115 CloseButtonListener wList;
00116 imgWin = new XWinManaged(dims,0,0, manager.getExtraArg(0).c_str());
00117 wList.add(imgWin);
00118 imgWin->drawImage(inputImg);
00119
00120 char filename[255],salname[255];
00121 sprintf(filename,"/lab/farhan/research/pulvinar/sampleDisp.png");
00122 sprintf(salname,"/lab/farhan/research/pulvinar/sampleDispSal.png");
00123
00124 Raster::WriteRGB(inputImg,filename);
00125 Raster::WriteFloat(rescale(OrigSalmap,inputImg.getDims()),FLOAT_NORM_0_255,salname);
00126
00127 Raster::waitForKey();
00128
00129 manager.stop();
00130
00131 return 0;
00132 }
00133
00134
00135
00136
00137
00138
00139
00140
00141 #endif // APPPSYCHO_CREATEBARSTIMULI_C_DEFINED