2001年全国大学生数学建模竞赛题目A题(附MATLAB代码)

2001数模A题 血管的三维重建

题目背景及要求

背景:断面可用于了解生物组织、器官等的形态。例如,将样本染色后切成厚约1um的切片,在显微镜下观察该横断面的组织形态结构。如果用切片机连续不断地将样本切成数十、成百的平行切片, 可依次逐片观察。根据拍照并采样得到的平行切片数字图象,运用计算机可重建组织、器官等准确的三维形态。

要求:
在这里插入图片描述

源文件以及数据获取方式

.登录全国大学生数学建模官网:http://mcm.edu.cn
链接: http://mcm.edu.cn

代码

核心思想
%1.图像内的点到图像边界最小距离作为半径
% 2.在备选半径中找最大半径
找到每一张图像的最大内切圆

function [C,r]=xueguan2001(n)
clc
close all
I=imread(['.\A01bmp\',num2str(n),'.bmp']);
%[m,n]=size(I);
%imshow(I)
%黑色为0,白色为1
J=edge(I);
[NX,NY]=find(I==0);
[EX,EY]=find(J==1);
r=zeros(1,length(NX));
for i=1:length(NX)
    d=(NX(i)-EX).^2+(NY(i)-EY).^2;
    r(i)=min(d);
end
k=find(r==max(r));
k=k(1);
C=[NX(k) NY(k)];
r=sqrt(r(k));
%外切正方形
for x=ceil(C(1)-r:C(1)+r)
    for y=ceil(C(2)-r:C(2)+r )
        if (x-C(1))^2+(y-C(2))^2<=r^2
            I(x,y)=1;
        end
    end
end
%imshow(I);
imwrite(I,['.\Results\',num2str(n),'.png'])

2.绘图

function draw
clc
close all
N=100;
C=zeros(N,2);
R=zeros(N,1);
tic
for n=0:N-1
    [C(n+1,:),R(n+1)]=xueguan2001(n);
end
toc
save cicle C R;
figure
X=C(:,1);
Y=C(:,2);
Z=(0:99)';
%Z为自变量,X为因变量,3次多项式拟合
px=polyfit(Z,X,3);
py=polyfit(Z,Y,3);
X=polyval(px,Z);%将Z代入多项式
Y=polyval(py,Z);
figure(1)
subplot(2,2,1)
plot3(X,Y,Z);
title("3D");
grid on
subplot(2,2,2)
plot(X,Y)
title("XOY");
subplot(2,2,3)
plot(Y,Z)
title("YOZ");
subplot(2,2,4)
plot(X,Z)
title("XOZ");
figure(2)
for i=1:N
    ellipsoid(X(i),Y(i),Z(i),R(i),R(i),R(i));
    hold on
end
 axis equal
 shading interp
 colormap("parula")

效果图

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值