1.簡(jiǎn)述
? ? ??
圖像的線性變換和非線性變換,逐像素運(yùn)算就是對(duì)圖像的沒(méi)一個(gè)像素點(diǎn)的亮度值,通過(guò)一定的函數(shù)關(guān)系,轉(zhuǎn)換到新的亮度值。這個(gè)轉(zhuǎn)換可以由函數(shù)表示:
s = f ( r ) s = f( r )s=f(r)
其中r為原來(lái)的像素值,s為新的像素值,通常采用的函數(shù)了單調(diào)函數(shù)進(jìn)行變換。
線性變換:
s ( x , y ) = c + k r ( x , y ) s(x,y) =c+kr(x,y)
s(x,y)=c+kr(x,y)
其中c和k均為常數(shù)
非線性變換:
s = a + l n ( r + 1 ) b l n c s=a+\frac {ln(r+1)} {blnc}
s=a+?
blnc
ln(r+1)
?
?
其中a,b,c為常數(shù)
Gamma變換:
s = c r γ s = cr^γ
s=cr?
γ
?
其中c為常數(shù),通常取1,γ也為常數(shù),r的范圍為[0,255],通常會(huì)放縮到[0,1]
圖為γ取不同值時(shí)的情況,例如,當(dāng)原圖像的像素值為0.2時(shí),γ=1.5時(shí),現(xiàn)圖像的像素值小于0.2,γ=1時(shí),現(xiàn)圖像的像素值等于0.2.當(dāng)γ=0.5時(shí),現(xiàn)圖像的像素值大于0.4.
?
2.代碼
clear all;
%%?
C=double(imread('trees.tif')); ? ? ? %讀入圖片
h=[1,1,1;1,1,1;1,1,1]./9;
B=C(:,:,1);
%B=imfilter(B,h,'replicate');
S=size(B);H=S(1,1);W=S(1,2);
t=0.75;%0.730174;
h0 = (8*t*t*t-6*t*t+3*t)/(1+2*t)*(1/32);
h1 = (-16*t*t*t+20*t*t-12*t+3)/(1+2*t)*(1/32);
h2 = (2*t-3)/(1+2*t)*(1/8.);
h3 = (16*t*t*t-20*t*t+28*t+5)/(1+2*t)*(1/32.);
h4 = (-8*t*t*t+6*t*t+5*t+20)/(1+2*t)*(1/16.);
hL=[h0,h1,h2,h3,h4,h3,h2,h1,h0];
g0=-t/16;
g1=(1-2*t)/16;
g2=(t+4)/16;
g3=(3+2*t)/8;
hH=[-g0,g1,-g2,g3,-g2,g1,-g0];
%% ? 對(duì)淹沒(méi)在噪聲中的SAR圖像首先用Wiener濾波法自適應(yīng)去噪
%Idenoise= medfilt2(B(:,:,1),[3 3]);%中值濾波
%Idenoise = wiener2(B(:,:,1),[5 5]);%自適應(yīng)濾波
%Idenoise=double(Idenoise);
Idenoise=B;
%% ? 用多分辨分解法提取高頻邊緣BI
hL=[1/16,1/4,3/8,1/4,1/16];
for i=1:length(hL)
? ? for j=1:length(hL)
? ? ? ? hL2D(i,j)=hL(i)*hL(j);
? ? end
end
L0=imfilter(Idenoise,hL2D,'replicate');%低頻近似圖像L0
L0=double(L0);
L0max=max(max(L0));
c=0.3;s=2;
T1 = 0;
T2 = (1-c)*L0max;
k1=0.6; k2=s;
BI = Idenoise-L0;% 第一層高頻邊緣BI
?%% ? 對(duì)BI作非線性插值后得到newBI
newBI=BI;
for i=1:H
? ? for j=1:W
? ? ? ? if abs(BI(i,j))<=T1
? ? ? ? ? ? newBI(i,j)=k1*BI(i,j);
? ? ? ? else if (abs(BI(i,j))>T1)&(abs(BI(i,j))<=T2)
? ? ? ? ? ? ? ? newBI(i,j)=sign(BI(i,j))*(k2*abs(BI(i,j))+T1*(k1-k2));
? ? ? ? ? ? end
? ? ? ? end
? ? end
end
%
%% ? ?對(duì)newBI作高通濾波得到增強(qiáng)后的高頻邊緣BI
hH=[-1/16,1/4,-3/8,1/4,-1/16];%[-1,2,-1]/2;
for i=1:length(hH)
? ? for j=1:length(hH)
? ? ? ? hH2D(i,j)=hH(i)*hH(j);
? ? end
end
BI=imfilter(newBI,hH2D,'replicate'); ? ? %修正后的邊緣
BI=double(BI);
Irecover=newBI+L0;
for i=1:H
? ? for j=1:W
? ? ? ? if Irecover(i,j)<0
? ? ? ? ? ? Irecover(i,j)=0;
? ? ? ? else if Irecover(i,j)>255
? ? ? ? ? ? ? ? Irecover(i,j)=255;
? ? ? ? ? ? end
? ? ? ? end
? ? end
end
%%
EP1D=[-0.15,0.25,0.7,0.25,-0.15];
for i=1:length(EP1D)
? ? for j=1:length(EP1D)
? ? ? ? EP2D(i,j)=EP1D(i)*EP1D(j);
? ? end
end
Irepro = imfilter(Irecover,EP2D,'replicate');
figure,imshow(uint8(B),[]);
title('原圖');
figure,imshow(uint8(Irecover),[]);
title(['高頻非線性增強(qiáng)后的圖像']);
figure,imshow(uint8(Irepro),[]);
title(['非線性增強(qiáng)后再補(bǔ)償?shù)膱D像']);
3.運(yùn)行結(jié)果
?
?文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-517429.html
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-517429.html
到了這里,關(guān)于13.1 非線性變化的圖像增強(qiáng)和補(bǔ)償——濾波器對(duì)圖像作增強(qiáng)提高視覺(jué)質(zhì)量(matlab程序)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!