画一个圆圈在视神经乳头

9的观点(30天)
AJay
AJay 2018年8月4日
评论道: AJay2018年8月4日
你好,
我是一个新蜜蜂Matlab。在我的项目中,我应该画一个圆边境的视神经乳头发现视网膜图像。(实际上,我想检测视盘)。我做了一些工作和
我= imread (“I.png”);
%梯度滤波器应用
[Gmag Gdir] = imgradient(我“普瑞维特”);
图,imshow (Gmag[]),标题(“梯度大小”)
图,imshow (Gdir[]),标题(的梯度方向)
%二进制映像gerated阈值
bi = Gmag > 70;
Gx = (1 + 2 + 1;0 0 0;1 2 1];Gy = Gx ';
temp_x = conv2 (bi、Gx“相同”);
temp_y = conv2 (bi, Gy,“相同”);
b2 =√temp_x。^ 2 + temp_y。^ 2);
图中,imshow (b2);
%图像水平和垂直打开
se90 = strel (“行”,90);
se0 = strel (“行”3 0);
BWdil = imdilate (b2, [se90 se0]);
图中,imshow (BWdil);
%寄宿生被清除
BWnobo = imclearborder (BWdil 4);
图中,imshow (BWnobo);
%精制的边缘
SeD = strel (“钻石”1);
BWf = imerode (BWnobo, SeD);
BWfinal = imerode (BWf, SeD);
图中,imshow (BWf),
%完成im2bw德格检测
x = im2bw (BWf, 0.5);
图,imshow (x)、标题(“X形象”);
现在我有一个虚线在视盘周围。有人能帮我画一个合适的圆边境的视盘和中心的坐标点与圆的半径画吗?
图片附件I =原始灰度图像
< <
< <
> > x =最终输出的代码
> >
谢谢

接受的答案

图像分析
图像分析 2018年8月4日
我不会做一个边缘检测。这是一个典型的“新蜜蜂”的事情,很少工作。由于光学磁盘是一个明亮的blob左边图像的一部分,已知/假定为一个完美的圆,你可以充分利用这些知识和阈值图像找到光盘的地区(或至少大部分),然后配合团的“好”的右边一圈使用 代码与常见问题 。这是代码:
%的常规发现视神经盘在一个特定的图像。
clc;%清除命令窗口。
关闭所有;%关闭所有数据(除了imtool。)
清晰;%擦掉所有现有的变量。或者clearvars如果你想要的。
工作空间;%确定工作区面板显示。
格式长g;
格式紧凑的;
字形大小= 20;
% = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
%在灰度图像演示。
文件夹= pwd;%确定演示文件夹(适用于所有版本)。
baseFileName =“i.jpg”;
%得到完整的文件名,路径前缀。
fullFileName = fullfile(文件夹,baseFileName);
%检查文件是否存在。
如果~存在(fullFileName“文件”)
%的文件不存在,没有找到它在该文件夹。
%检查整个搜索路径(其他文件夹)去掉文件的文件夹。
fullFileNameOnSearchPath = baseFileName;%没有路径。
如果~存在(fullFileNameOnSearchPath“文件”)
%仍然没有找到它。提醒用户。
errorMessage = sprintf (的错误:% s在搜索路径的文件夹不存在。,fullFileName);
uiwait (warndlg (errorMessage));
返回;
结束
结束
rgbImage = imread (fullFileName);
%得到图像的尺寸。
% numberOfColorChannels应该为灰度图像,= 1和3的RGB彩色图像。
(行、列,numberOfColorChannels) =大小(rgbImage)
如果numberOfColorChannels > 1
%这不是灰度像我们预期的颜色。
%使用加权和的渠道来创建一个灰度图像。
% grayImage = rgb2gray (rgbImage);
%替代方法:把它转换成灰度只通过绿色通道,
%,在一个典型的快照将噪声信道。
grayImage = rgbImage (:: 2);%绿色通道。
其他的
grayImage = rgbImage;%已经灰度。
结束
%的灰度范围从0到255。
%显示图像。
次要情节(2 2 1);
imshow (grayImage []);
标题(原始图像的,“字形大小”字形大小,“翻译”,“没有”);
轴(“上”,“图像”);
惠普= impixelinfo ();
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%设置图属性:
%全屏放大图。
集(gcf,“单位”,“归一化”,“OuterPosition”,(0、0.04、1、0.96));
%去掉工具栏和下拉菜单的图。
%设置(gcf“工具栏”,“没有”,“菜单”,“没有一个”);
%的标题栏提供一个名称。
集(gcf,“名字”,“由ImageAnalyst演示”,“NumberTitle”,“关闭”)
drawnow;
%视盘是在左边,所以删除右边的图像。
clippedImage = grayImage;%初始化。
clippedImage(:, 1200:结束)= grayImage (1,1);%设置等于周围的模板。
%显示柱状图
次要情节(2,2,2);
(数、灰度)= histcounts (clippedImage (:));
数量(数量= = max(计数))= 0;%抑制尖峰
栏(灰度(1:end-1)计数);
网格;
标题(原始图像的直方图,“字形大小”字形大小,“翻译”,“没有”);
% Binarize图像
binaryImage = clippedImage > = 245;
%最大带团
binaryImage = bwareafilt (binaryImage, 1);
%将凸包
binaryImage = bwconvhull (binaryImage);
%显示图像。
次要情节(2、2、3);
imshow (binaryImage []);
标题(的二进制图像,“字形大小”字形大小,“翻译”,“没有”);
轴(“上”,“图像”);
惠普= impixelinfo ();
%众所周知/假定视盘的“好”是在右边,
%因此找到像素在右边。
%首先找到边界
边界= bwboundaries (binaryImage);
xBoundary边界= {1}(:,2);
yBoundary边界= {1}(:1);
%扫描发现右边缘
xRight = 0(1,列);
yRight = 0(1,列);
行= 1:行
x =找到(binaryImage(行:),1,“最后一次”);
如果~ isempty (x)
xRight = x(行);
yRight(行)=行;
结束
结束
%去掉行没有对象。
noObjectRows = xRight = = 0;
xRight (noObjectRows) = [];
yRight (noObjectRows) = [];
%配合xRight yRight一圈
[xCenter, yCenter R,] = circfit (xRight yRight);
%的阴谋在形象。
%显示图像。
次要情节(2、2、4);
imshow (grayImage []);
标题(原始图像与阀瓣绕的,“字形大小”字形大小,“翻译”,“没有”);
轴(“上”,“图像”);
惠普= impixelinfo ();
viscircles ([xCenter yCenter], R);
%圆拟合程序从FAQ。
函数(xc、yc R,] = circfit (x, y)
% CIRCFIT适合一个圆在x, y平面
%
% (XC、YC R] = CIRCFIT (X, Y)
%的结果是中心点(yc xc),半径r是一个可选的
%输出描述圆的方程:
%
% x ^ 2 + y ^ 2 + (1) * x + y (2) * + (3) = 0
%,布赫izhak 25 / 10月/ 1991
n =长度(x);xx x = x。*;yy = y。* y;xy y = x。*;
= [(x)和(y) n;和(xy)和(yy)和(y);和(xx)和(xy)和(x));
B =[总和(xx + yy);总和(xx。* y + yy。* y);总和(xx。* x + xy。* y)];
= \ B;
xc =闲置* (1);
yc =闲置* (2);
R =√(1) ^ 2 + (2) ^ 2) / 4 a (3));
结束
2的评论
AJay
AJay 2018年8月4日
非常感谢。这是一个很好的答案。我学到了很多代码形式。(不过,分为几个部分,我不能理解。我将很快赶上他们。)我有勇气在Matlab图像处理来提高我的技能。

登录置评。

更多的答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!