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

📄 hough.c

📁 图像处理软件,功能比较基础
💻 C
字号:
void Hough(int InRow,int InCol,unsigned char **InImg,int *Thita,int *Radia)
{
  int    nThita,nRadia,i,j,Max,TranRow,TranCol,**TranImg;
  float  *sc,*ss,*sk;


  sc = (float *)fspace_1d(2*MAXANGLE+1,sizeof(float));
  ss = (float *)fspace_1d(2*MAXANGLE+1,sizeof(float));
  sk = (float *)fspace_1d(TranCol,sizeof(float));

  TranRow = (int)sqrt((float)InRow*InRow+InCol*InCol)*2;
  TranCol = 2*MAXANGLE + 1;

  TranImg = (int **)fspace_2d(TranRow,TranCol,sizeof(int));

  for (i=0;i<TranRow;i++)
    for (j=0;j<TranCol;j++)
      TranImg[i][j] = 0;

  for(i=0;i<=MAXANGLE;i++)
  {
    sc[i] = cos(i * PI / 180);
    ss[i] = sin(i * PI / 180);
  }

  for(i=MAXANGLE+1;i<TranCol;i++)
  {
    sc[i] = -cos(i * 3.1415926 / 180);
    ss[i] = sin(i * 3.1415926 / 180);
  }

  for(i=1;i<InRow-1;i++)
  {
    for(nThita=0;nThita<TranCol;nThita++)
      sk[nThita] = i * ss[nThita];

    for(j=0;j<InCol;j++)
      if(InImg[i][j]!=ZERO)
	for(nThita=0;nThita<TranCol;nThita++)
	{
	  nRadia = (int) (sk[nThita] + j * sc[nThita]  +0.5);
	  //printf("Radia=%d,Thita=%d\n",Radia,Thita);
	  TranImg[nRadia][nThita]++;
	}
  }

  Max = 0;
  for(i = 0;i<TranRow;i++)
    for(j =0; j<TranCol;j++)
	if(TranImg[i][j] > Max)
	   {Max = TranImg[i][j];
	    nRadia = i;
	    nThita = j;
	    }

  printf("nRadia=%d,nThita=%d\n",nRadia,nThita);

  *Radia=nRadia;
  *Thita=nThita;
  ffree_2d((void **)TranImg,TranRow);
 }

⌨️ 快捷键说明

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