📄 ac.m
字号:
%压缩过程 被se调用返回压缩系数(2)
function [pr1,pr2,pr3,pb1,pb2,pb3]=AC(Ar,Ag,Ab)
Ang=0;%均值赋值为0
Ang1=0;
Ang2=0;
count1=0;count2=0;count3=0;count11=0;count22=0;count33=0;%计数器初始化为0
pr1=0;pr2=0;pr3=0;pb1=0;pb2=0;pb3=0;%压缩系数初始化为0
%Ar=double(Ar);Ag=double(Ag);Ab=double(Ab);
[m,n]=size(Ag);%Ag为32x32,m n为Ag行列数
Ang=mean2(Ag); %Ang为整图块平均值
Ang1=(Ag<=Ang); %Ang1为左侧平均值
Ang1=double(Ang1);
p=sum(Ang1(:));
Ang1=Ang1.*Ag;
Ang1=sum(Ang1(:))/p;%Ang1为左侧均值点
Ang2=(Ag>Ang);
Ang2=double(Ang2);
q=sum(Ang2(:));
Ang2=Ang2.*Ag;
Ang2=sum(Ang2(:))/q;%Ang2为右侧平均值
for i1=1:m
for j1=1:n
if Ang1 >= Ag(i1,j1)
pr1=pr1+(Ar(i1,j1)-Ag(i1,j1));
count1=count1+1;
elseif Ang2 >= Ag(i1,j1)
pr3=pr3+(Ar(i1,j1)-Ag(i1,j1));
count3=count3+1;
else
pr2=pr2+(Ar(i1,j1)-Ag(i1,j1));
count2=count2+1;
end
end
end
if count1 == 0
pr1=pr1;
else
pr1=pr1/count1;
end
if count2 == 0
pr2=pr2;
else
pr2=pr2/count2;
end
if count3 == 0
pr3=pr3;
else
pr3=pr3/count3;
end
for i2=1:m
for j2=1:n
if Ang1 >= Ag(i2,j2)
pb1=pb1+(Ab(i2,j2)-Ag(i2,j2));
count11=count11+1;
elseif Ag(i2,j2) >= Ang2
pb3=pb3+(Ab(i2,j2)-Ag(i2,j2));
count33=count33+1;
else
pb2=pb2+(Ab(i2,j2)-Ag(i2,j2));
count22=count22+1;
end
end
end
if count11==0
pb1=pb1;
else
pb1=pb1/count11;
end
if count22==0
pb2=pb2;
else
pb2=pb2/count22;
end
if count33==0
pb3=pb3;
else
pb3=pb3/count33;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -