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

📄 contrast.c

📁 CCS开发的基于DSP的数据采集和显示程序
💻 C
字号:
#include "contrast.h"

#define    gate_value  30 
#define    Size        16
#define    h_Size      26
extern unsigned char ping_data[180*96];
extern unsigned char pong_data[180*96];

extern int m_old_x ;
extern int m_old_y ;

extern int old_point_x ;
extern int old_point_y ;

void YY_contrast( unsigned	char *Src ,unsigned	char *Src1)//
{
   unsigned	char *lpSrc ; //输入图像指针
   unsigned	char *lpstd ;  // 输出图像指针
	int f = 0 ,
        e = 0 , 
	    i = 0 , 
	    j = 0 , 
	    w = 0 ;    //表示判断的高度

	int x =  0 ; 
	int y =  0 ; 
	
	int width = 180 ;
    int height = 96 ;
    
    int x_val = 0 ;
    int y_val = 0 ;

	int old_x = 90  ;
	int old_y = 48  ;

    unsigned char first_flag  = 1 ;

   	int lBlackNum[9] ;               //投影像素数量
	int Num = 0 , value = 0 ;
	int vision = 0 ;
    

    
	do
	{
		w = 0 ;
		value = 0 ;
		Num = 0 ;
		
		for(j = 0 ; j < 9 ; j++)
			lBlackNum[j] = 0 ;
		
		for( f = -1 ; f <= 1 ;f ++)
		{
			for( e = -1 ;  e <= 1 ; e ++)
			{
				for(j = old_y - Size  ; j < old_y + Size ; j++ ) 
				{
					for( i = old_x - h_Size   ; i < old_x + h_Size; i++ ) 
					{
						lpSrc = Src + i + j*width ;
						lpstd = Src1 + (i + e + x) + (j + f + y) * width ;
						
						if( abs( (*lpSrc) - (*lpstd)) > gate_value  )
						{
							lBlackNum[w]++ ;
						}
						
					}
				}
				
				w++ ;
			}
		}

		Num = lBlackNum[4] ;
		value = 4 ;

		for(i = 0 ; i < 9 ; i++)
		{
			if ( Num > lBlackNum[i] )
			{
				Num = lBlackNum[i] ;
				value = i ;
			}
		}
		
		switch(value)
		{
		case 0: x = x - 1 ; y = y - 1 ; break ;
		case 1:             y = y - 1 ; break ;
		case 2: x = x + 1 ; y = y - 1 ; break ;
		case 3: x = x - 1 ; break ;
		case 4: x_val = x ; y_val = y ; first_flag = 0 ;  break ;
		case 5: x = x + 1 ; break ;
		case 6: x = x - 1 ; y = y + 1 ; break ;
		case 7:             y = y + 1 ; break ;
		case 8: x = x + 1 ; y = y + 1 ; break ;

		default: break ;
		}
		
		vision ++ ;  //对比次数
		if(vision >= 16 )
		{
			first_flag = 0 ;
			x_val = x ;
			y_val = y ;
		}
		
		x_val = x ;
		y_val = y ;
			
	}while( first_flag );
	
	m_old_x = x_val ;
	m_old_y = y_val ;

	old_point_x = m_old_x  + old_point_x ;   
	old_point_y = m_old_y  + old_point_y ;  


}

⌨️ 快捷键说明

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