?? fixlianghua.m
字號:
clear;clc
o=imread('lena256.jpg');
N=10;
RM=32;CN=32;
figure
imshow(o)
o=double(o);
w=[1 0;0 1];
for i=1:4
w=[w w;w w];
end
[CA1,CH1,CV1,CD1] = DWT2(o,'haar');
CA1=round(CA1);
CH1=round(CH1);
CV1=round(CV1);
CD1=round(CD1);
[CA2,CH2,CV2,CD2] = DWT2(CA1,'haar');
CA2=round(CA2);
CH2=round(CH2);
CV2=round(CV2);
CD2=round(CD2);
[CA3,CH3,CV3,CD3] = DWT2(CA2,'haar');
CA3=round(CA3);
CH3=round(CH3);
CV3=round(CV3);
CD3=round(CD3);
for i=1:RM
for j=1:CN
Range=[CH3(i,j),CV3(i,j),CD3(i,j)];
[Rank CLoc]=sort(Range);
NewRange=Rank(1):(Rank(3)-Rank(1))/(N-1):Rank(3);
if w(i,j)==0
Diff=abs(NewRange(2:2:N)-Rank(2)*ones(1,floor(N/2)));
[Rank Loc]=sort(Diff);
if CLoc(2)==1
CH3(i,j)=NewRange(2*Loc(1));
CH3(i,j)=round(CH3(i,j));
elseif CLoc(2)==2
CV3(i,j)=NewRange(2*Loc(1));
CV3(i,j)=round(CV3(i,j));
else
CD3(i,j)=NewRange(2*Loc(1));
CD3(i,j)=round(CD3(i,j));
end
else
Diff=abs(NewRange(1:2:N)-Rank(2)*ones(1,ceil(N/2)));
[Rank Loc]=sort(Diff);
if CLoc(2)==1
CH3(i,j)=NewRange(2*Loc(1)-1);
CH3(i,j)=round(CH3(i,j));
elseif CLoc(2)==2
CV3(i,j)=NewRange(2*Loc(1)-1);
CV3(i,j)=round(CV3(i,j));
else
CD3(i,j)=NewRange(2*Loc(1)-1);
CD3(i,j)=round(CD3(i,j));
end
end
end
end
CA2=IDWT2(CA3,CH3,CV3,CD3,'haar');
CA2=round(CA2);
CA1=IDWT2(CA2,CH2,CV2,CD2,'haar');
CA1=round(CA1);
r=IDWT2(CA1,CH1,CV1,CD1,'haar');
r=round(r);
r=uint8(r);
figure
imshow(r)
r=double(r);
[CA1,CH1,CV1,CD1] = DWT2(r,'haar');
CA1=round(CA1);
CH1=round(CH1);
CV1=round(CV1);
CD1=round(CD1);
[CA2,CH2,CV2,CD2] = DWT2(CA1,'haar');
CA2=round(CA2);
CH2=round(CH2);
CV2=round(CV2);
CD2=round(CD2);
[CA3,CH3,CV3,CD3] = DWT2(CA2,'haar');
CA3=round(CA3);
CH3=round(CH3);
CV3=round(CV3);
CD3=round(CD3);
for i=1:RM
for j=1:CN
Range=[CH3(i,j),CV3(i,j),CD3(i,j)];
[Rank CLoc]=sort(Range);
NewRange=Rank(1):(Rank(3)-Rank(1))/(N-1):Rank(3);
Diff1=min(abs(NewRange(2:2:N)-Rank(2)*ones(1,floor(N/2))));
Diff2=min(abs(NewRange(1:2:N)-Rank(2)*ones(1,ceil(N/2))));
if Diff1<Diff2
wr(i,j)=0;
else
wr(i,j)=1;
end
end
end
cha=wr-w
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -