我正在处理从 cmos 相机拍摄的指纹图像。图像帧的中心有一个灰色的不透明圆圈,边缘有深灰色的边界。一旦我扫描传感器上的指纹,脊的对比度几乎与背景图像相等(变化非常小)。我正在尝试获得山脊和山谷的清晰边界,以便我可以计算细节(我正在研究指纹识别的细节方法)。
最初,我希望检测手指的存在。我正在尝试为此使用方差方法。但是,由于前景和背景图像的对比度差异非常低,我在计算方差时的差异很小。计算方差的代码如下:
**
int get_variance(unsigned char *input, int size)
{
int i,mean = get_mean(input,size);
int temp = 0;
for(i = 0; i < size; i++)
{
temp += (input[i]-mean) * (input[i]-mean);
}
return (temp/size);
}
int get_mean(unsigned char *input, int size)
{
int i;
int sum = 0;
for( i = 0; i < size; i++)
{
sum += input[i];
}
return (sum/size);
}
** 图像分辨率为 320x240。
背景的方差在 1200 左右,指纹背景的方差在 950 左右。这是我在两张图像上得到的最大方差。甚至有时,仅在低光照条件下的背景就有 950。
我可以做些什么来改进手指检测过程?如果我将图像转换为频域会有帮助吗?或者我可以使用指纹分割来检测指纹的存在吗?