MATLAB图像分割 大津法 是什么,matlab | 二值图像分割

博客:http://blog.rare0716.cn图像分割:把图像空间分成一些有意义的区域,与图像中各种物体目标相对应。

图像分割技术分类运算方法并行边界技术

串行边界技术

并行区域技术

串行区域技术结构分割方法边缘分割法

阈值分割法

基于区域的分割

阈值分割法

基本原理

原始图像f(x,y)

灰度阈值T

阈值运算的二值图像g(x,y)

全局阈值是最简单的图像分割方法。原理:假定物体和背景分别处于不同灰度级,图像的灰度分布曲线近似用两个正态分布概率密度函数分别代表目标和背景的直方图,出现两个分离的峰值。

依据最小误差理论等准则求出两个峰间的波谷,其灰度值即分割的阈值。

最大类间方法差-大津法

设定一个阈值k,将图像分成两组。

变动k的取值使得两组的类间方差最大,此时该值K为所求分割阈值。

迭代法

选取初始图像灰度值T,把原始图像中全部像素分成前景、背景两大类。

分别对其进行积分并将结果取平均以获取一新的阈值,并按此阈值将图像分成前景、背景。

如此反复迭代下去,当阈值不再发生变化,即迭代已经收敛于某个稳定的阈值时,此刻的阈值即作为最终的结果并用于图像的分割。

具体算法

大津法

微信公众好屏蔽超链接点不开可以复制下面网址再打开

https://blog.csdn.net/qq_29462849/article/details/81022607

代码

大津法function [newImg,g] = otsu(img)

%OTSU 此处显示有关此函数的摘要

%   此处显示详细说明 返回newImg,g,newImg为二值化的图像,g为阈值

p=zeros(256,1);

w0=zeros(256,1);

w1=zeros(256,1);

u0=zeros(256,1);

u1=zeros(256,1);

u=zeros(256,1);

result=zeros(256,1);

imgSize=size(img);

M=imgSize(1);

N=imgSize(2);

if numel(imgSize)~=2

img=rgb2gray(img);

end

for t=1:256

grayScale=t-1;

x=find(img==grayScale);

p(t)=length(x)/(M*N);

end

for t=1:256

w0(t)=sum(p(1:t));

w1(t)=sum(p(t+1:256));

u0(t)=0;

for i=1:t

u0(t)=u0(t)+(i-1)*p(i)/w0(t);

end

u1(t)=0;

for i=t+1:256

u1(t)=u1(t)+(i-1)*p(i)/w1(t);

end

u(t)=w0(t)*u0(t)+w1(t)*u1(t);

result(t)=w0(t)*(u0(t)-u(t))^2+w1(t)*(u1(t)-u(t))^2;

end

[~,g]=max(result);

newImg=binaryImg(img,g);

%imshow(newImg);

end

迭代法function [newImg,g] = iter(img)

%ITERATION 此处显示有关此函数的摘要

%   此处显示详细说明

sz=size(img);

M=sz(1);

N=sz(2);

if numel(sz)~=2

img=rgb2gray(img);

end

%maxScale=max(max(img));

%minScale=min(min(img));

%g=uint8((maxScale+minScale)/2);

g=128;%直接取较为简单,但是可能增加迭代次数

while 1

foreCount=0;

foreSum=0;

backCount=0;

backSum=0;

for i=1:M

for j=1:N

if img(i,j)<=g

foreCount=foreCount+1;

foreSum=foreSum+double(img(i,j));

else

backCount=backCount+1;

backSum=backSum+double(img(i,j));

end

end

end

foreAver=foreSum/foreCount;

backAver=backSum/backCount;

newG=uint8(foreAver/2+backAver/2);

if newG==g

break

end

g=newG;

end

newImg=binaryImg(img,g);

%imshow(newImg);

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值