otsu电子签名图像分割及matlab代码
大津法,又叫最大类间方差法、最大类间阈值法(OTSU)。它的基本思想是,用个阈值将一堆数据中的数据分为两类,一类叫前景数据,一类叫背景数据,其本质思想:最好的阈值应使得前景数据与背景数据的类间方差最大,通过遍历的方式,计算每一个可能的阈值对应的类间方差,然后挑选对应类间方差最大的阈值作为最终阈值,otsu在图像分割、各种下限确定、图像分类(例如遥感中计算出NDWI、NDVI之后,设定阈值确定哪些是水体、植被)中有着广泛的应用。原理简单粗暴,可参考:https://blog.csdn.net/weixin_44227356/article/details/116031602?fromshare=blogdetail&sharetype=blogdetail&sharerId=116031602&sharerefer=PC&sharesource=weixin_44444197&sharefrom=from_link
下面以一个电子签名做图像分割,用matlab语句来实现。
电子签名:
matlab代码:
在这里插入代码片
A = imread(‘D:\标书学习\电子签名\杨庚签字.jpg’);%读取图像
a = A(:,:,1);%灰度图像
mx = max(max(a));%灰度最大值
mn = min(min(a));%灰度最小值
%灰度总值
S = sum(sum(a));
[m n] = size(a);
N = mn;%总像元个数
%分割阈值范围:[min+1,max-1],保证不全为背景及前景,总共max-min-1=234个可选值
d = zeros(2,mx-mn-1);%统计矩阵,第一行为阈值,第二行为该阈值条件下类方差
for k = 1:mx-mn-1
d(1,k) = 20+k;
end
%确定前景背景,这张图前景是字,其它是背景,也就意味着暗的前景,亮的背景
for i=1:mx-mn-1
b = find(a <= d(i));%前景在矩阵a中的索引
k = length(b);%前景像元个数
q = N - k;%背景像元个数
for kk = 1:k
B(kk) = a(b(kk));
end
%前景像元频率W1
W1 = k/N;
%前景像元灰度均值U1
U1 = sum(B)/k;
%背景像元频率W2
W2 = 1-W1;
%背景像元灰度均值
U2 = (S-sum(B))/q;
d(2,i) = W1W2*((U1-U2)^2);
end
[zuidazhi weizhi] = max(d(2,:));
yuzhi = d(1,weizhi);
%根据阈值进行图像分割
for i =1:N
if a(i) <= yuzhi
a(i) = 255;
else
a(i) = 0;
end
end
imwrite(a,‘D:\标书学习\电子签名\otsu分割.jpg’);
imshow(a);
最终结果

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)