matlab - 如何使用多项式曲线拟合和圆形拟合算法分割乳房以分割/分离左右乳房?
问题描述
我正在研究在 MATLAB 中用于早期检测乳腺癌的乳房热图。但我无法分割和分离每个乳房。我尝试了第二个多项式曲线拟合算法,但没有奏效。无论乳房大小,下外侧象限都应完全包括在内,因为该算法应针对不同的乳房和乳房大小。我的目的和愿望是自动分离左乳房和右乳房以进行双边不对称分析。
你可以在下面看到我想要的。
乳房热像图//原始图片。
检测 4 条曲线// 检测到 4 条乳房曲线
曲线拟合、圆形拟合和左右分开的乳房//子图(b)和(c)显示了我的愿望。
检测乳房4条曲线、圆形拟合和乳房区域的条件:
- 由于乳房边界呈抛物线形状,因此使用二阶多项式拟合算法来检测底部乳房边界。首先将抛物线曲线拟合到每个对象,然后将两条曲线与下乳房边界的最大确定系数候选拟合。如果两条曲线的最低峰的 x 坐标之差小于 20,并且它们的 y 坐标之差大于 250,则选择它们作为下乳房边界(X-X ' < 20 和 Y-Y ' > 250)。否则,算法搜索其他曲线。
- 下一步是确定乳房的顶部。Qi等人[19,21]的研究中,利用左右身体边缘曲率最高的区域来估计腋窝的位置。通常,较差的边缘检测表明身体边缘其他地方的主要凹点,并且发现图像中的最大凹点低于或高于预期。此外,选择拟合的抛物线作为下乳房边界,在很多情况下,由于下乳房边缘较差,可能会导致裁剪乳房区域并导致信息丢失。
- 这项工作建议为每个下边缘对象拟合一个圆圈,以在图像中的乳房区域中划定乳房。圆拟合算法取自 Kasa 方法 [22]。对双方重复相同的程序。
- 在检测到乳房区域后,创建一条中间分隔线以沿着两条乳房曲线的接触点在左右两段之间进行分隔。
你能帮我解决我的问题吗?我期待着收到您的来信。提前致谢。
clc; clear; close all;
a=rgb2gray(imread('DINAMIC-FRONTAL.jpg'));
en= imsharpen(a,'Radius',2,'Amount',1);
B = imgaussfilt(en,1.4);
ed=edge(B,'canny',0.3,0.5);
figure();imshow(ed);title('canny edge');
bw1=bwareaopen(ed,10);
se = strel('disk',4);
bw=imdilate(bw1,se);
figure();imshow(bw);
[y x] = find( bw );
right = find(min(a));
as=findpeaks(y);
xr = x(right);
yr = y(right);
xl = x(as);
yl = y(as);
pr = polyfit( yr, xr, 2); %// fit 2rd deg poly
pl = polyfit( yl, xl, 2 );
yy = linspace( 1, size(bw,1), 50 );
figure; imshow(a, 'border', 'tight' );
hold all
plot( polyval( pr, yy ), yy, '.-', 'LineWidth', 1 );
plot( polyval( pl, yy ), yy, '.-', 'LineWidth', 1 );
解决方案
推荐阅读
- agda - 如何在前提下进行重写?
- ios - Xcodebuild - 跳过完成请求崩溃报告。继续测试
- python - Django 为 FloatRangeField 指定小数位
- java - 无法将产品插入 ms access db
- postgresql - 's(c)' 在以下查询中代表什么?
- sql-server - FOR SYSTEM_TIME ALL 与 ORDER BY
- ruby - 如何使用 ruby 查找数组中的对列表?
- javascript - 如何将日期转换为日期下拉和下拉可以是单独的日、月、年
- python - 按 DataFrame 的主要列级别分组,然后在每个子级别上应用一个函数
- javascript - 从jquery滚动功能中排除具有特定父级的“a”标签