Matlab神经网络对指纹进行分类

时间:2014-02-25 20:16:48

标签: matlab neural-network classification fingerprint

我已经提取了指纹数据库的功能,然后应该应用神经网络按性别对图像进行分类。我还没有和NN合作,我知道了一点。

  • 应该使用哪种类型的NN?它是人工神经网络还是多层感知器?

  • 如果图片大小不一样,那有关系吗?

这个领域的一些代码示例可能有所帮助。

2 个答案:

答案 0 :(得分:1)

神经网络是函数逼近器。您可以将其视为分段线性拟合的高科技表亲。如果你想用一个参数来适应最复杂的现象 - 你将获得平均值,如果它不是无限有用的话,不应该感到惊讶。为了获得有用的拟合,您必须将所建模的现象的性质与NN结合起来。如果要对平面进行建模,那么您将需要多个系数(通常为3或4,具体取决于您的配方)。

这个问题背后的一个问题是“指纹的基础是什么”。根据我的意思,我指的是来自线性代数和微积分的重要包装词,它涉及向量空间,跨度和特征。一旦你知道“基础”是什么,那么你可以构建一个神经网络来近似基础,这个神经网络将给出合理的结果。

因此,当我在寻找基础上的论文时,我发现了这一点:

在这里,你可以找到指纹基础的好文件: http://math.arizona.edu/~anewell/publications/Fingerprint_Formation.pdf

采取非常粗暴的攻击,你可以尝试在一个narxnet(带有外部输入的非线性自动回归网络)link上增加一些变化。我会增长它,直到它使用某种倍增容量来表征你的设置。我将收敛率视为“大小”的函数,以便较小的网络告知较大的收敛需要多长时间。这意味着它可能需要一个非常大的网络来完成这项工作,但是大型网络就像787一样 - 它们花费很多,需要永远建立,有时候飞得不好。

如果我很聪明,我会关注Kucken的文章,并将输入表达为某种应力场的逆模型。

祝你好运。

答案 1 :(得分:0)

您可以在MATLAB中尝试使用SOM/LVQ网络进行分类,图像尺寸确实很重要,您应该在进行特征提取之前将图像标准化为标准尺寸。这将确保将每个特征向量分配给输入神经元。

function scan(img)
    files = dir('*.jpg');
    hist = [];
    for n = 1 : length(files)
       filename = files(n).name;
       file = imread(filename);

       hist = [hist, imhist(rgb2gray(imresize(file,[ 50 50])))]; %#ok
    end

    som = selforgmap([10 10]);
    som = train(som, hist);
    t   = som(hist); %extract class data

    net = lvqnet(10);
    net = train(net, hist, t);

    like(img, hist, files, net)
end