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

📄 main_cache3.c

📁 使用dsp仿真工具ccs仿真弹孔图像的识别
💻 C
字号:


#include <stdlib.h>
#include <stdio.h>
#include <csl.h>
#include <csl_dat.h>
#include <csl_cache.h>


#define NUM 4096
#define ELE  4
#define M  64//定义图像大小
#define N  64
#define thread  60 //阈值

int data1[NUM];//读入像素值
int data2[NUM];

int image_in[M][N];//腐蚀前后的图像像素
int image_out[M+1-ELE][N+1-ELE];


int two_dim1[M][N];//一维转化为二维
int two_dim2[M][N];
int two[M][N];


void imerode(); //腐蚀操作

void main()
{
int sign_show=0;	

int i=0,j=0,k1,k2;
k1=0;
k2=0;
//一维数组转化为二维数组并对两个图像数组作差取绝对值,把得到的数据输入到文本文件的一列中
   for(i=0;i<M;i++)
       for(j=0;j<N;j++)
	   {
		   two_dim1[i][j]=data1[k1++];
          two_dim2[i][j]=data2[k2++];

		  
		   image_in[i][j]=two_dim1[i][j]-two_dim2[i][j];

		   if(image_in[i][j]<0)
			image_in[i][j]=-image_in[i][j];
	   }

       	   
	  imerode();

  //统计有没有靶点
for(i=0;i<M;i++)
{
   for(j=0;j<N;j++)
  {
	  if(image_out[i][j] ==1 )
	  {
		  sign_show=1;
		  break;
	  }
  }
	  if(sign_show)
		  break;
}

if(sign_show)
puts("图像中有新靶点!");
else
puts("图像中没有新靶点!");

}





void imerode() //腐蚀操作
{  
  int length,s,t;
  int radius,square;
  int i,j,p2,k;
  int sum=0;
   
   //图像二值化处理
   for(i=0;i<M;i++)
	   for(j=0;j<N;j++)
	   {
		   if( image_in[i][j] >= thread )
		   {
			   two[i][j]=1;
		   }
		   else
		   {
			   two[i][j]=0;
		   }
		
	   }

 //腐蚀操作前的预处理
  s=M+1-ELE;                  //s、t为循环长度
  t=N+1-ELE;
  length=ELE-1;               
  radius=length/2;
  square=ELE*ELE;  

// 腐蚀操作
  for(i=0;i<s;i++)
	  for(j=0;j<t;j++)
	  { 
		  for(k=i;k<=i+length;k++)
			  for(p2=j;p2<=j+length;p2++)
			  {
			         sum+=two[k][p2];
              }

		  if(sum==square)
		  {
              image_out[i+radius][j+radius]=1;
		  }
		  else
		  {
			  image_out[i+radius][j+radius]=0;
		  }
		  sum=0;
	  }

}


⌨️ 快捷键说明

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