我如何在matlab中实现这个算法

时间:2012-05-10 19:34:28

标签: matlab image-processing image-segmentation iris-recognition

我正在研究虹膜识别系统。我想通过使用bwconncomp分析图像中的连通分量来找到瞳孔。

瞳孔检测算法如下:

  1. 通过扫描图像来连接组件标签。它根据像素连接将像素分组为组件。连接组件中的所有像素共享相似的像素强度值,并且以某种方式彼此连接。
  2. 一旦确定了所有像素组,就会标记该组中的每个像素。确定所有组的中心和直径,并且具有最大直径的那个是瞳孔。
  3. 位于虹膜上方和下方的图像部分被睫毛和眼睑遮挡。这些像素位于瞳孔直径的上方和下方。要删除它们,请将这些像素设置为NaN(非数字)。
  4. 发现最小/最大光圈半径为90/125。基于此,瞳孔左右45个像素被认为是拟议算法分析的虹膜区域。
  5. 我的问题是:如何将虹膜上方和下方的空间设置为NaN。我如何获得与虹膜相对应的像素?

    我的代码如下:

    %% Read the file and dilate it
    I = imread('eye.jpg');  %See the comments for the image.
    erodedBW = rgb2gray(I);
    se2 = strel('disk',35); 
    dilatedBW= imdilate(erodedBW ,se2);
    imshow(dilatedBW);
    
    
    %%pupil Detection
    cc2=bwconncomp(dilatedBW);
    labeled = labelmatrix(cc2);
    L = bwlabel(dilatedBW);
    [L, num] = bwlabel(dilatedBW);
    
    %% Find the largest value of L
    count=num;
    largvalue=0;  
    for i=0:count,
        L = bwlabel(dilatedBW);
        if  largvalue<=L
            largvalue=L; 
        end    
    end
    

0 个答案:

没有答案