📄 iblockrec1.m
字号:
IR(mi+2,nj+2)=IR(mi+2,nj+4);
IR(mi+2,nj+3)=IR(mi+2,nj+4);
% A1=img1(:);
% Fmin=min(A1);
% Fmax=max(A1);
Fmin=0;
Fmax=255;
for i=1:2
for u=1:a
for v=1:a
if r(u,v,i)<Fmin
r(u,v,i)=Fmin;
elseif r(u,v,i)>Fmax
r(u,v,i)=Fmax;
else
r(u,v,i)=r(u,v,i);
end
end
end
end
% find projection operator p3
switch line_dom
case 'H'
%find f vector
i=1;
f(i,:)=R(a,:,i); %[R(u,v,i) R(u,y1+1,i) R(x1,y1+2,i) R(x1,y1+3,i)];
g(i,:)=R(a-1,:,i);
h(i,:)=f(i,:)-g(i,:);
i=i+1;
f(i,:)=R(1,:,i);
g(i,:)=R(2,:,i);
h(i,:)=f(i,:)-g(i,:);
% find Alpha
i=1;
j=1;
v=y-1;
for u=x-2:x+a+1
fun(i,j)=img1(u,v)-img1(u,v-1);
j=j+1;
end
Al(i)=max(fun(i,:));
i=i+1;
j=1;
v=y+a+1;
for u=x-2:x+a+1
fun(i,j)=img1(u,v)-img1(u,v-1);
j=j+1;
end
Al(i)=max(fun(i,:));
% apply P3 operator
for i=1:2
for j=1:a
if h(i,j) < -1*(Al(i))
f(i,j)=g(i,j)-Al(i);
elseif h(i,j) > Al(i)
f(i,j)=g(i,j)+Al(i);
else
f(i,j)=f(i,j);
end
end
end
%Restore the recovery vector
i=1;
u=a;
for v=1:a;
R(u,v,i)=f(i,v);
end
i=i+1;
u=1;
for v=1:a
R(u,v,i)=f(i,v);
end
case 'V'
i=1;
f(i,:)=R(:,a,i);
g(i,:)=R(:,a-1,i);
h(i,:)=f(i,:)-g(i,:);
i=i+1;
f(i,:)=R(:,1,i);
g(i,:)=R(:,2,i);
h(i,:)=f(i,:)-g(i,:);
% find Alpha
i=1;
j=1;
u=x-1;
for v=y-2:y+a+1
fun(i,j)=img1(u,v)-img1(u-1,v);
j=j+1;
end
Al(i)=max(fun(i,:));
i=i+1;
j=1;
u=x+a+1;
for v=y-2:y+a+1
fun(i,j)=img1(u,v)-img1(u-1,v);
j=j+1;
end
Al(i)=max(fun(i,:));
for i=1:2
for j=1:a
if h(i,j) < -1*(Al(i))
f(i,j)=g(i,j)-Al(i);
elseif h(i,j) > Al(i)
f(i,j)=g(i,j)+Al(i);
else
f(i,j)=f(i,j);
end
end
end
i=1;
v=a;
for u=1:a;
R(u,v,i)=f(i,u);
end
i=i+1;
v=1;
for u=1:a
R(u,v,i)=f(i,u);
end
end % end of switch statement
end % end of iteration
% p4 operator
switch line_dom
case 'H'
y1=y2;
x1=x2-(a-1);
if rec==1
x1=x2-(a-1);
elseif rec==2
x1=x2-(a-2);
elseif rec==3
x1=x2-(a-3);
% elseif rec==4
% x1=x2-(a-4);
end
x1=x1+(a-1);
u=a;
for v=0:a-1
img1(x1,y1+v)=R(u,v+1,1);
end
x1=x2+(a-1);
if rec==1
x1=x2+(a-1);
elseif rec==2
x1=x2+(a-2);
elseif rec==3
x1=x2+(a-3);
% elseif rec==4
% x1=x2+(a-4);
end
u=1;
for v=0:a-1
img1(x1,y1+v)=R(u,v+1,2);
end
case 'V'
x1=x2;
y1=y2-(a-1);
if rec==1
y1=y2-(a-1);
elseif rec==2
y1=y2-(a-2);
elseif rec==3
y1=y2-(a-3);
% elseif rec==4
% y1=y2-(a-4);
end
y1=y1+(a-1);
v=a;
for u=0:a-1
img1(x1+u,y1)=R(u+1,v,1);
end
y1=y2+(a-1);
if rec==1
y1=y2+(a-1);
elseif rec==2
y1=y2+(a-2);
elseif rec==3
y1=y2+(a-3);
% elseif rec==4
% y1=y2+(a-4);
end
v=1;
for u=0:a-1
img1(x1+u,y1)=R(u+1,v,2);
end
end
end
i=1;
y1=y+(a/2)-1;
for x1=x:(x+a-1)
e(i)=img1(x1,y1)-img1(x1,y1+1);
i=i+1;
end
beta=max(abs(e));
%apply the function
i=1;
y1=y+(a/2)-1;
for x1=x:(x+a-1)
if h(1,i) < -beta
img1(x1,y1)= (img1(x1,y1)+img1(x1,y1+1))/(2+beta);
elseif h(1,i) >beta
if 2-beta ~=0
img1(x1,y1)=(img1(x1,y1)+img1(x1,y1+1))/(2-beta);
end
else
img1(x1,y1)=img1(x1,y1);
end
i=i+1;
end
i=1;
y1=y+(a/2);
for x1=x:(x+a-1)
if h(1,i) < -beta
if 2-beta ~=0
img1(x1,y1)= (img1(x1,y1)+img1(x1,y1+1))/(2-beta);
end
elseif h(1,i) >beta
img1(x1,y1)=(img1(x1,y1)+img1(x1,y1+1))/(2+beta);
else
img1(x1,y1)=img1(x1,y1);
end
i=i+1;
end
xy=IR;
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -