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

📄 imc.c

📁 TI达芬奇开发平台下的目标识别程序主要匹配准则为力矩直方图和人的肤色等
💻 C
字号:
#include"imc.h"
  
float m10,m01,m00,m11,m20,m02,m21,m12,m30,m03;

float e11,e20,e02,e30,e03,e21,e12,r;


void IM(Uint8* in,Uint16 ROWS,Uint16 COLS,float* out)
{
	float xb,yb,xd,yd;
	int i,j;
	m10=0;
	m01=0;
	m00=0;
	m11=0;
	m20=0;
	m02=0;
	m21=0;
	m12=0;
	m30=0;
	m03=0;
	xb=0;
	yb=0;
	xd=0;
	yd=0;
	e11=0;
	e20=0;
	e02=0;
	e30=0;
	e03=0;
	e21=0;
	e12=0;
	
	for(j = 0; j < COLS; j++)
	{
		for(i = 0; i < ROWS; i++)
		{	
		    m00=m00+(*(in+i*COLS+j));//data[i*COLS+j];
		    m10=m10+(*(in+i*COLS+j))*(j+1);
			m01=m01+(*(in+i*COLS+j))*(i+1);
		}
	}
	
	xb=m10/m00;
	yb=m01/m00;

	for(j = 1; j < COLS+1; j++)
	{
		for(i = 1; i < ROWS+1; i++)
		{	
		    if((*(in+(i-1)*COLS+j-1))>0)//data[(i-1)*COL+(j-1)]
			{
				xd=j-xb;
				yd=i-yb;
			    m11=m11+xd*yd*(*(in+(i-1)*COLS+j-1));
            	m20=m20+xd*xd*(*(in+(i-1)*COLS+j-1));
            	m02=m02+yd*yd*(*(in+(i-1)*COLS+j-1));
            	m21=m21+xd*xd*yd*(*(in+(i-1)*COLS+j-1));
            	m12=m12+xd*yd*yd*(*(in+(i-1)*COLS+j-1));
            	m30=m30+xd*xd*xd*(*(in+(i-1)*COLS+j-1));
           		m03=m03+yd*yd*yd*(*(in+(i-1)*COLS+j-1));
			}
		}
	}

	e11=m11/(m00*m00);
	e20=m20/(m00*m00);
	e02=m02/(m00*m00);
	e30=m30/pow(m00,2.5);
	e03=m03/pow(m00,2.5);
	e21=m21/pow(m00,2.5);
	e12=m12/pow(m00,2.5);

	*(out)=e20+e02;
	*(out+1)=(e20-e02)*(e20-e02)+4*e11*e11;
	*(out+2)=(e30-3*e12)*(e30-3*e12)+(3*e21-e03)*(3*e21-e03);
	*(out+3)=(e30+e12)*(e30+e12)+(e21+e03)*(e21+e03);
	*(out+4)=(e30-3*e12)*(e30+e12)*((e30+e12)*(e30+e12)-3*(e21+e03)*(e21+e03))+(3*e21-e03)*(e21+e03)*(3*(e30+e12)*(e30+e12)-(e21+e03)*(e21+e03));
	*(out+5)=(e20-e02)*((e30+e12)*(e30+e12)-(e21+e03)*(e21+e03))+4*e11*(e30+e12)*(e21+e03);
	*(out+6)=(3*e21-e03)*(e30+e12)*((e30+e12)*(e30+e12)-3*(e21+e03)*(e21+e03))+(3*e12-e30)*(e21+e03)*(3*(e30+e12)*(e30+e12)-(e21+e03)*(e21+e03));
	
	
	if(*(out)!=0)	
	{
	*(out+1)=(*(out+1))/((*(out))*(*(out)));
	*(out+2)=(*(out+2))/((*(out))*(*(out))*(*(out)));
	*(out+3)=(*(out+3))/((*(out))*(*(out))*(*(out)));
	*(out+4)=(*(out+4))/((*(out))*(*(out))*(*(out))*(*(out))*(*(out))*(*(out)));
	*(out+5)=(*(out+5))/((*(out))*(*(out))*(*(out))*(*(out)));
	*(out+6)=(*(out+6))/((*(out))*(*(out))*(*(out))*(*(out))*(*(out))*(*(out)));
    	}
/*
	*(out)=*(out)!=0?((log10((*(out))))>0?(log10((*(out)))):(-log10((*(out))))):*(out);
	*(out+1)=*(out+1)!=0?((log10((*(out+1))))>0?(log10((*(out+1)))):(-log10((*(out+1))))):*(out+1);
	*(out+2)=*(out+2)!=0?((log10((*(out+2))))>0?(log10((*(out+2)))):(-log10((*(out+2))))):*(out+2);
	*(out+3)=*(out+3)!=0?((log10((*(out+3))))>0?(log10((*(out+3)))):(-log10((*(out+3))))):*(out+3);
	*(out+4)=*(out+4)!=0?((log10((*(out+4))))>0?(log10((*(out+4)))):(-log10((*(out+4))))):*(out+4);
	*(out+5)=*(out+5)!=0?((log10((*(out+5))))>0?(log10((*(out+5)))):(-log10((*(out+5))))):*(out+5);
	*(out+6)=*(out+6)!=0?((log10((*(out+6))))>0?(log10((*(out+6)))):(-log10((*(out+6))))):*(out+6);
*/

	if(fabs(log10(*out))!=inf)*(out)=fabs(log10(*out));
	if(fabs(log10(*(out+1)))!=inf)*(out)=fabs(log10(*(out+1)));
	if(fabs(log10(*(out+2)))!=inf)*(out)=fabs(log10(*(out+2)));
	if(fabs(log10(*(out+3)))!=inf)*(out)=fabs(log10(*(out+3)));
	if(fabs(log10(*(out+4)))!=inf)*(out)=fabs(log10(*(out+4)));
	if(fabs(log10(*(out+5)))!=inf)*(out)=fabs(log10(*(out+5)));
	if(fabs(log10(*(out+6)))!=inf)*(out)=fabs(log10(*(out+6)));
	
}

float Distance(float* in,float* ref)
{	
	float r,w,r1;
	Int8 i;
	r=0;
	for (i=0;i<7;i++)
	{
	
	if((*(in+i) + *(ref+i))!=0)
	r1=((*(in+i) - *(ref+i))>0)?(*(in+i) - *(ref+i)):(*(ref+i)-*(in+i));
	r1=r1/(*(in+i) + *(ref+i));

	r=r+r1; 

	}

	return r;
}

⌨️ 快捷键说明

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