在实际应用当中,有时候需要进行图像增强来改善图像的视觉效果。在此问题处理当中,按照颜色可以分为灰度图像增强和彩色图像增强。按照作用域分类,可以分为空域处理和频域处理。
图像空域处理方法通常有灰度变换,直方图均衡,图像平滑和锐化。频域处理有DFT变换,采用滤波的方法进行图像增强。现有的方法自适应的效果都比较差,这里提出一种模糊自适应的方法,利用遗传算法完成图像的增强。
1,选着合适的评价函数,得到图像质量的适应度函数值
2,利用遗传算法,选择,交叉,变异 优化处理
3,得到优化结果,完成图像的自适应增强。
本案例采用beta函数来实现图像灰度变换曲线的自动拟合。相关代码如下
function Incmp_Beta_Result=IncmpBeta(a,b,X)
[m n]=size(X);
aaa=Gammln(a+b)-Gammln(a)-Gammln(b);
for i=1:m
for j=1:n
if X(i,j)<0 | X(i,j)>1
helpdlg(‘变量X的取值范围不在0和1之间’,‘错误!’);
return
end
if X(i,j)==0 | X(i,j)==1
bt(i,j)=0;
else
bt(i,j)=exp(aaa+alog(X(i,j))+blog(1-X(i,j)));
end
end
end
for i=1:m
for j=1:n
if X(i,j)<((a+1)/(a+b+2))
Incmp_Beta_Result(i,j)=bt(i,j)*Betacf(a,b,X(i,j))/a;
else
Incmp_Beta_Result(i,j)=1-bt(i,j)*Betacf(b,a,1-X(i,j))/b;
end
end
end
%//////////////Betacf过程//////////////////////////////
function Betacf_Result=Betacf(a,b,x)
itmax=100;
eps=0.0000003;
am=1;
bm=1;
az=1;
qab=a+b;
qap=a+1;
qam=a-1;
bz=1-qabx/qap;
for m=1:itmax
em=m;
tem=em+em;
d=em(b-m)x/((qam+tem)(a+tem));
ap=az+dam;
bp=bz+dbm;
d=-(a+em)(qab+em)x/((a+tem)(qap+tem));
aap=ap+daz;
bpp=bp+dbz;
aold=az;
am=ap/bpp;
bm=bp/bpp;
az=aap/bpp;
bz=1;
if abs(az-aold)
Betacf_Result=az;
break;
end
end
Betacf_Result=az;
%/////////////计算gama函数程序////////////////////////
function Gammln_result=Gammln(xx)
cof(1)=76.18009173;
cof(2)=-86.50532033;
cof(3)=24.01409822;
cof(4)=-1.231739516;
cof(5)=0.00120858003;
cof(6)=-0.00000536382;
stp=2.50662827465;
half=0.5;
one=1.0;
fpf=5.5;
x=xx-one;
tmp=x+fpf;
tmp=(x+half)log(tmp)-tmp;
ser=one;
for j=1:6
x=x+one;
ser=ser+cof(j)./x;
end
Gammln_result=tmp+log(stpser);
%----------programs end here---------------
适应度函数
function [sol eval]=fitnesszq_gray(sol,options)
%实现灰度图像增强的适应度函数
%%遗传算法的适应度函数。公式3-23的编程实现。
%////////////////////////////////////////////////////////////////////
a=sol(1);
b=sol(2);
P=imread(‘my.png’);
[M,N]=size§;
PP=double§;
n=M*N;
%求beta函数
syms t x
B=double(int((t.(a-1)).*((1-t).(b-1)),t,0,1));%分母
lmin=double(min(min§));
lmax=double(max(max§));
%原图像 P 归一化处理得到 G
G=(PP-lmin)/(lmax-lmin);
GP=IncmpBeta(a,b,G);
FP=round((lmax-lmin).GP+lmin);%原图像的变换
count=imhist(uint8(FP));
th=5;
NN=sum(count>th);%求像素个数大于一给定阈值的灰度级的数量
H=0;
co=count/(MN);
%cc=co>0;
for i=1:256
if co(i)>0
H=H+co(i).*log2(co(i));
end
end
%H=-sum(co.*log2(co));
HH=-H;%求熵
delta=sum(sum(FP.2))/n-(sum(sum(FP))/n).2;%求方差
U=FP./(lmax-1);%模糊变换函数
pmr1=0;pmr2=0;
for i=1:M
for j=1:N-1
pmr1=pmr1+abs(U(i,j)-U(i,j+1));
end
end
for i=1:M-1
for j=1:N
pmr2=pmr2+abs(U(i,j)-U(i+1,j));
end
end
pmr=pmr1+pmr2;
area=sum(sum(U));%模糊几何量
Comp=area./(pmr.^2);
%本节设计的适应度函数
Fitness=log10(NN.*HH.*delta/Comp) %没有加;是为了在运行窗口可以看到运行中的结果
eval=Fitness;
%----------all programs end here---------------
%%%%来自PeP工作室%%%%邮箱[email protected]
https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-21346770580.6.36127221LMIfNH&id=587675105138