|
|
|
@ -238,7 +238,7 @@ void DetectAreaObj::DAT_MallocMemory(SINT32 nWidth, SINT32 nHeight, CENTERRECT m
|
|
|
|
DAT_pBinary_Mag = new UBYTE8[DAT_CENTER_REGION_SIZE];
|
|
|
|
DAT_pBinary_Mag = new UBYTE8[DAT_CENTER_REGION_SIZE];
|
|
|
|
DAT_pBinary_Gray = new UBYTE8[DAT_CENTER_REGION_SIZE];
|
|
|
|
DAT_pBinary_Gray = new UBYTE8[DAT_CENTER_REGION_SIZE];
|
|
|
|
DAT_pBinary_GrayNew = new UBYTE8[DAT_CENTER_REGION_SIZE];
|
|
|
|
DAT_pBinary_GrayNew = new UBYTE8[DAT_CENTER_REGION_SIZE];
|
|
|
|
DAT_DIFF = new SINT16[DAT_CENTER_REGION_SIZE];
|
|
|
|
DAT_DIFF = new SINT32[DAT_CENTER_REGION_SIZE];
|
|
|
|
DAT_pxDetectAreaGradIntegral = new SINT32[DAT_CENTER_REGION_SIZE];
|
|
|
|
DAT_pxDetectAreaGradIntegral = new SINT32[DAT_CENTER_REGION_SIZE];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -555,7 +555,7 @@ SINT32 DetectAreaObj::DAT_DetectAreaTarget(GD_VIDEO_FRAME_S img, GLB_STATUS nSta
|
|
|
|
|
|
|
|
|
|
|
|
if (GLB_OBJ_GRAY_BRIGHT == m_DAT_stPara.nDetectGrayType)
|
|
|
|
if (GLB_OBJ_GRAY_BRIGHT == m_DAT_stPara.nDetectGrayType)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SINT16* pnTgBgDiff = (SINT16*)DAT_DIFF;
|
|
|
|
SINT32* pnTgBgDiff = (SINT32*)DAT_DIFF;
|
|
|
|
|
|
|
|
|
|
|
|
//20161115,计算背景目标灰度残差图
|
|
|
|
//20161115,计算背景目标灰度残差图
|
|
|
|
DAT_CalcTgBgDiff(m_DAT_stOutput.pnSrDSmpImg, snSrDSmp, m_DAT_stOutput.pnGrayInt,
|
|
|
|
DAT_CalcTgBgDiff(m_DAT_stOutput.pnSrDSmpImg, snSrDSmp, m_DAT_stOutput.pnGrayInt,
|
|
|
|
@ -622,7 +622,7 @@ SINT32 DetectAreaObj::DAT_DetectAreaTarget(GD_VIDEO_FRAME_S img, GLB_STATUS nSta
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (GLB_OBJ_GRAY_DARK == m_DAT_stPara.nDetectGrayType)
|
|
|
|
else if (GLB_OBJ_GRAY_DARK == m_DAT_stPara.nDetectGrayType)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SINT16* pnTgBgDiff = (SINT16*)DAT_DIFF;
|
|
|
|
SINT32* pnTgBgDiff = (SINT32*)DAT_DIFF;
|
|
|
|
|
|
|
|
|
|
|
|
//20161115,计算背景目标灰度残差图
|
|
|
|
//20161115,计算背景目标灰度残差图
|
|
|
|
DAT_CalcTgBgDiff(m_DAT_stOutput.pnSrDSmpImg, snSrDSmp, m_DAT_stOutput.pnGrayInt,
|
|
|
|
DAT_CalcTgBgDiff(m_DAT_stOutput.pnSrDSmpImg, snSrDSmp, m_DAT_stOutput.pnGrayInt,
|
|
|
|
@ -690,7 +690,7 @@ SINT32 DetectAreaObj::DAT_DetectAreaTarget(GD_VIDEO_FRAME_S img, GLB_STATUS nSta
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SINT32 nFrmBrightObjCnt = 0;
|
|
|
|
SINT32 nFrmBrightObjCnt = 0;
|
|
|
|
SINT32 nFrmDarkObjCnt = 0;
|
|
|
|
SINT32 nFrmDarkObjCnt = 0;
|
|
|
|
SINT16* pnTgBgDiff = (SINT16*)DAT_DIFF;
|
|
|
|
SINT32* pnTgBgDiff = (SINT32*)DAT_DIFF;
|
|
|
|
|
|
|
|
|
|
|
|
//20161112Whao,初始化亮暗目标数组
|
|
|
|
//20161112Whao,初始化亮暗目标数组
|
|
|
|
TARGET_OBJECT* ptDATResultBright = (TARGET_OBJECT*)DAT_Target_Bright;
|
|
|
|
TARGET_OBJECT* ptDATResultBright = (TARGET_OBJECT*)DAT_Target_Bright;
|
|
|
|
@ -778,7 +778,7 @@ SINT32 DetectAreaObj::DAT_DetectAreaTarget(GD_VIDEO_FRAME_S img, GLB_STATUS nSta
|
|
|
|
return nObjsCnt;
|
|
|
|
return nObjsCnt;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void dfs(unsigned char * grid, int nr, int nc, int r, int c)
|
|
|
|
void dfs(unsigned char* grid, int nr, int nc, int r, int c)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
grid[r * nc + c] = '\0';
|
|
|
|
grid[r * nc + c] = '\0';
|
|
|
|
if (r - 1 >= 0 && grid[(r - 1) * nc + c] == '\x1') dfs(grid, nr, nc, r - 1, c);
|
|
|
|
if (r - 1 >= 0 && grid[(r - 1) * nc + c] == '\x1') dfs(grid, nr, nc, r - 1, c);
|
|
|
|
@ -787,7 +787,7 @@ void dfs(unsigned char * grid, int nr, int nc, int r, int c)
|
|
|
|
if (c + 1 < nc && grid[r * nc + (c + 1)] == '\x1') dfs(grid, nr, nc, r, c + 1);
|
|
|
|
if (c + 1 < nc && grid[r * nc + (c + 1)] == '\x1') dfs(grid, nr, nc, r, c + 1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int numIslands(unsigned char *grid, int nr, int nc)
|
|
|
|
int numIslands(unsigned char* grid, int nr, int nc)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
int num_islands = 0;
|
|
|
|
int num_islands = 0;
|
|
|
|
for (int r = 0; r < nr; ++r)
|
|
|
|
for (int r = 0; r < nr; ++r)
|
|
|
|
@ -973,7 +973,7 @@ SINT32 DetectAreaObj::DAT_ObjectAreaSeg(GD_VIDEO_FRAME_S img, CENTERRECT crnSrRe
|
|
|
|
|
|
|
|
|
|
|
|
if (GLB_OBJ_GRAY_BRIGHT == m_DAT_stPara.nDetectGrayType)
|
|
|
|
if (GLB_OBJ_GRAY_BRIGHT == m_DAT_stPara.nDetectGrayType)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SINT16* pnTgBgDiff = (SINT16*)DAT_DIFF;
|
|
|
|
SINT32* pnTgBgDiff = (SINT32*)DAT_DIFF;
|
|
|
|
|
|
|
|
|
|
|
|
//20161115,计算背景目标灰度残差图
|
|
|
|
//20161115,计算背景目标灰度残差图
|
|
|
|
DAT_CalcTgBgDiff(m_DAT_stOutput.pnSrDSmpImg, snSrDSmp, m_DAT_stOutput.pnGrayInt,
|
|
|
|
DAT_CalcTgBgDiff(m_DAT_stOutput.pnSrDSmpImg, snSrDSmp, m_DAT_stOutput.pnGrayInt,
|
|
|
|
@ -997,7 +997,7 @@ SINT32 DetectAreaObj::DAT_ObjectAreaSeg(GD_VIDEO_FRAME_S img, CENTERRECT crnSrRe
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (GLB_OBJ_GRAY_DARK == m_DAT_stPara.nDetectGrayType)
|
|
|
|
else if (GLB_OBJ_GRAY_DARK == m_DAT_stPara.nDetectGrayType)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SINT16* pnTgBgDiff = (SINT16*)DAT_DIFF;
|
|
|
|
SINT32* pnTgBgDiff = (SINT32*)DAT_DIFF;
|
|
|
|
|
|
|
|
|
|
|
|
//20161115,计算背景目标灰度残差图
|
|
|
|
//20161115,计算背景目标灰度残差图
|
|
|
|
DAT_CalcTgBgDiff(m_DAT_stOutput.pnSrDSmpImg, snSrDSmp, m_DAT_stOutput.pnGrayInt,
|
|
|
|
DAT_CalcTgBgDiff(m_DAT_stOutput.pnSrDSmpImg, snSrDSmp, m_DAT_stOutput.pnGrayInt,
|
|
|
|
@ -1154,8 +1154,8 @@ void DetectAreaObj::DAT_CleanUpFrameDetectOutput(void)
|
|
|
|
memset(ptTargetArrayCombine, 0, sizeof(TARGET_OBJECT) * DAT_TARGET_NUM_MAX);
|
|
|
|
memset(ptTargetArrayCombine, 0, sizeof(TARGET_OBJECT) * DAT_TARGET_NUM_MAX);
|
|
|
|
|
|
|
|
|
|
|
|
//20161116,初始化灰度残差图
|
|
|
|
//20161116,初始化灰度残差图
|
|
|
|
SINT16* pnTgBgDiff = (SINT16*)DAT_DIFF;
|
|
|
|
SINT32* pnTgBgDiff = (SINT32*)DAT_DIFF;
|
|
|
|
memset(pnTgBgDiff, 0, sizeof(SINT16) * DAT_CENTER_REGION_SIZE);
|
|
|
|
memset(pnTgBgDiff, 0, sizeof(SINT32) * DAT_CENTER_REGION_SIZE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -1387,7 +1387,7 @@ void DetectAreaObj::DAT_GradSegmentation(UINT16* pnImg, SIZE32S snImgSize,
|
|
|
|
void DetectAreaObj::DAT_CalcTgBgDiff(UINT16* pFrame, SIZE32S snImgSize,
|
|
|
|
void DetectAreaObj::DAT_CalcTgBgDiff(UINT16* pFrame, SIZE32S snImgSize,
|
|
|
|
SINT32* pnIntImg, SIZE32S snIntImgSize,
|
|
|
|
SINT32* pnIntImg, SIZE32S snIntImgSize,
|
|
|
|
SINT32 nRadius, SINT32 nRadiusTG,
|
|
|
|
SINT32 nRadius, SINT32 nRadiusTG,
|
|
|
|
SINT16* pnTgBgDiff)
|
|
|
|
SINT32* pnTgBgDiff)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SINT32 i, j;
|
|
|
|
SINT32 i, j;
|
|
|
|
SINT32 nBorder = 1; //不处理的边界大小
|
|
|
|
SINT32 nBorder = 1; //不处理的边界大小
|
|
|
|
@ -1585,7 +1585,7 @@ void DetectAreaObj::DAT_CalcTgBgDiff(UINT16* pFrame, SIZE32S snImgSize,
|
|
|
|
* 4)输入图像(i,j)点,对应于积分图像上的(i+1,j+1)点。
|
|
|
|
* 4)输入图像(i,j)点,对应于积分图像上的(i+1,j+1)点。
|
|
|
|
**********************************************************/
|
|
|
|
**********************************************************/
|
|
|
|
void DetectAreaObj::DAT_GraySegmentation(SIZE32S snImgSize, SINT32 nRadius, SINT32 nThresMin,
|
|
|
|
void DetectAreaObj::DAT_GraySegmentation(SIZE32S snImgSize, SINT32 nRadius, SINT32 nThresMin,
|
|
|
|
UBYTE8* pnBinary, SINT16* pnTgBgDiff, BBOOL changeDetParam)
|
|
|
|
UBYTE8* pnBinary, SINT32* pnTgBgDiff, BBOOL changeDetParam)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SINT32 i, j;
|
|
|
|
SINT32 i, j;
|
|
|
|
SINT32 nBorder = 1; //不处理的边界大小
|
|
|
|
SINT32 nBorder = 1; //不处理的边界大小
|
|
|
|
|