大津阈值法MATLAB实现(自编)

匿名 (未验证) 提交于 2019-12-03 00:22:01

关于大津阈值法的定义这里不再赘述,直接给出实现代码:

%image_graythresh.m

function level =image_graythresh(I)

%该函数作用:使用大津阈值法找出图像分割的阈值

[M,N] = size(I);

%预定义划分的两组,分别为C1、C2。预定义level,用于存放不同划分时的类间方差

C1 = zeros(1,M*N);

C2 = zeros(1,M*N);

level =zeros(1,M*N);

%求出原图像灰度最大、最小值

max_value =max(max(I));

%定义C1、C2、level的下标,同时起统计个数的作用

columns1 = 1;

columns2 = 1;

columns3 = 1;

%开始遍历

for k =min_value:max_value - 1

%由于预定义个数大于实际个数,因而求均值时不记录多余的零

end

%得到最大类间方差下标从而得到阈值

[~, i] =max(level);

level = min_value +i - 1;

%对阈值做归一化处理

level = level/255;

end

%DIP_exp4_1.m

%该m文件调用Matlab自带函数graythresh以及自编函数image_graythresh对图像进行阈值分割

clc;clear;closeall;

I =imread('cameraman.tif');

subplot(221),imshow(I);title('原图像');

subplot(222),imshow(J);title('大津法阈值分割后图像');

subplot(223),imshow(I);title('原图像');

subplot(224),imshow(K);title('自编大津法阈值分割后图像');

运行DIP_exp4_1.m文件得结果如下:



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!