⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lyr.m

📁 implementation of k means algorithm source code
💻 M
字号:
function lyr()
test=imread('i_i.jpg');
fid1=fopen('mtbl1','w')
fid2=fopen('mtbl2','w')
fid3=fopen('mtbl3','w')
mian=fopen('mian','w')


map1=int32(0.000000);

map=double(test);
        for i=1:240
            k=0;
            for j=1:284
                map1(i,j,1)=test(i,j,1);
                k=k+map1(i,j,1);
                fprintf(fid1,'%i',map1(i,j,1));
            end
            fprintf(fid1,'\n');
            k=k/284;
            k(i)=abs(k);
            fprintf(mian,'%i \n',k(i));
        end 
        fclose(fid1);
    
for i=1:240
    m=int32(0.000000);
    for j=1:284
        m=m + ((map1(i,j,1)-k(i))^2.000);
    end
    m=m/284.000;
    m=double(m);
    l=(sqrt(m));
    m(i)=l;
    fprintf(fid2,'%g\n',m(i));
end
fclose(fid2);

map1=double(map1);

fid4=fopen('mtbl2','r');
m=fscanf(fid4,'%g');
fclose(fid4);
for i=1:240
    double t;
    t=m(i);
    for j=1:284
        map(i,j,1)=(map1(i,j,1)-k(i))/t;
        fprintf(fid3,'%g',map(i,j,1));
    end
%     imshow(map);
    fprintf(fid3,'\n');
end
fclose(fid3);
fid5=fopen('mian','r');
n=fscanf(fid5,'%g');
fclose(fid5);
        
mn=min(n);
mx=max(n);
    
rang=round((mx-mn)/5);
display(rang);
        
map2=double(map1);

newm1 =mn+rang;
newm2=mn+2*rang;
newm3=mn+3*rang;
newm4=mn+4*rang;
newm5=mn+5*rang;

p1=1;
p2=1;
p3=1;
p4=1;
p5=1;

flag1=0;
flag2=0;
flag3=0;
flag4=0;
flag5=0;

for i=1:240
    for j=1:284
      
         if map1(i,j,1)<=(mn+rang)
          if flag1==0
            newm1=map1(i,j,1);
            ai(p1)=i;
            aj(p1)=j;
            p1=p1+1;
            flag1=1;
%             map2(i,j,1)=0;
%             map3(i,j,1)=1;
           else
            newm1=(newm1+map1(i,j,1))/p1;
             ai(p1)=i;
             aj(p1)=j;
             p1=p1+1;
           end
         else
                
                
                if map1(i,j,1)>(mn+rang) & map1(i,j,1)<=(mn+2*rang)
                    if flag2==0
                    newm2=map1(i,j,1);
                    bi(p2)=i;
                    bj(p2)=j;
                    p2=p2+1;
                    flag2=1;
%                     map2(i,j,1)=128;
%                     map3(i,j,1)=0.8;
              
                else
                newm2=(newm2+map1(i,j,1))/p2;
                bi(p2)=i;
                bj(p2)=j;
                p2=p2+1;
                  end
                else
                
                if map1(i,j,1)>(mn+2*rang) & map1(i,j,1)<=(mn+3*rang)
                    if flag3==0
                    newm3=map1(i,j,1);
                    ci(p3)=i;
                    cj(p3)=j;
                    p3=p3+1;
                    flag3=1;
%                     map2(i,j,1)=255;
%                     map3(i,j,1)=0.1;
              
                else
                    newm3=(newm3+map1(i,j,1))/p3;
                    ci(p3)=i;
                    cj(p3)=j;
                    p3=p3+1; 
                    end
                else
                
                if map1(i,j,1)>(mn+3*rang) & map1(i,j,1)<=(mn+4*rang)
                    if flag4==0
                    newm4=map1(i,j,1);
                    di(p4)=i;
                    dj(p4)=j;
                    p4=p4+1;
                    flag4=1;
%                     map2(i,j,1)=255;
%                     map3(i,j,1)=0.5;
                
                else
                    newm4=(newm4+map1(i,j,1))/p4;
                    di(p4)=i;
                    dj(p4)=j;
                    p4=p4+1;
                    end
                else
                    
                if map1(i,j,1)>(mn+4*rang) & map1(i,j,1)<=(mn+5*rang)
                    if flag5==0
                    newm5=map1(i,j,1);
                    ei(p5)=i;
                    ej(p5)=j;
                    p5=p5+1;
                    flag5=1;
%                     map2(i,j,1)=0.4;
                    
                else
                    newm5=(newm5+map1(i,j,1))/p5;
                    ei(p5)=i;
                    ej(p5)=j;
                    p5=p5+1;
                    end
                end
            end
                end
                end
         end
    end
end


% imshow(map2(:,:,1));
% figure(5);
% imshow(map3(:,:,1));

      
      for i=1:p1-1
        map2(ai(i),aj(i),1)=0.33;
      end
      
      for i=1:p2-1
        map2(bi(i),bj(i),1)=0.15;
      end
      
      for i=1:p3-1
        map2(ci(i),cj(i),1)=0.25;
      end
      
      for i=1:p4-1
        map2(di(i),dj(i),1)=0.49;
      end
      
      for i=1:p5-1
        map2(ei(i),ej(i),1)=0.65;
      end
figure(1);
imshow(map2(:,:,1));

% ai
% aj
% bi
% bj
% ci
% cj
% di
% dj
% ei
% ej






% -------------------------------------------------------------------------
% -------------------------------------------------------------------------

 
fid1=fopen('mtbl1','w')
fid2=fopen('mtbl2','w')
fid3=fopen('mtbl3','w')
mian=fopen('mian','w')


map1=int32(0.000000);

map=double(test);
        for i=1:240
            k=0;
            for j=1:284
                map1(i,j,2)=test(i,j,2);
                k=k+map1(i,j,2);
                fprintf(fid1,'%i',map1(i,j,2));
            end
            fprintf(fid1,'\n');
            k=k/284;
            k(i)=abs(k);
            fprintf(mian,'%i \n',k(i));
        end 
        fclose(fid1);
    
for i=1:240
    m=int32(0.000000);
    for j=1:284
        m=m + ((map1(i,j,2)-k(i))^2.000);
    end
    m=m/284.000;
    m=double(m);
    l=(sqrt(m));
    m(i)=l;
    fprintf(fid2,'%g\n',m(i));
end
fclose(fid2);

map1=double(map1);

fid4=fopen('mtbl2','r');
m=fscanf(fid4,'%g');
fclose(fid4);
for i=1:240
    double t;
    t=m(i);
    for j=1:284
        map(i,j,1)=(map1(i,j,2)-k(i))/t;
        fprintf(fid3,'%g',map(i,j,2));
    end
%     imshow(map);
    fprintf(fid3,'\n');
end
fclose(fid3);
fid5=fopen('mian','r');
n=fscanf(fid5,'%g');
fclose(fid5);
        
mn=min(n);
mx=max(n);
    
rang=round((mx-mn)/5);
display(rang);
        
map2=double(map1);
map3=double(map1);


newm1 =mn+rang;
newm2=mn+2*rang;
newm3=mn+3*rang;
newm4=mn+4*rang;
newm5=mn+5*rang;

p1=1;
p2=1;
p3=1;
p4=1;
p5=1;

flag1=0;
flag2=0;
flag3=0;
flag4=0;
flag5=0;

for i=1:240
    for j=1:284
      
         if map1(i,j,2)<=(mn+rang)
          if flag1==0
            newm1=map1(i,j,2);
            ai(p1)=i;
            aj(p1)=j;
            p1=p1+1;
            flag1=1;
%             map2(i,j,1)=0;
%             map3(i,j,1)=1;
           else
            newm1=(newm1+map1(i,j,2))/p1;
             ai(p1)=i;
             aj(p1)=j;
             p1=p1+1;
           end
         else
                
                
                if map1(i,j,2)>(mn+rang) & map1(i,j,2)<=(mn+2*rang)
                    if flag2==0
                    newm2=map1(i,j,2);
                    bi(p2)=i;
                    bj(p2)=j;
                    p2=p2+1;
                    flag2=1;
%                     map2(i,j,1)=128;
%                     map3(i,j,1)=0.8;
              
                else
                newm2=(newm2+map1(i,j,2))/p2;
                bi(p2)=i;
                bj(p2)=j;
                p2=p2+1;
                  end
                else
                
                if map1(i,j,2)>(mn+2*rang) & map1(i,j,2)<=(mn+3*rang)
                    if flag3==0
                    newm3=map1(i,j,2);
                    ci(p3)=i;
                    cj(p3)=j;
                    p3=p3+1;
                    flag3=1;
%                     map2(i,j,1)=255;
%                     map3(i,j,1)=0.1;
              
                else
                    newm3=(newm3+map1(i,j,2))/p3;
                    ci(p3)=i;
                    cj(p3)=j;
                    p3=p3+1; 
                    end
                else
                
                if map1(i,j,2)>(mn+3*rang) & map1(i,j,2)<=(mn+4*rang)
                    if flag4==0
                    newm4=map1(i,j,2);
                    di(p4)=i;
                    dj(p4)=j;
                    p4=p4+1;
                    flag4=1;
%                     map2(i,j,1)=255;
%                     map3(i,j,1)=0.5;
                
                else
                    newm4=(newm4+map1(i,j,2))/p4;
                    di(p4)=i;
                    dj(p4)=j;
                    p4=p4+1;
                    end
                else
                    
                if map1(i,j,2)>(mn+4*rang) & map1(i,j,2)<=(mn+5*rang)
                    if flag5==0
                    newm5=map1(i,j,2);
                    ei(p5)=i;
                    ej(p5)=j;
                    p5=p5+1;
                    flag5=1;
%                     map2(i,j,1)=0.4;
                    
                else
                    newm5=(newm5+map1(i,j,2))/p5;
                    ei(p5)=i;
                    ej(p5)=j;
                    p5=p5+1;
                    end
                end
            end
                end
                end
         end
    end
end

% imshow(map2(:,:,1));
% figure(5);
% imshow(map3(:,:,1));

      
      for i=1:p1-1
        map2(ai(i),aj(i),2)=0.33;
      end
      
      for i=1:p2-1
        map2(bi(i),bj(i),2)=0.15;
      end
      
      for i=1:p3-1
        map2(ci(i),cj(i),2)=0.25;
      end
      
      for i=1:p4-1
        map2(di(i),dj(i),2)=0.49;
      end
      
      for i=1:p5-1
        map2(ei(i),ej(i),2)=0.65;
      end
figure(2);
imshow(map2(:,:,2));

% 
% 
% % % -------------------------------------------------------------------------
% % % -------------------------------------------------------------------------
% % 
% % 
fid1=fopen('mtbl1','w')
fid2=fopen('mtbl2','w')
fid3=fopen('mtbl3','w')
mian=fopen('mian','w')


map1=int32(0.000000);

map=double(test);
        for i=1:240
            k=0;
            for j=1:284
                map1(i,j,3)=test(i,j,3);
                k=k+map1(i,j,3);
                fprintf(fid1,'%i',map1(i,j,3));
            end
            fprintf(fid1,'\n');
            k=k/284;
            k(i)=abs(k);
            fprintf(mian,'%i \n',k(i));
        end 
        fclose(fid1);
    
for i=1:240
    m=int32(0.000000);
    for j=1:284
        m=m + ((map1(i,j,3)-k(i))^2.000);
    end
    m=m/284.000;
    m=double(m);
    l=(sqrt(m));
    m(i)=l;
    fprintf(fid2,'%g\n',m(i));
end
fclose(fid2);

map1=double(map1);

fid4=fopen('mtbl2','r');
m=fscanf(fid4,'%g');
fclose(fid4);
for i=1:240
    double t;
    t=m(i);
    for j=1:284
        map(i,j,1)=(map1(i,j,3)-k(i))/t;
        fprintf(fid3,'%g',map(i,j,3));
    end
%     imshow(map);
    fprintf(fid3,'\n');
end
fclose(fid3);
fid5=fopen('mian','r');
n=fscanf(fid5,'%g');
fclose(fid5);
        
mn=min(n);
mx=max(n);
    
rang=round((mx-mn)/5);
display(rang);
        
map11=double(map1);


newm1 =mn+rang;
newm2=mn+2*rang;
newm3=mn+3*rang;
newm4=mn+4*rang;
newm5=mn+5*rang;

p1=1;
p2=1;
p3=1;
p4=1;
p5=1;


for i=1:240
    for j=1:284
      
         if map1(i,j,3)<=(mn+rang)
          if flag1==0
            newm1=map1(i,j,3);
            ai(p1)=i;
            aj(p1)=j;
            p1=p1+1;
            flag1=1;
%             map2(i,j,1)=0;
%             map3(i,j,1)=1;
           else
            newm1=(newm1+map1(i,j,3))/p1;
             ai(p1)=i;
             aj(p1)=j;
             p1=p1+1;
           end
         else
                
                
                if map1(i,j,3)>(mn+rang) & map1(i,j,3)<=(mn+2*rang)
                    if flag2==0
                    newm2=map1(i,j,3);
                    bi(p2)=i;
                    bj(p2)=j;
                    p2=p2+1;
                    flag2=1;
%                     map2(i,j,1)=128;
%                     map3(i,j,1)=0.8;
              
                else
                newm2=(newm2+map1(i,j,3))/p2;
                bi(p2)=i;
                bj(p2)=j;
                p2=p2+1;
                  end
                else
                
                if map1(i,j,3)>(mn+2*rang) & map1(i,j,3)<=(mn+3*rang)
                    if flag3==0
                    newm3=map1(i,j,3);
                    ci(p3)=i;
                    cj(p3)=j;
                    p3=p3+1;
                    flag3=1;
%                     map2(i,j,1)=255;
%                     map3(i,j,1)=0.1;
              
                else
                    newm3=(newm3+map1(i,j,3))/p3;
                    ci(p3)=i;
                    cj(p3)=j;
                    p3=p3+1; 
                    end
                else
                
                if map1(i,j,3)>(mn+3*rang) & map1(i,j,3)<=(mn+4*rang)
                    if flag4==0
                    newm4=map1(i,j,3);
                    di(p4)=i;
                    dj(p4)=j;
                    p4=p4+1;
                    flag4=1;
%                     map2(i,j,1)=255;
%                     map3(i,j,1)=0.5;
                
                else
                    newm4=(newm4+map1(i,j,3))/p4;
                    di(p4)=i;
                    dj(p4)=j;
                    p4=p4+1;
                    end
                else
                    
                if map1(i,j,3)>(mn+4*rang) & map1(i,j,3)<=(mn+5*rang)
                    if flag5==0
                    newm5=map1(i,j,3);
                    ei(p5)=i;
                    ej(p5)=j;
                    p5=p5+1;
                    flag5=1;
%                     map2(i,j,1)=0.4;
                    
                else
                    newm5=(newm5+map1(i,j,3))/p5;
                    ei(p5)=i;
                    ej(p5)=j;
                    p5=p5+1;
                    end
                end
            end
                end
                end
         end
    end
end

% imshow(map2(:,:,1));
% figure(5);
% imshow(map3(:,:,1));

      
      for i=1:p1-1
        map2(ai(i),aj(i),3)=0.33;
      end
      
      for i=1:p2-1
        map2(bi(i),bj(i),3)=0.15;
      end
      
      for i=1:p3-1
        map2(ci(i),cj(i),3)=0.25;
      end
      
      for i=1:p4-1
        map2(di(i),dj(i),3)=0.49;
      end
      
      for i=1:p5-1
        map2(ei(i),ej(i),3)=0.65;
      end
figure(3);
imshow(map2(:,:,3));


figure(4);
imshow(map2);
% 
% 
% 
% % % -------------------------------------------------------------------------
% % % -------------------------------------------------------------------------
% % 
% % 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -