• 大小: 186KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-16
  • 语言: 其他
  • 标签: Matlab  ostu  边界追踪  

资源简介

先大津法计算全局图像的阈值,再用阈值分割找出肺实质区域,再填补肺实质空洞,实现用边界追踪检测肺实质边界的目的

资源截图

代码片段和文件信息

I=imread(‘D:\MATLAB\R2012a\bin\bmpCT库\001.bmp‘);
I=rgb2gray(I);
subplot(221);imshow(I);
xlabel(‘a)原始图像‘);
%使用graythresh函数计算阈值
level=graythresh(I);
%大津法计算全局图像I的阈值
%BW=im2bw(Ilevel);
%subplot(222);imshow(BW);
%xlabel(‘b)graythresh函数计算阈值‘);
%disp(strcat(‘graythresh函数计算灰度阈值:‘num2str(uint8(level*255))));
%下面matlab程序实现简化计算阈值
IMAX=max(max(I));
IMIN=min(min(I));
T=double(IMIN:IMAX);
ISIZE=size(I);%图像大小
muxSize=ISIZE(1)*ISIZE(2);
for i=1:length(T)
    %从最小灰度值到最大值分别计算方差
    TK=T(1i);
    ifground=0;
    ibground=0;
    %定义前景和背景灰度总和
    FgroundS=0;
    BgroundS=0;
    for j=1:ISIZE(1)
        for k=1:ISIZE(2)
            tmp=I(jk);
            if(tmp>=TK)
                ifground=ifground+1;
                FgroundS=FgroundS+double(tmp);%前景灰度值
            else
                %背景像素点的计算
                ibground=ibground+1;
                BgroundS=BgroundS+double(tmp);
            end
        end
    end
    %计算前景和背景的比例、平均灰度值
    %这里存在一个0分母的情况,导致警告,但不影响结果
    w0=ifground/muxSize;
    w1=ibground/muxSize;
    u0=FgroundS/ifground;
    u1=BgroundS/ibground;
    T(2i)=w0*w1*(u0-u1)*(u0-u1);%计算方差
end
%遍历后寻找I第二行的最大值
oMax=max(T(2:));
%第二行方差的最大值,忽略NaN
idx=find(T(2:)>=oMax);
%方差最大值所对应的列号
T=uint8(T(1idx));
%从第一行取出灰度值作为赋值
disp(strcat(‘简化大津法计算灰度阈值:‘num2str(T)));
BW=im2bw(Idouble(T)/255);%阈值分割
subplot(223);imshow(BW);
xlabel(‘b)简化大津法计算阈值‘);
f=BW;
 F=imfill(f8‘holes‘);%填充肺实质空洞
 E=F-f;
 E=imfill(E8‘holes‘);%填充肺实质空洞

f=bwareaopen(E500);%去除面积小于T部分(气管),取值可变
[gt]=edge(f‘canny‘);
subplot(222);imshow(g);
xlabel(‘c)canny‘);
B=bwboundaries(g8‘holes‘);
F=imfill(g8‘holes‘);
subplot(236);imshow(F);

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件      786486  2017-07-11 16:05  otsu\001.bmp
     文件        1930  2017-09-12 10:26  otsu\Otsu.m
     目录           0  2017-09-12 10:26  otsu\

评论

共有 条评论