![]() 
 
 
function [] = test()    
clc;
clear;
% Path="C:\Users\Administrator\Desktop\塑料瓶\0.jpg";%图片路径
% Path="C:\Users\Administrator\Desktop\塑料瓶\纯透明塑料瓶.jpg";%图片路径
% Path="C:\Users\Administrator\Desktop\塑料瓶\深色塑料瓶.jpg";%图片路径
% Path="C:\Users\Administrator\Desktop\塑料瓶\透明蓝色塑料瓶.jpg";%图片路径
Path="C:\Users\Administrator\Desktop\塑料瓶\透明绿色塑料瓶.jpg";%图片路径
Source_img=imread(Path);%获取图片信息
% figure(6);imshow(Source_img);
[r,lie]=size(Source_img(:,:,2));%获取行列信息
bottle_bottom_XY=[-1,-1];
bottle_top=-1;
bottle_bottom=-1;
bottle_left=-1;
bottle_right=-1;
num=9;
!算出指定位点与标志行列的差别  判断该点是否在瓶子图片内
X_D=round(r/num);%round四舍五入取整函数 算出行取值的等差
Y_D=round(lie/num);%round四舍五入取整函数  算出列取值的等差
X_label=(1:X_D:r);
Y_label=(1:Y_D:lie);
!RGB->LAB
S_lab=zeros(r,lie,3);
cform = makecform('srgb2lab');
lab = applycform(Source_img, cform);
l=lab(:,:,1);
a=lab(:,:,2);
b=lab(:,:,3);
% figure(1),imshow(l);
% figure(1),imshow(a);
% figure(1),imshow(b);
for i=X_label
    for j=Y_label
        ti=round(i/X_D)+1;
        tj=round(j/Y_D)+1;
%         ii=lab(i,j,1)*lab(i,j,1);
%         jj=lab(i,j,2)*lab(i,j,2);
%         kk=lab(i,j,3)*lab(i,j,3);
%        if(ii+jj+kk>100)
       if(lab(i,j,1)>100)
%             S_lab(i,j,1)=lab(i,j,1);
%             S_lab(i,j,2)=lab(i,j,2)
%             S_lab(i,j,3)=lab(i,j,3);
              [i,j]
              lab(i,j,1)
       end
    end
end
% figure(5);imshow(S_lab);
A_R=zeros(num,num);
A_G=zeros(num,num);
A_B=zeros(num,num);
for i=X_label
    for j=Y_label
        ti=round(i/X_D)+1;
        tj=round(j/Y_D)+1;
        A_R(ti,tj)=Source_img(i,j,1);
        A_G(ti,tj)=Source_img(i,j,2);
        A_B(ti,tj)=Source_img(i,j,3);
    end
end
S_R=zeros(num,num);
S_G=zeros(num,num);
S_B=zeros(num,num);
for i=X_label
    for j=Y_label
        ti=round(i/X_D)+1;
        tj=round(j/Y_D)+1;
        S_R(ti,tj)=(A_R(1,tj)-A_R(ti,tj))*(A_R(1,tj)-A_R(ti,tj)) + (A_R(ti,1)-A_R(ti,tj))*(A_R(ti,1)-A_R(ti,tj));
        S_G(ti,tj)=(A_G(1,tj)-A_G(ti,tj))*(A_G(1,tj)-A_G(ti,tj)) + (A_G(ti,1)-A_G(ti,tj))*(A_G(ti,1)-A_G(ti,tj));
        S_B(ti,tj)=(A_B(1,tj)-A_B(ti,tj))*(A_B(1,tj)-A_B(ti,tj)) + (A_B(ti,1)-A_B(ti,tj))*(A_B(ti,1)-A_B(ti,tj));
    end
end
SS=zeros(num,num);
for i=X_label
    for j=Y_label
        ti=round(i/X_D)+1;
        tj=round(j/Y_D)+1;
       SS(ti,tj)=S_R(ti,tj)+S_G(ti,tj)+S_B(ti,tj);
    end
end
S_end=zeros(num,num);
for i=X_label
    for j=Y_label
        ti=round(i/X_D)+1;
        tj=round(j/Y_D)+1;
       if( SS(ti,tj)>250)
           S_end(ti,tj)=SS(ti,tj);
       else
           S_end(ti,tj)=0;
       end
    end
end
!判断瓶子顶部
flag=0;
for i=X_label
    if(flag==1)
        break;
    end
    for j=Y_label
        ti=round(i/X_D)+1;
        tj=round(j/Y_D)+1;
       if(S_end(ti,tj)>0)
           flag=1;
           bottle_top=ti;
           break;
       end
    end
end
% length(X_label)
% X_label(end:-1:1)
!判断瓶子底部
flag=0;
for i=X_label(end:-1:1)
    if(flag==1)
        break;
    end
    for j=Y_label
        ti=round(i/X_D)+1;
        tj=round(j/Y_D)+1;
       if(S_end(ti,tj)>0)
           flag=1;
%            ti
%            S_end(ti-1,tj)
%            S_end(ti+1,tj)
           bottle_bottom=length(X_label)-ti+1;
           bottle_color=[Source_img(i,j,1),Source_img(i,j,2),Source_img(i,j,3)];
           break;
       end
    end
end
!判断瓶子左边界部
flag=0;
for j=Y_label
    if(flag==1)
        break;
    end
    for i=X_label
       tj=round(j/Y_D)+1;
       ti=round(i/X_D)+1;
       if(S_end(ti,tj)>0)
           flag=1;
           bottle_left=tj;
           break;
       end
    end
end
!判断瓶子右边界部
flag=0;
for j=Y_label(end:-1:1)
    if(flag==1)
        break;
    end
    for i=X_label
        ti=round(i/X_D)+1;
        tj=round(j/Y_D)+1;
       if(S_end(ti,tj)>0)
           flag=1;
           bottle_right=tj; 
           break;
       end
    end
end
% S_end
% bottle_color;
% bottle_top%11
% bottle_bottom%11
% bottle_left%41
% bottle_right%62