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

📄 模拟图像分割的c源代码.txt

📁 c语言的一些常见的算法以及思考和改进的文章,写的很不错,花费了很大的精力从网络了搜罗的,希望大家喜欢.
💻 TXT
字号:
模拟图像分割的C源代码[原创] 
简单模拟。

/*
   mo shu bang xiao guo

   http://bugeyes.blog.edu.cn
*/

#define N 8
#define K 255

#i nclude <conio.h>
#i nclude <stdlib.h>
#i nclude <math.h>

float aver=0;
int count=0;
int center;

void init(int arr[N][N])
{
  int i,j;
  for(i=0;i<N;i++)
     for(j=0;j<N;j++)
       arr[i][j]=random(K);
}

void magic(int origin[N][N],int magical[N][N],int row,int col,float threshold)
{
  if(row>N-1||row<0)
    return;
  if(col>N-1||col<0)
    return;
  if(magical[row][col]!=1)
    return;

  if(row+1<=N-1)
  if(fabs((aver*count+origin[row+1][col])/(count+1)-center)<threshold&&magical[row+1][col]==0)
  {
     magical[row+1][col]=1;
     aver=(aver*count+origin[row+1][col])/(count+1);
     count++;
     magic(origin,magical,row+1,col,threshold);
  }
  if(row-1>=0)
  if(fabs((aver*count+origin[row-1][col])/(count+1)-center)<threshold&&magical[row-1][col]==0)
  {
     magical[row-1][col]=1;
     aver=(aver*count+origin[row-1][col])/(count+1);
     count++;
     magic(origin,magical,row-1,col,threshold);
  }
  if(col-1>=0)
  if(fabs((aver*count+origin[row][col-1])/(count+1)-center)<threshold&&magical[row][col-1]==0)
  {
     magical[row][col-1]=1;
     aver=(aver*count+origin[row][col-1])/(count+1);
     count++;
     magic(origin,magical,row,col-1,threshold);
  }
  if(col+1<=N-1)
  if(fabs((aver*count+origin[row][col+1])/(count+1)-center)<threshold&&magical[row][col+1]==0)
  {
     magical[row][col+1]=1;
     aver=(aver*count+origin[row][col+1])/(count+1);
     count++;
     magic(origin,magical,row,col+1,threshold);
  }
}

void output(int origin[N][N],int magical[N][N],int flag)
{
  int i,j;
  for(i=0;i<N;i++)
  {
    for(j=0;j<N;j++)
      if(flag!=1)
         printf("%4d",origin[i][j]);
      else
       if(magical[i][j]==1)
          printf("%4d",origin[i][j]);
       else
          printf("    ");
  printf("\n");
  }
}

void main()
{
  int origin[N][N];
  int magical[N][N]={0};
  int row,col;
  float threshold;
  init(origin);
  clrscr();
  output(origin,magical,0);
  printf("Please input the 'row' and 'col'\n");
  scanf("%d%d",&row,&col);
  if(row<0||row>=N||col<0||col>=N)
  {
     printf("input error");
     exit(0);
  }
  magical[row][col]=1;
  center=origin[row][col];
  aver=origin[row][col];
  count=1;
  printf("Please input the 'threshold'\n");
  scanf("%f",&threshold);
  magic(origin,magical,row,col,threshold);
  printf("The magical image area is...\n");
  output(origin,magical,1);
  printf("aver:%f,count:%d",aver,count);
}
 

⌨️ 快捷键说明

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