matlab图像处理阈值分割
我做毕设时遇到了一个问题,用matlab对一个RGB图像设置亮度和饱和度阈值,亮度阈值是(I=(Ir+Ig+Ib)/3 )> Ta*Imax,Imax是所有像素的最大I,饱和度阈值是
(S=1-min(Ir,Ib,Ig)/I)<Tb*Smax,Smax是所有像素的最大S,下面是我的代码,想问一下哪里有问题:
close all;clear all;clc;
I=imread('test.jpg');
R=I;
R(:,:,2)=0;
R(:,:,3)=0;
G=I;
G(:,:,1)=0;
G(:,:,3)=0;
B=I;
B(:,:,1)=0;
B(:,:,2)=0;
[m,n]=size(I);
Ta=0.5;
Tb=0.5;
Imax=0;
Smax=0;
%look for Imax and Smax
for i=1:m
for j=1:n
I0=(R(i,j)+G(i,j)+B(i,j))/3;
if I0>Imax
Imax=I0;
end
M=[R(i,j),G(i,j),B(i,j)];
Min=min(M);
S0=1-Min/I0;
if S0>Smax
Smax=S0;
end
end
end
%threshold segement
Inew=I;
for i=1:m
for j=1:n
I1=(R(i,j)+G(i,j)+B(i,j))/3;
M=[R(i,j),G(i,j),B(i,j)];
Min=min(M);
S1=1-Min/I1;
if(I1<=Ta*ImaxS1>=Tb*Smax)
Inew(i,j)=0;
end
end
end
figure,
subplot(121),imshow(I);
subplot(122),imshow(Inew);