?? console_lib.cpp
字號:
sprintf(buffnum,"000%i",scalingFactor);
filenameOutput.append(buffnum);
filenameOutput.append(filenameInput);
// bmpsaver.save(filenameOutput,mask);
std::cout<<"Downsampling..."<<std::endl;
downsampler.apply(mask,downmask);
lti::areaPoints ap;
ap.getFromMask(downmask);
lti::dvector dv;
//due to the source code it needs to define the outer boundary to assume all points for calculations
lti::geometricFeatures::parameters param;
param.boundaryDefinition= lti::geometricFeatures::parameters::eBoundaryDefinition::OuterBoundary;
lti::geometricFeatures gf(param);
gf.apply(ap,dv);
COGy=int(dv.at(3));
COGx=int(dv.at(2));
//Calculated above before
// int oldCOGx=xDim/2;
// int oldCOGy=yDim/2;
xOffset=newCOGx-COGx;
yOffset=newCOGy-COGy;
lti::channel8 normalImg=lti::channel8(yDim,xDim,(lti::ubyte)0);
int i,j;
for(j=0;j<yDim;j++)
for( i=0;i<xDim;i++)
{
if((j+yOffset>=0)&& (i+xOffset>=0) && (i+xOffset<xDim) && (j+yOffset<yDim))
normalImg[j+yOffset][i+xOffset]=downmask[j][i];
}
//bmpsaver.save("my.bmp",normalImg);
std::cout<<"Adding read image to the input vector..."<<std::endl;
for(j=0;j<yDim;j++)
for(i=0;i<xDim;i++)
{
inDataDev[indexer*(yDim*xDim)+ j*xDim+i]=normalImg[j][i];
}
idsDataDev[indexer]=cIndex;
indexer++;
}
}//end looping on city names
}//end for looping on image numbers
*/
LOG<<std::endl<<"start zooming"<<std::endl;
img2=lti::channel8(height*2,width*2,0.0);
for( x=0;x<width*2;x++)
for(int y=0;y<height*2;y++)
if(x%2==1 && y%2==1)
img2[y][x]=img[y/2][x/2];
view1.show(img2);
int t;
std::cin>>t;
bmpsaver.save("b4.bmp",img2);
///*********Naive Bayes*********/////
int classes[256];
//lti::dmatrix covar[ClassNum];
int counter=0;
for(int cNum=0;cNum<256;cNum++)
{
classes[counter]=-1;
for(int tNum=0;tNum<trainNum;tNum++)
if(idsDataTrain[tNum]==cNum)
{
classes[counter++]=cNum;
LOG<<counter<<" "<<cNum<<std::endl;
break;
}
}
const int ClassNum=counter-1;
lti::dmatrix mean= lti::dmatrix(ClassNum,featureNum,0.0);
lti::dmatrix var= lti::dmatrix(ClassNum,featureNum,0.0);
lti::dmatrix covar=lti::dmatrix(ClassNum,featureNum,0.0);
for(cNum=0;cNum<ClassNum;cNum++)
{
for(int fNum=0;fNum<featureNum;fNum++)
{
// mean[cNum].resize(featureNum,0);
//claaculate expectation
// mean[cNum][fNum]=0;
int found=0;
for(int tNum=0;tNum<trainNum;tNum++)
if(idsDataTrain[tNum]==classes[cNum])
{
found++;
mean[cNum][fNum]+=inTrain[tNum][fNum];
}
mean[cNum][fNum]/=found;
}
//calculate Variance
// covar[cNum].resize(featureNum,0);
//for(int tNum=cNum;tNum<trainNum;tNum+=ClassNum)
// for(int m=0;m<featureNum;m++)
// for(int n=0;n<featureNum;n++)
// covar[cNum][m][n]+=((inTrain[tNum][m]-mean[cNum][m])*(inTrain[tNum][n]-mean[cNum][n]));
for(int m=0;m<featureNum;m++)
{
int found=0;
for(int tNum=0;tNum<trainNum;tNum++)
if(idsDataTrain[tNum]==classes[cNum])
{
found++;
covar[cNum][m]+=((inTrain[tNum][m]-mean[cNum][m])*(inTrain[tNum][m]-mean[cNum][m]));
}
covar[cNum][m]/=found;
if(covar[cNum][m]<1)
covar[cNum][m]=1;
}
//for(int m=0;m<featureNum;m++)
// for(int n=0;n<featureNum;n++)
// covar[cNum][m][n]/=(trainNum/ClassNum);
}
lti::classifier::outputVector outv(ClassNum); // here we will get some
std::cout <<std::endl<< "Dev Results: "<< std::endl;
int i,id;
int error=0;
for( x=0;x<width*2;x+=2)
for(int y=0;y<height*2;y+=2)
// if(x%2!=1 || y%2!=1)
{
lti::vector<double> pixel= lti::vector<double>(4);
int i,j,k=0;
for(j=y-1;j<=y+1;j+=2)
for( i=x-1;i<=x+1;i+=2)
{
if((j>=0)&& (i>=0) && (i<width*2) && (j<height*2))
{
double temp=img2[j][i];
pixel[k]=temp;
}
else
pixel[k]=img2[y+1][x+1];//to avoid disturbing distribution in BC //can be -1 in knn
k++;
}
//bmpsaver.save("my.bmp",normalImg);
for(int cNum=0;cNum<ClassNum;cNum++)
{
double temp=1;
double p=1;
//lti::dvector m=mean[cNum];
//lti::dvector c=covar[cNum];
//lti::gaussian<double> g=lti::gaussian<double>(mean[cNum],covar[cNum]);
//LOG<<std::endl;
double LOGP=0;
double Xd;
double MUkd;
double VARkd;
for(int m=0;m<featureNum;m++)
{
// lti::gaussian<double> g=lti::gaussian<double>(mean[cNum][m],covar[cNum][m]);
// g.apply(inDev.getRow(i).at(m),p);?
Xd=pixel.at(m);
VARkd=covar[cNum][m];
MUkd=mean[cNum][m];
LOGP+=(((Xd-MUkd)*(Xd-MUkd))/VARkd+log(2*3.14*VARkd));
// LOG<<std::endl<<"input: "<<inDev.getRow(i).at(m)<<" LOGp: "<<(((Xd-MUkd)*(Xd-MUkd))/VARkd+LOG(2*3.14*VARkd))<<" mean:"<<mean[cNum][m]<<" COV:"<<covar[cNum][m]<<std::endl;
}
LOGP/=2;
//LOG<<cNum<<" : "<<LOGP<<std::endl;
outv.setValueByPosition(cNum,LOGP);
}
//outv.getId(outv.getWinnerUnit(),id);
id=outv.minPosition();
int gray=classes[id];
img2[y][x]=gray;
for(int p=0;p<4;p++)
{
LOG<< pixel[p]<<" ";
}
LOG<<" "<<gray<<std::endl;
//LOG<< "Input : "<<beginDev+i/30<<"_"<<c[i%30].name<<"\tOutput: "<<c[id].name;
// LOG<< std::endl<<"Resized Image : "<<std::endl;
// for(int j=0;j<yDim*xDim;j++)
// {
// if(j%xDim==0)LOG<<"\r\n";
// LOG<< inDev[i][j] ;
// }
}
bmpsaver.save("first.bmp",img2);
for( x=1;x<width*2;x+=2)
for(int y=0;y<height*2;y+=2)
// if(x%2!=1 || y%2!=1)
{
lti::vector<double> pixel= lti::vector<double>(4);
int i,j,k=0;
i=x;
for(j=y-1;j<=y+1;j+=2) //x is constant
if((i<width*2) && (j<height*2))
{
if((j>=0)&& (i>=0) )
{
double temp=img2[j][i];
pixel[k]=temp;
}
else
pixel[k]=img2[y+1][x];//to avoid disturbing distribution in BC //can be -1 in knn
k++;
}
//bmpsaver.save("my.bmp",normalImg);
j=y;
for( i=x-1;i<=x+1;i+=2)//y is constant
if((i<width*2) && (j<height*2))
{
if((j>=0)&& (i>=0))
{
double temp=img2[j][i];
pixel[k]=temp;
}
else
pixel[k]=img2[y][x+1];//to avoid disturbing distribution in BC //can be -1 in knn
k++;
}
for(int cNum=0;cNum<ClassNum;cNum++)
{
double temp=1;
double p=1;
//lti::dvector m=mean[cNum];
//lti::dvector c=covar[cNum];
//lti::gaussian<double> g=lti::gaussian<double>(mean[cNum],covar[cNum]);
//LOG<<std::endl;
double LOGP=0;
double Xd;
double MUkd;
double VARkd;
for(int m=0;m<featureNum;m++)
{
// lti::gaussian<double> g=lti::gaussian<double>(mean[cNum][m],covar[cNum][m]);
// g.apply(inDev.getRow(i).at(m),p);?
Xd=pixel.at(m);
VARkd=covar[cNum][m];
MUkd=mean[cNum][m];
LOGP+=(((Xd-MUkd)*(Xd-MUkd))/VARkd+log(2*3.14*VARkd));
// LOG<<std::endl<<"input: "<<inDev.getRow(i).at(m)<<" LOGp: "<<(((Xd-MUkd)*(Xd-MUkd))/VARkd+LOG(2*3.14*VARkd))<<" mean:"<<mean[cNum][m]<<" COV:"<<covar[cNum][m]<<std::endl;
}
LOGP/=2;
//LOG<<cNum<<" : "<<LOGP<<std::endl;
outv.setValueByPosition(cNum,LOGP);
}
//outv.getId(outv.getWinnerUnit(),id);
id=outv.minPosition();
int gray=classes[id];
img2[y][x]=gray;
for(int p=0;p<4;p++)
{
LOG<< pixel[p]<<" ";
}
LOG<<" "<<gray<<std::endl;
//LOG<< "Input : "<<beginDev+i/30<<"_"<<c[i%30].name<<"\tOutput: "<<c[id].name;
// LOG<< std::endl<<"Resized Image : "<<std::endl;
// for(int j=0;j<yDim*xDim;j++)
// {
// if(j%xDim==0)LOG<<"\r\n";
// LOG<< inDev[i][j] ;
// }
}
bmpsaver.save("x.bmp",img2);
for( x=0;x<width*2;x+=2)
for(int y=1;y<height*2;y+=2)
// if(x%2!=1 || y%2!=1)
{
lti::vector<double> pixel= lti::vector<double>(4);
int i,j,k=0;
i=x;
for(j=y-1;j<=y+1;j+=2) //x is constant
if((i<width*2) && (j<height*2))
{
if((j>=0)&& (i>=0))
{
double temp=img2[j][i];
pixel[k]=temp;
}
else
pixel[k]=img2[y+1][x];//to avoid disturbing distribution in BC //can be -1 in knn
k++;
}
//bmpsaver.save("my.bmp",normalImg);
j=y;
for( i=x-1;i<=x+1;i+=2)//y is constant
if((i<width*2) && (j<height*2))
{
if((j>=0)&& (i>=0))
{
double temp=img2[j][i];
pixel[k]=temp;
}
else
pixel[k]=img2[y][x+1];//to avoid disturbing distribution in BC //can be -1 in knn
k++;
}
for(int cNum=0;cNum<ClassNum;cNum++)
{
double temp=1;
double p=1;
//lti::dvector m=mean[cNum];
//lti::dvector c=covar[cNum];
//lti::gaussian<double> g=lti::gaussian<double>(mean[cNum],covar[cNum]);
//LOG<<std::endl;
double LOGP=0;
double Xd;
double MUkd;
double VARkd;
for(int m=0;m<featureNum;m++)
{
// lti::gaussian<double> g=lti::gaussian<double>(mean[cNum][m],covar[cNum][m]);
// g.apply(inDev.getRow(i).at(m),p);?
Xd=pixel.at(m);
VARkd=covar[cNum][m];
MUkd=mean[cNum][m];
LOGP+=(((Xd-MUkd)*(Xd-MUkd))/VARkd+log(2*3.14*VARkd));
// LOG<<std::endl<<"input: "<<inDev.getRow(i).at(m)<<" LOGp: "<<(((Xd-MUkd)*(Xd-MUkd))/VARkd+LOG(2*3.14*VARkd))<<" mean:"<<mean[cNum][m]<<" COV:"<<covar[cNum][m]<<std::endl;
}
LOGP/=2;
//LOG<<cNum<<" : "<<LOGP<<std::endl;
outv.setValueByPosition(cNum,LOGP);
}
//outv.getId(outv.getWinnerUnit(),id);
id=outv.minPosition();
int gray=classes[id];
img2[y][x]=gray;
for(int p=0;p<4;p++)
{
LOG<< pixel[p]<<" ";
}
LOG<<" "<<gray<<std::endl;
//LOG<< "Input : "<<beginDev+i/30<<"_"<<c[i%30].name<<"\tOutput: "<<c[id].name;
// LOG<< std::endl<<"Resized Image : "<<std::endl;
// for(int j=0;j<yDim*xDim;j++)
// {
// if(j%xDim==0)LOG<<"\r\n";
// LOG<< inDev[i][j] ;
// }
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -