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

📄 sobel.c

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

//工作变量
#pragma DATA_SECTION(nMemTemp, ".internal");//".INTPROCBUFF");
#pragma DATA_ALIGN(nMemTemp,128);
unsigned char nMemTemp[720];
#pragma DATA_SECTION(cLines, ".internal");//".INTPROCBUFF");
#pragma DATA_ALIGN(cLines,128);
unsigned char cLines[MWIDTH*3];
int mi,mj,m_nWork1,m_nWork2;
unsigned int m_nWork,*pWork,m_nOffset1,m_nOffset2,m_nOffset3;
unsigned char *pImg1,*pImg2,*pImg3;

unsigned char c0h, c1h, c2h, h_min;  
unsigned char c0m, c1m, c2m, m_mid;  
unsigned char c0l, c1l, c2l, l_max;  
unsigned char m_h, m_l, tmp, out;
    
#pragma DATA_SECTION(cBuffer, ".internal");//".INTPROCBUFF");
#pragma DATA_ALIGN(cBuffer,128);
unsigned char cBuffer[9],cWork;

void ICETEKDM642PCIBoardInit()
{
	m_nOffset1=0;
	m_nOffset2=MWIDTH;
	m_nOffset3=MWIDTH*2;
	for ( mi=0;mi<MWIDTH*2;mi++ )
		cLines[mi]=0;
}

 // #pragma CODE_SECTION(ICETEKDM642PCISobel,".text1")
 
void ICETEKDM642PCISobel()
{

    DAT_copy(nMemTemp,cLines+m_nOffset3,MWIDTH);
	pImg1=cLines; pImg1+=m_nOffset1;
	pImg2=cLines; pImg2+=m_nOffset2;
	pImg3=cLines; pImg3+=m_nOffset3;
	c0l=(*pImg1); pImg1++; c1l=(*pImg1); pImg1++;
	c0m=(*pImg2); pImg2++; c1m=(*pImg2); pImg2++;
	c0h=(*pImg3); pImg3++; c1h=(*pImg3); pImg3++;
	for ( mi=2;mi<MWIDTH;mi++,pImg1++,pImg2++,pImg3++ )
	{
		c2l=(*pImg1); c2m=(*pImg2); c2h=(*pImg3);
		
        if (c2l > c2h) { tmp = c2l; c2l = c2h; c2h = tmp; }
        if (c2l > c2m) { tmp = c2l; c2l = c2m; c2m = tmp; }
        if (c2m > c2h) { tmp = c2m; c2m = c2h; c2h = tmp; }

        h_min = c2h;
        if (c1h < h_min) { h_min = c1h; }
        if (c0h < h_min) { h_min = c0h; }

        m_l   = c0m;
        m_mid = c1m;
        m_h   = c2m;

        if (m_l   > m_h  ) { tmp = m_l; m_l = m_h; m_h = tmp; }
        if (m_l   > m_mid) { m_mid = m_l; }
        if (m_mid > m_h  ) { m_mid = m_h; }

        l_max = c2l;
        if (c1l > l_max) { l_max = c1l; }
        if (c0l > l_max) { l_max = c0l; }

        out = m_mid;

        if (h_min > l_max) { tmp   = h_min; h_min = l_max; l_max = tmp; }
        if (h_min > out  ) { out   = h_min; }
        if (out   > l_max) { out   = l_max; }

        nMemTemp[mi] = 255 - out;

		c0h = c1h;    c1h = c2h;
        c0m = c1m;    c1m = c2m;
        c0l = c1l;    c1l = c2l;
	}
//	nMemTemp[mi]=0;
	m_nWork=m_nOffset1; m_nOffset1=m_nOffset2;
	m_nOffset2=m_nOffset3; m_nOffset3=m_nWork;
	
/*	int i;
	
	// 取反
	for ( i=0;i<720;i++ )
		nMemTemp[i]= 255 - nMemTemp[i];*/
}



⌨️ 快捷键说明

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