大津法——边缘检测

本文介绍了一种基于灰度图像的边缘检测方法,并利用大津法(Otsu's method)确定最佳阈值实现图像二值化。该方法首先通过高斯滤波器平滑输入图像,然后应用卷积算子提取边缘特征,最后使用大津法选择最优阈值进行边缘突出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


做个记录

边缘检测:

function  E = DetectEdge(I)
%by:LiFeiteng 
%Version1.0  灰度图像  2013/5/06
%Version1.1  彩色图像  2013/5/13
if size(I,3)==3
    I = rgb2gray(I);
end
mask = fspecial('gaussian',[3 3],3);
I = imfilter(I,mask);
I = double(I);
fx = conv2(I,[-1 1], 'same');
fy = conv2(I,[-1;1], 'same');
grad = sqrt(fx.^2+fy.^2);
% grad = ordfilt2(grad,1,ones(3,3));
t = myOtsu(grad);
E = grad > t;
%E = grad;
end

大津法:

function T = myOtsu(E)
% 大津法
E = uint8(E);
E = E(:);
MN = size(E,1);
t = 0;
g = [];
for i=1:256
    n0 = E <= t;
    n1 = E > t;
    N0 = sum(n0);
    N1 = sum(n1);
    w0 = N0/MN;
    w1 = N1/MN;
    mu0 = sum(E(n0))/N0; mu1 = sum(E(n1))/N1;
    mu = w0*mu0 + w1*mu1;
    g(1,i) = w0*(mu0-mu)^2 + w1*(mu1-mu)^2;
    t = t+1;
end
[~, index] = max(g);
T = mean(index-1);

测试用例:

img = imread('lena.tif');
img = imnoise(img,'gaussian');
figure,imshow(img)
E = DetectEdge(img);
figure,imshow(E,[])




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值