⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 console_lib.cpp

📁 algorithm to resize an image
💻 CPP
📖 第 1 页 / 共 3 页
字号:
					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 + -