当前位置:网站首页>【图像检测】基于高斯过程和Radon变换实现血管跟踪和直径估计附matlab代码
【图像检测】基于高斯过程和Radon变换实现血管跟踪和直径估计附matlab代码
2022-06-25 22:23:00 【Matlab科研工作室】
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代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
边栏推荐
- Some basic uses of mongodb
- SSL unresponsive in postman test
- Servlet response download file
- Function and principle of SPI solder paste inspection machine
- Installing redis on Linux
- Darkent2ncnn error
- Daily question brushing record (IV)
- About the solution to prompt modulenotfounderror: no module named'pymongo 'when running the scratch project
- 19c安装psu 19.12
- 【超能云终端创领先机】如何在48小时内交付一座方舱医院?
猜你喜欢
随机推荐
Circuit board edge removal - precautions for V-CUT splitting machine
Deploy Ogg on the same machine and test
JS to input the start time and end time, output the number of seasons, and print the corresponding month and year
Linux下搭建集群环境(2)-----------linux下安装Mysql
SMT操作员是做什么的?工作职责?
使用coe_load_sql_profile.sql固定执行计划
被新冠后遗症困住15个月后,斯坦福学霸被迫缺席毕业典礼,现仍需每天卧床16小时:我本该享受20岁的人生啊...
【OEM专场活动】清“芯”夏日,有奖征文
Xiaohongshu microservice framework and governance and other cloud native business architecture evolution cases
Frequently asked questions about redis
Installing redis on Linux
Multi-Instance Redo Apply
如何绕过SSL验证
Core ideas of SQL optimization
Research and development practice of Kwai real-time data warehouse support system
DNS review
no_expand和use_concat
【超能云终端创领先机】如何在48小时内交付一座方舱医院?
删库跑路、“投毒”、改协议,开源有哪几大红线千万不能踩?
Ora-01153: incompatible media recovery activated