function Y=mediancut(I,level)
% Median Cut renk kuantalayici
% I, uint8 grilik seviyesi bir goruntu veya RGB renki bir goruntunun
% tek bir renk katmani.
% level, goruntuyu ifade etmek istediginiz renk sayisi
% Y, kuantalanmis uint8 goruntu
I=double(I);
his=zeros(1,256);
for i=1:size(I,1)
for j=1:size(I,2)
k=I(i,j);
his(k+1)=his(k+1)+1;
end
end
y=1;
for c=1:256
if his(c)==0
continue
end
for x=1:his(c)
img(y)=c-1;
y=y+1;
end
end
n=size(img,2);
a=mod(n,level);
s=(n-a)/level;
m=1;
if a~=0
for i=1:a
for j=1:s+1
sub(j)=img(m+j-1);
end
m=m+s+1;
maks=max(sub);
mini=min(sub);
ort=round(sum(sub)/(s+1));
for z=1:size(I,1)
for t=1:size(I,2)
if (I(z,t)<= maks) & (I(z,t)>=mini)
I(z,t)=ort;
end
end
end
end
end
for i=a+1:level
for j=1:s
subb(j)=img(m+j-1);
end
m=m+s;
maks=max(subb);
mini=min(subb);
ort=round(sum(subb)/(s));
for z=1:size(I,1)
for t=1:size(I,2)
if (I(z,t)<= maks) & (I(z,t)>=mini)
I(z,t)=ort;
end
end
end
end
Y=uint8(I);
% end of function
|