【问题标题】:Sclera blood vessel enhancement and adaptive thresholding巩膜血管增强和自适应阈值
【发布时间】:2016-05-16 19:11:49
【问题描述】:

在对 UBIRIS 眼睛数据库中的 600x800 图像的彩色图像进行巩膜识别后,我正在尝试增强巩膜血管。我的问题是,在我尝试按照关于这个确切问题的这篇论文进行操作后,我的结果与论文中的结果不匹配,增强和阈值处理没有给出必要的结果,所以我无法继续开发我的巩膜匹配算法。

这是我尝试使用的参考论文:https://scholarworks.iupui.edu/bitstream/handle/1805/2096/Thesis_OneDoc_Thomas_FinalETD.pdf

您将在 PDF 的第 61 和 62 页上找到不适合我的部分。

这是我开始的输入图像:

这是返回巩膜区域的分段图像:

最后,这是血管增强和自适应阈值处理后的图像。血管增强已经没有论文中的那么好,但是自适应阈值是完全错误的。

最后,这是我尝试根据之前链接的论文编写的 MATLAB 代码:

    I = rgb2gray(segmentedImage);
gaborArray = gabor([3,4,5],[0,90,180,270]); %maybe 0,90,180,270 or 0,45,90,135
[gaborMag, gaborPhase] = imgaborfilt(I,gaborArray);
f = zeros(size(I,1),size(I,2));
for i = 1:size(I,1)
    for j = 1:size(I,2)
        for k = 1:12
            f(i,j) = f(i,j) + gaborMag(i,j,k).^2;
        end
        f(i,j) = sqrt(f(i,j));
    end
end

maxh = max(f(:));

for i = 1:size(I,1)
    for j = 1:size(I,2)
        f(i,j) = f(i,j)/maxh;
    end
end

TH = 0.33;
[x,y] = find(f~=0);
hist = [x,y];
histH = histogram(hist,255,'Normalization','probability');
dataH = histH.Values;

thresholdsH = zeros(1,255);

%calculate sum minus constant for each case of T with absolute value and save into array
for i = 1:255
    currentH = 0;
    for j = 1:i
        currentH = currentH + dataH(j);
    end
    currentH = currentH - TH;
    currentH = abs(currentH);
    thresholdsH(i) = currentH;
end

[MH, thH] = min(thresholdsH);
thH = thH / 255;

B = zeros(size(I,1),size(I,2));

for i = 1:size(I,1)
    for j = 1:size(I,2)
        if(f(i,j) > thH)
            B(i,j) = 1;
        else
            B(i,j) = 0;
        end
    end
end

filteredImage = B;

谁能帮我找出这段代码的问题?首先,我不确定我是否为论文中提到的 4 个偶数方向为 Gabor 滤波器组提供了正确的参数。之后通过 f 的最大值进行归一化,因为否则在血管增强后我已经得到一个全白区域。您认为此代码的问题出在哪里?据我了解这篇论文,我完全按照那里提到的那样做。

【问题讨论】:

    标签: matlab image-processing


    【解决方案1】:

    我有一个建议,你可以使用非常擅长这项工作的 firangi 过滤器 这是获取代码的链接

    http://www.mathworks.com/matlabcentral/fileexchange/24409-hessian-based-frangi-vesselness-filter/content/FrangiFilter2D.m

    我已经在其他图像上尝试过,这是结果

    在此之后,您必须进行形态学操作以删除外部区域。为此,我建议在matlab 中使用regionprops

    希望对你有帮助!!

    【讨论】:

    • 我用Frangi过滤器试过了,但结果是只出现了外部区域,巩膜区域内没有发现血管。您是否为过滤器设置了任何选项,或者只是将其与输入图像的单个参数一起使用?
    • 正如它所提到的,在使用 firangi 过滤器时,您必须根据您的问题更改参数。请更改选项,我相信它会起作用
    猜你喜欢
    • 2013-01-23
    • 1970-01-01
    • 2014-04-03
    • 1970-01-01
    • 1970-01-01
    • 2012-01-09
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多