matlab的代码仅供参考,实现过程基本按照python版本的眼睛血管分割来实现。其中,python版本眼睛血管分割详见:眼睛血管分割python版

clc;
clear all;
close all;
image=imread('D:\test_DRIVE\06_test.tif');    %导入图片
%% 1.选取绿色通道
imager = image(:,:,1);%红
imageg = image(:,:,2);%绿
imageb = image(:,:,3);%蓝figure;
subplot(131);imshow(imager);title('红色通道');
subplot(132);imshow(imageg);title('绿色通道');
subplot(133);imshow(imageb);title('蓝色通道');%% 2.自适应直方图均衡
figure;
subplot(121);
H1=adapthisteq(imageg);
imshow(H1); title('adapthisteq均衡后图');
subplot(122);
imhist(H1);title('adapthisteq均衡后直方图');  %% 3.匹配滤波
sigma=2;       %改变血管粗细。             ---->这是影响最终效果的第1个因素。
yLength=14;      %L越大,平滑效果越明显    ---->这是影响最终效果的第2个因素。
direction_number=21;
MF = MatchFilter(H1, sigma, yLength,direction_number); %光均衡化的结果-->匹配滤波
mask=[0 0 0 0 0;  0 1 1 1 0;0 1 1 1 0;0 1 1 1 0;0 0 0 0 0;];
MF(mask==0) = 0;
MF = normalize(double(MF));
features = MF;      %匹配滤波的效果图
figure;
subplot(221);
imshow(features*3);
title('匹配滤波');% 通过函数imadjust()调整灰度图像灰度范围
im_adjust=imadjust(features,[0.15 0.5],[0 1]);  %调整灰度范围---->这是影响最终效果的第3个因素。
subplot(222);imshow((im_adjust));
title('imadjust()调整灰度图像灰度');%二值化
threshold2 = graythresh(im_adjust)
binary_data1 = im2bw(im_adjust,threshold2);%对图像进行二值化
subplot(223);
imshow(binary_data1);
title('二值图');%% 4.去轮廓操作:最好的操作匹配滤波后加上gabor滤波,那样才是最完美的,可惜实现不了。
img = imread('C:\05_test.tif');
img = rgb2gray(img);
[m n] = size(img);
img_hist = zeros(1,256);
for i = 1:mfor j = 1:nimg_hist(img(i, j)+1) = img_hist(img(i, j)+1) + 1;end
end
img_hist_pro = img_hist/m/n;         %灰度级概率密度分布
sigma2_max = 0;threshold = 0;
for t = 0:255w0 = 0;w1 = 0; u0 = 0; u1 = 0; u = 0;for q = 0:255if q <= tw0 = w0 + img_hist_pro(q+1);u0 = u0 + (q)*img_hist_pro(q+1);elsew1 = w1 + img_hist_pro(q+1);u1 = u1 + (q)*img_hist_pro(q+1);endendu = u0 + u1;u0 = u0 / (w0+eps);u1 = u1 / (w1+eps);sigma2 = w0 * (u0 - u)^2 + w1 * (u1 - u)^2;     %求取类间最小if (sigma2 > sigma2_max)sigma2_max = sigma2;threshold = t;end
end
img_out = img;
for i = 1:m                                         %阈值化for j = 1:nif img(i, j) >= threshold;img_out(i, j) = 255;else img_out(i, j) = 0;endend
endfigure;
subplot(221);
imshow(img_out);
title('获得掩膜');new_img = imsubtract(features,double(img_out));
subplot(222);
imshow(new_img);
title('轮廓灰度图');threshold = graythresh(new_img)
SE=strel('disk',6);      %用于膨胀,这个不要随便改,因为要消除test图片的轮廓智能值么大了,否则消除不干净。
new_img=imdilate(new_img,SE); %中值滤波之后,膨胀
subplot(223);
binary_data2 = im2bw(new_img,threshold);%对图像进行二值化,手动调参
imshow(binary_data2);
title('轮廓二值图');binary_data = binary_data1-binary_data2;%
subplot(224);
imshow(binary_data);
title('最终的二值图');%% 5.图像处理:去噪声点;断点连续;腐蚀膨胀等
result = medfilt2(binary_data,[2 2]);
figure;
subplot(121);
imshow(result);
title('中值滤波');% SE=strel('disk',1);      %用于膨胀
% img_out=imdilate(result,SE); %中值滤波之后,膨胀
% subplot(122);imshow(img_out);title('膨胀');

matlab相关.m文件已经放到百度云盘:链接:https://pan.baidu.com/s/15GzobsF0uwBN-6ieILjWcQ
提取码:prt5

眼睛血管测试图片:
链接:https://pan.baidu.com/s/1y02leAk8d87A7H7sDmHP2g
提取码:b9hc

眼睛血管分割matlab版本相关推荐

  1. 眼底血管分割(python版本)

    一.项目背景 研究表明,各类眼科疾病以及心脑血管疾病会对视网膜血管造成形变.出血等不同程度的影响.随着生活水平的提高,这类疾病的发病率呈现逐年增长的趋势.临床上,医疗人员能够从检眼镜采集的彩色眼底图像 ...

  2. 【图像分割】基于计算机视觉实现视网膜图像中的血管分割附matlab代码

    1 简介 视网膜图像里的血管是可以被观察到的一类微血管,并且它是无创伤的,而其分布位置也属于深度部位[5].其分布.结构和形态特征的变化能在一定程度上反映病变的程度.而白血病.糖尿病以及高血压等疾病都 ...

  3. 基于matlab的眼底视网膜静脉血管分割仿真

    目录 1.算法概述 2.仿真效果 3.MATLAB源码 1.算法概述 随着图像数字化处理的快速发展,医学图像处理越来越受到人们的广泛关注.研究表明,人体许多全身性疾病都与眼底血管的异常有着密切的联系, ...

  4. 基于MATLAB的眼底视网膜静脉血管分割实现

    基于MATLAB的眼底视网膜静脉血管分割实现 眼底的视网膜图像对于眼科医生来说是非常重要的.其中,视网膜上血流情况可以为医生提供丰富的信息,如视网膜动脉硬化等.因此,对于眼底图像的分割和特征提取,对于 ...

  5. matlab迭代分水岭分割,matlab分水岭分割算法

    single [-1, 1] double 17-17 17-17 Normalized Difference Vegetation Index NDVI with Threshold Applied ...

  6. 基于PaddleSeg实现眼底血管分割——助力医疗人员更高效检测视网膜疾病

    点击左上方蓝字关注我们 [飞桨开发者说]郑博培,北京联合大学机器人学院2018级自动化专业本科生,飞桨开发者技术专家PPDE,深圳市柴火创客空间认证会员,百度大脑智能对话训练师 项目背景 研究表明,各 ...

  7. 肺部ct重建_肺部CT血管分割及三维重建

    摘要: 现代社会人们的生活水平不断改善,由于膳食不合理以及锻炼的缺乏,我国血管类疾病发生率不断攀高,传统的逐张读片的诊断方式效率低下且依赖于医生个人的知识储备,本文以肺部CT序列为着重点,对其中的血管 ...

  8. matlab版本之间的单双引号问题

    matlab版本之间的单双引号问题 问题描述 运行matlab文件的时候出现错误提示 Creating a string using double quotes is not supported. U ...

  9. Windows下Faster R-CNN 配置/Matlab版本编译

    配置环境: Windows10x64 Matlab2015Ra VS2013 Opencv2.4.11 CUDA7.5 GTX950M CUDA7.5安装 因为Cuda7.5做了很大的优化改进,而且对 ...

最新文章

  1. php读取txt并写入数据库,php读取txt文件组成SQL并插入数据库的方法
  2. java 基于tcp客户端服务端发送接收数据
  3. java 判断类型_如何快速入门Java编程学习(干货)
  4. PAT A1023 sort cmp字典序比较
  5. 第七次的服务端课程:hibernate,jpa,springdata
  6. iOS开发之Accounts框架详解
  7. 从Mysql中读取数据绑定Grid,然后在全部绑定sql
  8. 【每日算法Day 87】今天我脱单了,所以大家不用做题了!
  9. grasshopper for rhino 6下载_漫谈算法设计与脚本语言(grasshopper, python)
  10. vbs教程《变量使用》
  11. AMAZEUI之iscroll 下滑刷新/上拉加载更多实例
  12. 【YOLOv5实战2】基于YOLOv5的交通标志识别系统-自定义数据集
  13. 回归常态啦 2020.12.08日记
  14. 如何通过命令将可执行程序转入deamon(之start-stop-daemon )
  15. 小米打印机显示服务器出错,更换小米路由器后打印机无法工作解决办法
  16. python 读取csv文件转成字符串,python实现csv格式文件转为asc格式文件的方法
  17. 【上位机与下位机通信】使用WIFI模块ESP8266连接单片机与上位机通信
  18. python常用基础库:标准库和第三方库
  19. 百度CEO李彦宏:外界对金融风暴过于恐惧
  20. asp.net毕业设计家电维修保养信息系统

热门文章

  1. 服务器装win10稳定吗,win10哪个版本最稳定好用 目前win10最稳定的版本推荐
  2. REPL module
  3. multi_match 查询【muti_match和match区别】
  4. 启动IDEA都会打开Licenses激活弹窗
  5. 基于Transformer的NLP智能对话机器人实战课程(第十六章、第十七章、第十八章)
  6. 数字化到底有什么用?
  7. 《呼吸法门精要》南师所讲。读后感
  8. 《好好说话》 学习笔记
  9. ERROR: Could not build wheels for cryptography which use PEP 517 and cannot be installed directly
  10. Android常见公有方法(隐藏虚拟按键/隐藏软键盘/获取屏幕宽高等)