gusucode.com > 切片图matlab源码程序 > 要求/切片图/edge_detection1.m

    clc;
clear all;
close all;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%读图
for b=7:68  %提取原图的轮廓,根据轮廓画出三维图像
   I = imread([int2str(b),'.bmp']);
  
   %I1 = rgb2gray(I);
   BW1 = im2bw(I);
   %%%%%%%%%%%%%%%%%%%%%%%%白色区域面积
   [L1,num1] = bwlabel(BW1, 8);
   for i=1:num1
       Areas(i) = sum(L1(:)==i); % 面积
   end
   %%%%%%%%%%%%%%%%%%%%%%%%
   Parameter = max(Areas);
   F2 = bwareaopen(BW1,Parameter-1);% 删除小面积
   %figure,imshow(F2);title('删除小面积')
   
   %%%%%%%%%%%%%%%%%%%%%%%%
   F3=bwfill(F2,'holes');             %填充
   %figure,imshow(F3); title('填充')   %显示

    F4=edge(F3,'sobel');
    figure,imshow(F4); title('Edge')   %显示
    imwrite(F4,[num2str(b),'.jpg']); 
end

%根据轮廓画出血管的三维图像的matlab程序代码
for b=7:68   %提取原图的轮廓,根据轮廓画出血管的三维图像
   m1=imread([int2str(b),'.jpg']);
   m(:,:,b+1)=edge(m1,'sobel');
end
for k=7:68
   for i=1:400
      for j=1:89
         if (m(i,j,k+1)==1)
            % plot3(i,j,k+1,'r-.');
            plot3(i,j,k+1,'r.');
             hold on
         end
      end
   end
end
grid on
title('三维图')
rotate3d
hold off