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

📄 vf_divide.h

📁 指纹模式识别算法接口
💻 H
字号:
#ifndef	__VFDIVIDE_H__
#define __VFDIVIDE_H__

#include "VF_Type.h"
#include "VF_Global.h"
#include "VF_Smooth.h"

//
// divide: 根据方向场幅值来分割指纹图像前景背景
//
sint32 divide(sint32  r, sint32 threshold)
{
///////////////////////////////////////////////////////////////////////
//	r: [in] 对幅值图像高度平滑滤波的滤波器半径
//  threshold: [in] 分割的阈值
///////////////////////////////////////////////////////////////////////
	sint32	x, y;
	sint32  num = 0;

	// 对方向场幅值图像进行高度平滑滤波
	smooth(g_lpDivide, g_lpTemp, r, 2);
	
	// 图像边缘均设置为背景
	for(y = 0; y < IMGH; y++)
	{
		*(g_lpDivide + y*IMGW) = 255;
		*(g_lpDivide + y*IMGW + IMGW - 1) = 255;
	}
	for(x = 0; x < IMGW; x++)
	{
		*(g_lpDivide + x) = 255;
		*(g_lpDivide + (IMGH-1)*IMGW + x) = 255;
	}

	for(y = 1; y < IMGH-1; y++)
	{
		for(x = 1; x < IMGW-1; x++)
		{
			// 根据幅值与阈值大小判断是否为背景区域
			if(*(g_lpTemp + y*IMGW + x) < threshold)
			{
				*(g_lpDivide + y*IMGW + x) = 255;
			}
			else
			{
				*(g_lpDivide + y*IMGW + x) = 0;
				num++;
			}
		}
	}

	// 如果前景区域面积小于总面积的十分之一,则表示前景区域太小,返回错误
	if(num < IMGSIZE/10)
		return 1;
	else
		return 0;

}

//
//	clearEdge: 清除背景
//
void clearEdge()
{
	sint32	x, y;
	sint32  temp;
	temp = 0;

	for(y = 0; y < IMGH; y++)
	{
		for(x = 0; x < IMGW; x++)
		{	
			// 如果是背景区域,则置该点为白点
			if(*(g_lpDivide + temp + x) == 255)
			{
				*(g_lpOrgFinger + temp + x) = 255;
				*(g_lpOrient + temp + x) = 255;
			}
		}
		temp += IMGW;
	}
}


#endif

⌨️ 快捷键说明

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