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

📄 imagecodesdoc.cpp

📁 VC写的harris角点检测程序。又名plessey
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	pCmdUI->Enable(trans!=NULL);
	
}

void CImageCodesDoc::OnUpdateProcessAve(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(trans!=NULL);
	
}

void CImageCodesDoc::OnUpdateProcessDataout(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(trans!=NULL);
	
}

void CImageCodesDoc::OnUpdateProcessHor(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(trans!=NULL);
	
}

void CImageCodesDoc::OnUpdateProcessHv(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(trans!=NULL);
	
}

void CImageCodesDoc::OnUpdateProcessLap(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(trans!=NULL);
	
}

void CImageCodesDoc::OnUpdateProcessMid(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(trans!=NULL);
	
}

void CImageCodesDoc::OnUpdateProcessRecover(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(trans!=NULL);
	
}

void CImageCodesDoc::OnUpdateProcessRobert(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(trans!=NULL);
	
}

void CImageCodesDoc::OnUpdateProcessRui(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(trans!=NULL);
	
}

void CImageCodesDoc::OnUpdateProcessSobel(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(trans!=NULL);
	
}

void CImageCodesDoc::OnUpdateProcessVer(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(trans!=NULL);
	
}

void CImageCodesDoc::OnUpdateFileSaveAs(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
    pCmdUI->Enable(trans!=NULL);	
}


unsigned int CImageCodesDoc::SortAndSelectM(unsigned int s[3][3])
{
unsigned int i,j,count,temp,t[9];

for(i=0,count=0;i<3;i++)
 for(j=0;j<3;j++)
    t[count]=s[i][j],count++;

for(count=0;count<8;count++)//冒泡法排序
  for(i=0;i<9-count;i++)
	  if(t[i]>t[i+1])temp=t[i],t[i]=t[i+1],t[i+1]=temp;

return t[5];//返回中间值

}

void CImageCodesDoc::OnProcessConvert() 
{
	// TODO: Add your command handler code here
	label=false;
	
	unsigned int i,j;
	if(Grayflag==false) Gray();
	
	if(convoflag==false) CopyGVToConvo();
	  
	for(i=0;i<r0;i++)
		for(j=0;j<c0;j++)
		{
			convo[i][j]=255-GrayValue[i][j];//反色显示
		
		}
		
	ConvertTo24Bits(convo);
	TransBack(convo);
	Display();
	ConvertTo8Bits(convo);
	convoflag=true;
	
}

void CImageCodesDoc::OnProcessGray1() 
{
	// TODO: Add your command handler code here
	label=TRUE;//表示正在进行当前图处理
    Gray();
	CopyGVToConvo();//保证当前图处理中每一次灰度化,就重新开始一系列处理
	ConvertTo24Bits(GrayValue);
	//转化为一维数组后,就可以调用dispay直接输出了
	TransBack(GrayValue);
	Display();
	ConvertTo8Bits(GrayValue);	
}


void CImageCodesDoc::OnProcessAve1() 
{
	// TODO: Add your command handler code here
	label=true;//表示正在进行当前图处理
  double T[3][3]={0.11,0.11,0.11,0.11,0.11,0.11,0.11,0.11,0.11};   
    EdgeDetect(T);
}

void CImageCodesDoc::OnProcessConvert1() 
{
	// TODO: Add your command handler code here
	label=true;
	unsigned int i,j;

	if(convoflag==false) 
		 CopyGrayValueToConvo();	  

	for(i=0;i<r0;i++)
		for(j=0;j<c0;j++)
		{
			convo[i][j]=255-convo[i][j];		
		}
			
	ConvertTo24Bits(convo);
	TransBack(convo);
	Display();
	ConvertTo8Bits(convo);
}

void CImageCodesDoc::OnProcessErzhihua1() 
{
	// TODO: Add your command handler code here
	label=true;
	erflag=TRUE;
		
	unsigned int r,c;

	if(convoflag==false) CopyGrayValueToConvo();	

	for(r=0;r<r0;r++)
		for(c=0;c<c0;c++)
		{
			if(convo[r][c]>70) GrayValue[r][c]=255;//当前图处理中的二值化阈值在程序中指定70
			else GrayValue[r][c]=0;
		}
       CopyGVToConvo();
	   Grayflag=false;

	ConvertTo24Bits(convo);
	TransBack(convo);
	Display();
	ConvertTo8Bits(convo);
	convoflag=true;

}

void CImageCodesDoc::OnProcessHor1() 
{
	// TODO: Add your command handler code here
	label=true;	
	double T[3][3]={0,-1,0,0,1,0,0,0,0};   
    EdgeDetect(T);	
}

void CImageCodesDoc::OnProcessHv1() 
{
	// TODO: Add your command handler code here
	label=true;	
	double T[3][3]={-1,0,0,0,1,0,0,0,0};   
    EdgeDetect(T);
}

void CImageCodesDoc::OnProcessLap1() 
{
	// TODO: Add your command handler code here
	label=true;
	double T[3][3]={0,1,0,1,-4,1,0,1,0};   
    EdgeDetect(T);	
}

void CImageCodesDoc::OnProcessMid1() 
{
	// TODO: Add your command handler code here
	label=true;
	//当前图处理都是对上一步得到的convo值进行
	if(convoflag==false) CopyGrayValueToConvo();//判断convo中是否有值,若无,就把灰度值拷过来

	::SetCursor(mHWait);

	unsigned int r,c,sort[3][3];
	unsigned int i,j;

	
	for(c=0;c<c0;c++)
	{
	    GrayValue[0][c]=convo[0][c];
		GrayValue[r0-1][c]=convo[r0-1][c];
	}
	for(r=1;r<r0-1;r++)
	{
		GrayValue[r][0]=convo[r][0];
		GrayValue[r][c0-1]=convo[r][c0-1];
	}

	for(r=0;r<r0-2;r++)
		for(c=0;c<c0-2;c++)
		{
			for(i=0;i<3;i++)
				for(j=0;j<3;j++)
					sort[i][j]=convo[r+i][c+j];

				GrayValue[r+1][c+1]=SortAndSelectM(sort);//GrayValue用作临时数组
		}
    CopyGVToConvo();//把临时数组中的值拷到convo中以供显示
	Grayflag=false;//表示灰度矩阵的值已经不再是原始图像的灰度值
	ConvertTo24Bits(convo);//显示convo
	TransBack(convo);
	Display();
	ConvertTo8Bits(convo);

		::SetCursor(mHArrow);
	
}

void CImageCodesDoc::OnProcessRobert1() 
{
	// TODO: Add your command handler code here
label=true;

if(convoflag==false) CopyGrayValueToConvo();

unsigned int GrayColorx,GrayColory,GrayColor;
unsigned int i,j,r,c;

	 ::SetCursor(mHWait);

	for(c=0;c<c0;c++)
	{
		GrayValue[0][c]=255;
		GrayValue[r0-1][c]=255;
	}
	for(r=1;r<r0-1;r++)
	{
		GrayValue[r][0]=255;
		GrayValue[r][c0-1]=255;
	}

 for(i=1;i<r0-1;i++)
 {for(j=1;j<c0-1;j++)
  {GrayColorx=convo[i][j]-convo[i-1][j-1];
   GrayColory=convo[i-1][j]-convo[i][j-1];
   GrayColor=abs(GrayColorx)+abs(GrayColory);
   if(GrayColor>255) GrayColor=255;
   GrayValue[i][j]=GrayColor;
   }
  }
CopyGVToConvo();
Grayflag=false;
 ConvertTo24Bits(convo);
 TransBack(convo);
 Display();
 ConvertTo8Bits(convo);

	::SetCursor(mHArrow);
}

void CImageCodesDoc::OnProcessRui1() 
{
	// TODO: Add your command handler code here
	label=true;
	double T[3][3]={0,-1,0,-1,5,-1,0,-1,0};   
    EdgeDetect(T);
}

void CImageCodesDoc::OnProcessSobel1() 
{
	// TODO: Add your command handler code here
	label=true;
    if(convoflag==false) 
       CopyGrayValueToConvo();

 unsigned int i,j,r,c;
 unsigned int GrayColorx,GrayColory;
 ::SetCursor(mHWait);

	for(c=0;c<c0;c++)
	{
		GrayValue[0][c]=255;
		GrayValue[r0-1][c]=255;
	}
	for(r=1;r<r0-1;r++)
	{
		GrayValue[r][0]=255;
		GrayValue[r][c0-1]=255;
	}

 for(i=1;i<r0-1;i++)
  for(j=1;j<c0-1;j++)
  {
	  GrayColorx=(convo[i-1][j+1]+2*convo[i][j+1]+convo[i+1][j+1])
             -(convo[i-1][j-1]+2*convo[i][j-1]+convo[i+1][j-1]);
      GrayColory=(convo[i-1][j-1]+2*convo[i-1][j]+convo[i-1][j+1])
             -(convo[i+1][j-1]+2*convo[i+1][j]+convo[i+1][j+1]);
      GrayValue[i][j]=abs(GrayColorx)+abs(GrayColory);
      if(GrayValue[i][j]>255) GrayValue[i][j]=255;
   }

 CopyGVToConvo();
 Grayflag=false;

 ConvertTo24Bits(convo);
 TransBack(convo);
 Display();
 ConvertTo8Bits(convo);

 ::SetCursor(mHArrow);
}

void CImageCodesDoc::OnProcessVer1() 
{
	// TODO: Add your command handler code here
	label=true;
	double T[3][3]={0,0,0,-1,1,0,0,0,0};   
    EdgeDetect(T);	
}

void CImageCodesDoc::CopyGrayValueToConvo()
{

	if(Grayflag==false) Gray();//先判断GrayValue中是否有值
    CopyGVToConvo();

}
void CImageCodesDoc::CopyGVToConvo()
{
	unsigned int i,j;

	for(i=0;i<r0;i++)
			for(j=0;j<c0;j++)
				convo[i][j]=GrayValue[i][j];//拷贝
	convoflag=true;

}


void CImageCodesDoc::OnUpdateFileSave(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(trans!=NULL);	
}


void CImageCodesDoc::OnUpdateProcessAve1(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(trans!=NULL);
}

void CImageCodesDoc::OnUpdateProcessConvert1(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(trans!=NULL);
}

void CImageCodesDoc::OnUpdateProcessErzhihua1(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(trans!=NULL);
}

void CImageCodesDoc::OnUpdateProcessGray1(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(trans!=NULL);
}

void CImageCodesDoc::OnUpdateProcessHor1(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(trans!=NULL);
}

void CImageCodesDoc::OnUpdateProcessHv1(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(trans!=NULL);
}

void CImageCodesDoc::OnUpdateProcessLap1(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(trans!=NULL);
}

void CImageCodesDoc::OnUpdateProcessMid1(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(trans!=NULL);
}

void CImageCodesDoc::OnUpdateProcessRobert1(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(trans!=NULL);
}

void CImageCodesDoc::OnUpdateProcessRui1(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(trans!=NULL);
}

void CImageCodesDoc::OnUpdateProcessSobel1(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(trans!=NULL);
}

void CImageCodesDoc::OnUpdateProcessVer1(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(trans!=NULL);
}

void CImageCodesDoc::OnUpdateProcessConvert(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(trans!=NULL);
}

void CImageCodesDoc::OnPointEnhance() 
{
	// TODO: Add your command handler code here
	label=false;
	if(Grayflag==false) Gray();//判断GrayValue中是否为原始图像的灰度值
	unsigned int r,c;
	for(r=0;r<r0;r++)
		for(c=0;c<c0;c++)
		{
			convo[r][c]=GrayValue[r][c]+20;//亮度增强20
			if(convo[r][c]>255) convo[r][c]=255;
		}
	ConvertTo24Bits(convo);
	TransBack(convo);
	Display();
	convoflag=TRUE;
}

void CImageCodesDoc::OnPointEnhance1() 
{
	// TODO: Add your command handler code here
	label=TRUE;//标志进行当前图处理
	if(convoflag==false) CopyGrayValueToConvo();
	unsigned int r,c;
	for(r=0;r<r0;r++)
		for(c=0;c<c0;c++)
		{
			convo[r][c]=convo[r][c]+20;
			if(convo[r][c]>255) convo[r][c]=255;
		}
	ConvertTo24Bits(convo);
	TransBack(convo);
	Display();
	ConvertTo8Bits(convo);
}

void CImageCodesDoc::OnPinghuaK() //k个邻点平均平滑
{
	// TODO: Add your command handler code here
	label=false;

	if(Grayflag==false) Gray() ;

	::SetCursor(mHWait);

	unsigned int r,c,sort[3][3];//sort中存放中心像素及周围的8个像素
	unsigned int i,j;

	
	for(c=0;c<c0;c++)
	{
		convo[0][c]=GrayValue[0][c];
		convo[r0-1][c]=GrayValue[r0-1][c];
	}
	for(r=1;r<r0-1;r++)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -