【图像检测】基于高斯过程和Radon变换实现血管跟踪和直径估计附matlab代码

该文提出了一种用于视网膜图像中血管追踪及直径估计的方法。通过假设血管的曲率和直径为高斯过程,结合局部Radon变换计算特征并训练模型。在检测分叉点时使用多个高斯过程,并量化它们预测方向的差异。实验在DRIVE、STARE、CHASEDB1和高分辨率眼底数据库上进行,平均敏感性达到75.67%,特异性97.46%,Matthew's相关系数72.18%,与现有最佳方法相当。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 简介

. Extraction of blood vessels in retinal images is an important step for computer-aided diagnosis of ophthalmic pathologies. We propose an approach for blood vessel tracking and diameter estimation. We hypothesize that the curvature and the diameter of blood vessels are Gaussian processes (GPs). Local Radon transform, which is robust against noise, is subsequently used to compute the features and train the GPs. By learning the kernelized covariance matrix from training data, vessel direction and its diameter are estimated. In order to detect bifurcations, multiple GPs are used and the difference between their corresponding predicted directions is quantified. The combination of Radon features and GP results in a good performance in the presence of noise.

The proposed method successfully deals with typically difficult cases such as bifurcations and central arterial reflex, and also tracks thin vessels with high accuracy. Experiments are conducted on the publicly available DRIVE, STARE, CHASEDB1, and high-resolution fundus databases evaluating sensitivity, specificity, and Matthew’s correlation coefficient (MCC). Experimental results on these datasets show that the proposed method reaches an average sensitivity of 75.67%, specificity of 97.46%, and MCC of 72.18% which is comparable to the

state-of-the-art.​

2 部分代码

function [output] = GP_input_dir(input_image, seed_point_position, vessel_radius,previous_direction)%     extract data from image for vessel tracking using radon transform        zoom = 4;    [a b] = size(input_image);    [X,Y] = meshgrid(1:b,1:a);    i=1;    [grid_xx,grid_yy] = meshgrid(seed_point_position(1)-vessel_radius(i):1/zoom:seed_point_position(1)+vessel_radius(i) , ...        seed_point_position(2)-vessel_radius(i):1/zoom:seed_point_position(2)+vessel_radius(i));    square_mask = uint8(interp2(X,Y,input_image,grid_xx,grid_yy,'cubic'));    square_mask = double(square_mask);    min_mask = min(square_mask(:))/255;    max_mask = max(square_mask(:))/255;    square_mask = double(imadjust(uint8(square_mask),[min_mask max_mask], [0 1]));    Mask_Size = size(square_mask);    Mask_center = (Mask_Size(1)+1)/2;    [yy,xx] = ndgrid( (1:Mask_Size(1)),(1:Mask_Size(2)));    circle_mask= double((xx-Mask_center).^2+(yy-Mask_center).^2 <= (zoom*vessel_radius(i))^2);    image_circle_mask = square_mask.*circle_mask;    sigma_2= -Mask_center^2/log(.15);    [x,y] = meshgrid(-Mask_center+1:1:Mask_center-1);    z= exp(-((x).^2)/sigma_2 - ((y).^2)/sigma_2);    circle_mask_gaussian= z.*image_circle_mask;    rotated_circle_mask = imrotate(circle_mask_gaussian,-previous_direction);    [a b]= size(rotated_circle_mask);    seed_point_center = (a+1)/2;    mask_radius = seed_point_center - 1;    [XX,YY] = meshgrid(-mask_radius:mask_radius);    integral_radius = [0: mask_radius/100:mask_radius];    theta_int = [89:-1:-89];    grid_x(theta_int+90,:) = cosd(theta_int)'*integral_radius;    grid_y(theta_int+90,:) = sind(theta_int)'*integral_radius;    ZI = interp2(XX,YY,rotated_circle_mask,grid_x,grid_y,'cubic');    integral_179 = sum(ZI');    integral_179 = integral_179 - min(integral_179);    integral_179_normal = integral_179/max(integral_179);    output((i-1)*179+1:i*179) = integral_179(179:-1:1)/max(integral_179);end

3 仿真结果

4 参考文献

[1]马歌. 基于Canny算子和Radon变换的证件图像倾斜校正[J]. 中国新技术新产品, 2014(15):2.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

matlab科研助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值