当前位置:   article > 正文

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

血管宽度计算 python

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代码问题可私信交流。

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/822941
推荐阅读
相关标签
  

闽ICP备14008679号