你好Matlab专家。我寻求帮助,我想做颈动脉分割和使用符合椭圆确定边缘但eliipse不会满足!请帮助

16个视图(30天)
%颈动脉细分和插值
%读一个图像
我= imread (“Image_1.tif”);
错误使用imread > get_full_filename
Image_1文件”。tif”并不存在。

错误imread(第372行)
fullname = get_full_filename(文件名);
%将图像转换为灰度图和直方图均衡化
grayimage =我(200:399 450:699);
nbins = 25;
grayimage = adapthisteq (grayimage,“clipLimit”,0.02,“分布”,“瑞利”);
%应用对比调整和中值滤波
L = imadjust (grayimage);%加强对比
M = medfilt2 (L, [3 3]);%应用中值滤波来减少噪音
%高斯滤波器应用于形象和传播的过滤
N = imgaussfilt (M, 2);
K = imdiffusefilt (N);
%检测边缘用精明的边缘检测
BW =边缘(K,“精明”,0.6);
[J, rectout] = imcrop (BW);
图中,显示亮度图像(J)
%使用imbinarize函数创建一个二进制的面具
阈值= graythresh (rectout);%计算阈值
掩码= imbinarize (K,阈值);
%确定颈动脉的中心
[Gmag, Gdir] = imgradient(面具);
[maxGmag,印第安纳州]= max (Gmag (:));
[center_y, center_x] = ind2sub(大小(Gmag),印第安纳州);
%确定颈动脉的半径
edge_points = bwboundaries(面具);
图中,显示亮度图像(BW)
%确定点的椭圆
(x, y) =找到(J);
ellipse_t = fit_ellipse (x, y);
X0 = ellipse_t.X0;
Y0 = ellipse_t.Y0;
一个= ellipse_t.a;
b = ellipse_t.b;
R = ellipse_t.R;
theta_r = linspace(0, 2 *π);
ellipse_x_r = X0 +一个* cos (theta_r);
ellipse_y_r = Y0 + b * sin (theta_r);
rotated_ellipse = R * [ellipse_x_r; ellipse_y_r];
%将椭圆叠加到原始图像
图中,
imshow (J);
持有;
情节(rotated_ellipse (1:), rotated_ellipse (2:)“r”);
保存([file_name“.mat”])
i = 1: 50
图(1)
持有
plot3(我*的(1、大小(rotated_ellipse 2)), rotated_ellipse (1:), rotated_ellipse (2:)“。”)
结束

答案(0)

下载188bet金宝搏


释放

R2022b

社区寻宝

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

开始狩猎!