📄 q144.m
字号:
%question1(1)
clear;
OriginalPicture1=imread('RGB1.tif','tif');
OriginalPicture1=double(OriginalPicture1);
P1=RtoY(OriginalPicture1);
P1(:,:,2)=0;P1(:,:,3)=0;
RGB1=YtoR(P1);
figure;
image(RGB1/265);
OriginalPicture2=imread('RGB2.tif','tif');
OriginalPicture2=double(OriginalPicture2);
P2=RtoY(OriginalPicture2);
P2(:,:,2)=0;P2(:,:,3)=0;
RGB2=YtoR(P2);
figure;
image(RGB2/256);
%question1(2)
sad=sum(sum(abs(P1(:,:,1)-P2(:,:,1))))
%question1(5)
XSize=size(P1,1);
YSize=size(P1,2);
floatpoint=0;
predictionYbr=P1;
dm=128;
final_x=0;final_y=0;
positionsearch=[-1 1;-1 -1;1 1;1 -1;0 0;0 -1;0 1;-1 0;1 0];
for i=0:XSize/16-1;
for j=0:YSize/16-1
s=dm/2;
SADMIN=inf;
m=i*16;
n=j*16;
if s>=1
for k=1:5
X=min(max(m+s*positionsearch(k,1),0),XSize-16);
Y=min(max(n+s*positionsearch(k,2),0),YSize-16);
SAD=sum(sum(sum(abs(P1(i*16+1:i*16+16,j*16+1:j*16+16,1)-P2(X+1:X+16,Y+1:Y+16,1)))));
floatpoint=floatpoint+1;
if SAD< SADMIN
SADMIN=SAD;
center_x=X;
center_y=Y;
end
end
if s~=1
m=center_x;
n=center_y;
end
s=s/2;
end
%when s=1
SADMIN1=inf;
%center
if center_x==min(max(m+2*s*positionsearch(5,1),0),XSize-16)¢er_y==min(max(n+2*s*positionsearch(5,2),0),YSize-16)
final_x=X;
final_y=Y;
predictionYbr(final_x+1:final_x+16,final_y+1:final_y+16,1)=P1(i*16+1:i*16+16,j*16+1:j*16+16,1);
end
%topleft
if center_x==min(max(m+2*s*positionsearch(2,1),0),XSize-16)¢er_y==min(max(n+2*s*positionsearch(2,2),0),YSize-16)
for k=1:5
X=min(max(center_x+1*positionsearch(k,1),0),XSize-16);
Y=min(max(center_y+1*positionsearch(k,2),0),YSize-16);
SAD1=sum(sum(sum(abs(P1(i*16+1:i*16+16,j*16+1:j*16+16,1)-P2(X+1:X+16,Y+1:Y+16,1)))));
floatpoint=floatpoint+1;
if SAD1< SADMIN1
SADMIN1=SAD1;
final_x=X;
final_y=Y;
end
end
end
predictionYbr(final_x+1:final_x+16,final_y+1:final_y+16,1)=P1(i*16+1:i*16+16,j*16+1:j*16+16,1);
%buttomright
if center_x==min(max(m+2*s*positionsearch(3,1),0),XSize-16)¢er_y==min(max(n+2*s*positionsearch(3,2),0),YSize-16)
for k=1:5
X=min(max(center_x+1*positionsearch(k,1),0),XSize-16);
Y=min(max(center_y+1*positionsearch(k,2),0),YSize-16);
SAD1=sum(sum(sum(abs(P1(i*16+1:i*16+16,j*16+1:j*16+16,1)-P2(X+1:X+16,Y+1:Y+16,1)))));
floatpoint=floatpoint+1;
if SAD1< SADMIN1
SADMIN1=SAD1;
final_x=X;
final_y=Y;
end
end
end
predictionYbr(final_x+1:final_x+16,final_y+1:final_y+16,1)=P1(i*16+1:i*16+16,j*16+1:j*16+16,1);
%buttomleft
if center_x==min(max(m+2*s*positionsearch(1,1),0),XSize-16)¢er_y==min(max(n+2*s*positionsearch(1,2),0),YSize-16)
for k=5:9
X=min(max(center_x+1*positionsearch(k,1),0),XSize-16);
Y=min(max(center_y+1*positionsearch(k,2),0),YSize-16);
SAD1=sum(sum(sum(abs(P1(i*16+1:i*16+16,j*16+1:j*16+16,1)-P2(X+1:X+16,Y+1:Y+16,1)))));
floatpoint=floatpoint+1;
if SAD1< SADMIN1
SADMIN1=SAD1;
final_x=X;
final_y=Y;
end
end
end
predictionYbr(final_x+1:final_x+16,final_y+1:final_y+16,1)=P1(i*16+1:i*16+16,j*16+1:j*16+16,1);
%topright
if center_x==min(max(m+2*s*positionsearch(4,1),0),XSize-16)¢er_y==min(max(n+2*s*positionsearch(4,2),0),YSize-16)
for k=5:9
X=min(max(center_x+1*positionsearch(k,1),0),XSize-16);
Y=min(max(center_y+1*positionsearch(k,2),0),YSize-16);
SAD1=sum(sum(sum(abs(P1(i*16+1:i*16+16,j*16+1:j*16+16,1)-P2(X+1:X+16,Y+1:Y+16,1)))));
floatpoint=floatpoint+1;
if SAD1< SADMIN1
SADMIN1=SAD1;
final_x=X;
final_y=Y;
end
end
end
predictionYbr(final_x+1:final_x+16,final_y+1:final_y+16,1)=P1(i*16+1:i*16+16,j*16+1:j*16+16,1);
end
end
RGB5=YtoR(predictionYbr);
RGB5(:,:,1)=min(255,max(0,RGB5(:,:,1)));
RGB5(:,:,2)=min(255,max(0,RGB5(:,:,2)));
RGB5(:,:,3)=min(255,max(0,RGB5(:,:,3)));
figure;
image(RGB5/256)
sadtotal2=sum(sum(abs(predictionYbr(:,:,1)-P2(:,:,1))))
%question1(6)
floatpoint=floatpoint*16^2*2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -