Red de conocimiento informático - Aprendizaje de código fuente - Código de algoritmo de procesamiento de imágenes digitales para escalado y rotación de imágenes

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);