📄 sobel.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 + -