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

📄 模拟图像边缘检测的c代码.txt

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

程序思路:先把图像放大K倍,然后检测边缘。使用Roberts梯度检测法。该方法在边缘附近有失真,产生伪边缘。

/*
   to enlittle an image by K times
   AUTHOR:BugEyes
   http://BugEyes.blog.edu.cn
*/

#define N 6
#define K 3
#define M 100

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

void init(int arr[N][N])
{
   arr[1][1]=arr[1][2]=arr[1][3]=1;
   arr[2][3]=arr[3][2]=arr[4][1]=1;
   arr[5][1]=arr[5][2]=arr[5][3]=1;
}

void enlarge(int arr[N][N],int result[K*N][K*N])
{
   int i,j,row,col;
   for(i=0;i<N;i++)
     for(j=0;j<N;j++)
        for(row=K*i;row<K*i+K;row++)
          for(col=K*j;col<K*j+K;col++)
            result[row][col]=arr[i][j];
}

void bianyuan(int arr[N*K][N*K],int result[N*K][N*K])
{
   int i,j,row,col;
   for(i=0;i<N*K;i++)
     for(j=0;j<N*K;j++)
     {
         result[i][j]=abs(arr[i][j]-arr[(i+1)%(K*N)][(j+1)%(K*N)]);
         result[i][j]+=abs(arr[(i+1)%(N*K)][j]-arr[i][(j+1)%(N*K)]);
     }
}

void output(int arr[N][N],int n)
{
  int i,j;
  for(i=0;i<n;i++)
  {
    for(j=0;j<n;j++)
      printf("%5d",arr[i][j]);
    printf("\n\n\n");
  }
}

void output1(int arr[N*K][N*K],int n)
{
   int i,j;
   for(i=0;i<n;i++)
   {
     for(j=0;j<n;j++)
        printf("%6d",arr[i][j]);
     printf("\n\n\n");
   }
}

main()
{
  int array[N][N]={0},result[N*K][N*K]={0},result1[N*K][N*K];
  init(array);
  enlarge(array,result);
  bianyuan(result,result1);
  clrscr();
  output(array,N);
  printf("\n\n");
  output1(result,N*K);
  printf("\n\n");
  output1(result1,N*K);
}
 

⌨️ 快捷键说明

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