Código de algoritmo de procesamiento de imágenes digitales para escalado y rotación de imágenes
borrar?todo;
I?=?imread('lena.bmp');
figura;?imshow(I);title('original Imagen');
[m, n]=tamaño(I);
?Reducir?Método de proximidad
M?=?0.5;Ampliación< / p>
Nuevo tamaño de imagen
m1=m*M; n1=n*M;
************** ** ***********************************
para?i=1 : m1
para?j=1:n1;
J(i,j)=I(redondo(i/M), redondo(j/M));
p>
fin
fin
*************************** ********* *************************
figura;?imshow(J);título( 'reducir imagen');
?Magnificación?Método de interpolación bilineal
I2?=?double(I);
N?=?1.5;
Nuevo tamaño de imagen
m2=m*N; n2=n*N;
J2=zeros(m2,n2);
para?i= 1:m2 para?j=1:n2
x=i/N
y=j/N
u; =piso(x);
v=piso(y);
a=x-u;
b=y-v;
si ?u 2lt;=m ?amp;?v 2lt;=n
J2(i,j)=I2(u 1,v 1)*(1-a)*(1-b) I2 (u 2,v 1 )*a*(1-b) I2(u 1, v 2)*(1-a)*b I2(u 2, v 2)*a*b;
fin fin
fin
J2?=?uint8(J2);
figura; imshow(J2);
?Rotación?
R?=?45*pi/180;Ángulo de rotación
I?=?double(I);
Nuevo tamaño de imagen
p>
m2?=?ceil(m*cos(R) n*sin(R));
n2?=?ceil(m *sin(R) n*cos(R) );
u0=?m*sin(R); Importe de traducción
Matriz de transformación
T= [cos(R),sin(R); -sin(R), cos(R)];
L?=?zeros(m2,n2);
para? u=1:n2 for?v=1: m2
Las nuevas coordenadas de la imagen se transforman en las coordenadas de la imagen original x e y
temp?=?T*([u; v]-[u0;0]);
x=?temp(1);
y=?temp(2);
if?xgt ;=1?amp;?xlt;=m?amp ;?ygt;=1?amp;?ylt;=nsi las xey transformadas están dentro del rango de la imagen original
x_low=floor(x );
x_up=ceil( x);
y_low=piso(y);
y_up=ceil
(y);
Interpolación bilineal, ¿p1 a p4 son cuatro puntos alrededor de (x, y)?
p1=I(x_low, y_low);
p2=I(x_arriba, y_bajo);
p3=I(x_bajo, y_bajo);
p4=I(x_arriba, y_arriba);
s= x-x_low;
t=y-y_low;
L(u, v)=(1-s)*(1-t)*p1 (1 -s)* t*p3 (1-t)*s*p2 s*t*p4;
fin fin
fin
L=uint8( L);
figura; imshow(L);