clear;
close all
img=imread('.\img\7.jpg');
%img=imresize(img,[size(img,1)*2 size(img,2)*2],'nearest');
img=img(:,:,:);
r=img(:,:,1);
g=img(:,:,2);
b=img(:,:,3);
r=im2double(r);
g=im2double(g);
b=im2double(b);
%得到5个特征,分别是I,R,G,B,Y
I=(r+g+b)./3;%亮度特征
R=r-(g+b)./2;
G=g-(r+b)./2;
B=b-(r+g)./2;
Y=(r+g)./2-(abs(r-g))./2-b;
%取9层尺度信息
Nimg = Gscale(I,9,[5 5],1.6);
Red= Gscale(R,9,[5 5],0.5);
Green=Gscale(G,9,[5 5],0.5);
Blue=Gscale(B,9,[5 5],0.5);
Yellow=Gscale(Y,9,[5 5],0.5);
%%%%%%%%%%%%%%%%亮度显著图%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
c=3;s=6;
Nimg(s).img=imresize((Nimg(s).img),size(Nimg(c).img),'nearest');
I3=abs(minus((Nimg(c).img),(Nimg(s).img)));
I3=maxNormalizeStdGBVS(I3);
I30=I3(1:2:end,1:2:end);
I30=I30(1:2:end,1:2:end);
%figure;imshow(mat2gray(I30));
c=3;s=7;
Nimg(s).img=imresize((Nimg(s).img),size(Nimg(c).img),'nearest');
I4=abs(minus((Nimg(c).img),(Nimg(s).img)));
I4=maxNormalizeStdGBVS(I4);
I31=I4(1:2:end,1:2:end);
I31=I31(1:2:end,1:2:end);
% figure;imshow(mat2gray(I31));
c=4;s=7;
Nimg(s).img=imresize((Nimg(s).img),size(Nimg(c).img),'nearest');
I5=abs(minus((Nimg(c).img),(Nimg(s).img)));
I5=maxNormalizeStdGBVS(I5);
I40=I5(1:2:end,1:2:end);
% figure;imshow(mat2gray(I40));
c=4;s=8;
Nimg(s).img=imresize((Nimg(s).img),size(Nimg(c).img),'nearest');
I6=abs(minus((Nimg(c).img),(Nimg(s).img)));
I6=maxNormalizeStdGBVS(I6);
I41=I6(1:2:end,1:2:end);
% figure;imshow(mat2gray(I41));
c=5;s=8;
Nimg(s).img=imresize((Nimg(s).img),size(Nimg(c).img),'nearest');
I7=abs(minus((Nimg(c).img),(Nimg(s).img)));
I50=maxNormalizeStdGBVS(I7);
% figure;imshow(mat2gray(I50));
c=5;s=9;
Nimg(s).img=imresize((Nimg(s).img),size(Nimg(c).img),'nearest');
I8=abs(minus((Nimg(c).img),(Nimg(s).img)));
I51=maxNormalizeStdGBVS(I8);
% figure;imshow(mat2gray(I51));
I0=I31+I30+I40+I41+I50+I51;
% figure;imshow(mat2gray(I0));
I00=maxNormalizeStdGBVS(I0);
% I00=mat2gray(I00);
% figure;imshow(mat2gray(I00));
%%%%%%%%%%%%%%%%%%%%%%%颜色显著图%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
c=3;s=6;
Nimg(c).img=minus(Red(c).img,Green(c).img);
Nimg(s).img=minus(Green(s).img,Red(s).img);
Nimg(s).img=imresize((Nimg(s).img),size(Nimg(c).img),'nearest');
RG=abs(minus((Nimg(c).img),(Nimg(s).img)));
RG=maxNormalizeStdGBVS(RG);
Nimg(c).img=minus(Blue(c).img,Yellow(c).img);
Nimg(s).img=minus(Yellow(s).img,Blue(s).img);
Nimg(s).img=imresize((Nimg(s).img),size(Nimg(c).img),'nearest');
BY=abs(minus((Nimg(c).img),(Nimg(s).img)));
BY=maxNormalizeStdGBVS(BY);
RGBY=RG+BY;
RGBY30=RGBY(1:2:end,1:2:end);
RGBY30=RGBY30(1:2:end,1:2:end);
% figure;imshow(mat2gray(RGBY30));
c=3;s=7;
Nimg(c).img=minus(Red(c).img,Green(c).img);
Nimg(s).img=minus(Green(s).img,Red(s).img);
Nimg(s).img=imresize((Nimg(s).img),size(Nimg(c).img),'nearest');
RG=abs(minus((Nimg(c).img),(Nimg(s).img)));
RG=maxNormalizeStdGBVS(RG);
Nimg(c).img=minus(Blue(c).img,Yellow(c).img);
Nimg(s).img=minus(Yellow(s).img,Blue(s).img);
Nimg(s).img=imresize((Nimg(s).img),size(Nimg(c).img),'nearest');
BY=abs(minus((Nimg(c).img),(Nimg(s).img)));
BY=maxNormalizeStdGBVS(BY);
RGBY=RG+BY;
RGBY31=RGBY(1:2:end,1:2:end);
RGBY31=RGBY31(1:2:end,1:2:end);
% figure;imshow(mat2gray(RGBY31));
c=4;s=7;
Nimg(c).img=minus(Red(c).img,Green(c).img);
Nimg(s).img=minus(Green(s).img,Red(s).img);
Nimg(s).img=imresize((Nimg(s).img),size(Nimg(c).img),'nearest');
RG=abs(minus((Nimg(c).img),(Nimg(s).img)));
RG=maxNormalizeStdGBVS(RG);
Nimg(c).img=minus(Blue(c).img,Yellow(c).img);
Nimg(s).img=minus(Yellow(s).img,Blue(s).img);
Nimg(s).img=imresize((Nimg(s).img),size(Nimg(c).img),'nearest');
BY=abs(minus((Nimg(c).img),(Nimg(s).img)));
BY=maxNormalizeStdGBVS(BY);
RGBY=RG+BY;
RGBY40=RGBY(1:2:end,1:2:end);
% figure;imshow(mat2gray(RGBY40));
c=4;s=8;
Nimg(c).img=minus(Red(c).img,Green(c).img);
Nimg(s).img=minus(Green(s).img,Red(s).img);
Nimg(s).img=imresize((Nimg(s).img),size(Nimg(c).img),'nearest');
RG=abs(minus((Nimg(c).img),(Nimg(s).img)));
RG=maxNormalizeStdGBVS(RG);
Nimg(c).img=minus(Blue(c).img,Yellow(c).img);
Nimg(s).img=minus(Yellow(s).img,Blue(s).img);
Nimg(s).img=imresize((Nimg(s).img),size(Nimg(c).img),'nearest');
BY=abs(minus((Nimg(c).img),(Nimg(s).img)));
BY=maxNormalizeStdGBVS(BY);
RGBY=RG+BY;
RGBY41=RGBY(1:2:end,1:2:end);
% figure;imshow(mat2gray(RGBY41));
c=5;s=8;
Nimg(c).img=minus(Red(c).img,Green(c).img);
Nimg(s).img=minus(Green(s).img,Red(s).img);
Nimg(s).img=imresize((Nimg(s).img),size(Nimg(c).img),'nearest');
RG=abs(minus((Nimg(c).img),(Nimg(s).img)));
RG=maxNormalizeStdGBVS(RG);
Nimg(c).img=minus(Blue(c).img,Yellow(c).img);
Nimg(s).img=minus(Yellow(s).img,Blue(s).img);
Nimg(s).img=imresize((Nimg(s).img),size(Nimg(c).img),'nearest');
BY=abs(minus((Nimg(c).img),(Nimg(s).img)));
BY=maxNormalizeStdGBVS(BY);
RGBY50=RG+BY;
% figure;imshow(mat2gray(RGBY50));
c=5;s=9;
Nimg(c).img=minus(Red(c).img,Green(c).img);
Nimg(s).img=minus(Green(s).img,Red(s).img);
Nimg(s).img=imresize((Nimg(s).img),size(Nimg(c).img),'nearest');
RG=abs(minus((Nimg(c).img),(Nimg(s).img)));
RG=maxNormalizeStdGBVS(RG);
Nimg(c).img=minus(Blue(c).img,Yellow(c).img);
Nimg(s).img=minus(Yellow(s).img,Blue(s).img);
Nimg(s).img=imresize((Nimg(s).img),size(Nimg(c).img),'nearest');
BY=abs(minus((Nimg(c).img),(Nimg(s).img)));
BY=maxNormalizeStdGBVS(BY);
RGBY51=RG+BY;
% figure;imshow(mat2gray(RGBY51));
RGBY0=RGBY30+RGBY31+RGBY40+RGBY41+RGBY50+RGBY51;
RGBY00=maxNormalizeStdGBVS(RGBY0);
% RGBY00=mat2gray(RGBY00);
% figure;imshow(mat2gray(RGBY00));
%%%%%%%%%%%%%%%%%%%%%%%方向显著图%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
f0 = 0.2;
count =0;
O=cell(1,4);
m=1;
for theta = [0,pi/4,pi/2,pi*3/4];%用弧度0,pi/4,pi/2,pi*3/4
count = count + 1;
x = 0;
for i = linspace(-8,8,11)
x = x + 1;
y = 0;
for j = linspace(-8,8,11)
y = y + 1;
z(y,x)=compute(i,j,f0,theta);
end
end
% figure(count);
filtered = filter2(z,I,'same');
f = abs(filtered);
f=f/max(f(:));
% imshow(f);
% end
o=Gscale(f,9,[5 5],0.5);
c=3;s=6;
o(s).img=imresize(o(s).img,size(o(c).img),'nearest');
o1=abs(minus((o(c).img),(o(s).img)));
o1=maxNormalizeStdGBVS(o1);
o30=o1(1:2:end,1:2:end);
o30=o30(1:2:end,1:2:end);
% figure;imshow(mat2gray(o30));
c=3;s=7;
o(s).img=imresize(o(s).img,size(o(c).img),'nearest');
o2=abs(minus((o(c).img),(o(s).img)));
o2=maxNormalizeStdGBVS(o2);
o31=o2(1:2:end,1:2:end);
o31=o31(1:2:end,1:2:end);
% figure;imshow(mat2gray(o31));
c=4;s=7;
o(s).img=imresize(o(s).img,size(o(c).img),'nearest');
o3=abs(minus((o(c).img),(o(s).img)));
o3=maxNormalizeStdGBVS(o3);
o40=o3(1:2:end,1:2:end);
% figure;imshow(mat2gray(o40));
c=4;s=8;
o(s).img=imresize(o(s).img,size(o(c).img),'nearest');
o4=abs(minus((o(c).img),(o(s).img)));
o4=maxNormalizeStdGBVS(o4);
o41=o4(1:2:end,1:2:end);
% figure;imshow(mat2gray(o41));
c=5;s=8;
o(s).img=imresize(o(s).img,size(o(c).img),'nearest');
o5=abs(minus((o(c).img),(o(s).img)));
o50=maxNormalizeStdGBVS(o5);
% figure;imshow(mat2gray(o50));
c=5;s=9;
o(s).img=imresize(o(s).img,size(o(c).img),'nearest');
o6=abs(minus((o(c).img),(o(s).img)));
o51=maxNormalizeStdGBVS(o6);
% figure;imshow(mat2gray(o51));
o=o31+o30+o41+o40+o51+o50;
o=maxNormalizeStdGBVS(o);
O{1,m}=o;
% O=O+O{1,m};
% figure;imshow(mat2gray(O{1,m}));
m=m+1;
end
O0=O{1,1}+O{1,2}+O{1,3}+O{1,4};
% O0=mat2gray(O0);
% figure;imshow(mat2gray(O0));
O00=maxNormalizeStdGBVS(O0);
%%%%%%%%%%%%%%%%%%%%%线性结合S=(I00+RGBY00+O00)./3%%%%%%%%%%%%%%
% O00=imresize(O00,size(I00));
S=(I00+RGBY00+O00)./3;
S=mat2gray(S);
T=graythresh(S);
S=im2bw(S,T);
% S=bwmorph(S,'spur');
% S=bwmorph(S,'clean');
% S=S.*mat2gray(img);
% figure;imshow(S);
% [m n]=size(S)
% for i=1:m
% for j=1:n
% if S(i,j)>=T
% S(i,j)=1;
%