Código fuente de la matriz Niushi
Plataforma experimental
PC X86, Windows XP sp2, Matlab 7.1
Adquisición de recursos
Los recursos de imagen provienen de /subir archivos/ 2006-3/327845185.jpg.
El funcionamiento es muy sencillo, basta con prestar atención a la distribución uniforme de los puntos seleccionados para aumentar su representatividad. Seleccionado, Archivo -> Guardar puntos en el espacio de trabajo Guarda los datos en el espacio de trabajo. Workspace agrega inmediatamente dos matrices N×2 más (donde n es el logaritmo de los puntos coincidentes seleccionados), a saber, input_points y base_points, como se muestra en la siguiente figura:
Puntos de entrada=
119.5185 193.5926
168.9012 242.9753
105.9383 140.5062
459.0247 131.8642
313.3457 257.7901
292.358 16 5.1975< / p>
276.3086 33.0988
283.7160 380.0123
76.3086 297.2963
135.5679 83.7160
360.2593 313.3457
94.8272 446.6790
70.1358 354.0864
181.2469 361.4938
381.2469 460.2593
252.8519 433.0988
3. -Método de correlación para ajustar los puntos coincidentes seleccionados.
Este paso es opcional. Ejecute el código:
3. Utilice la correlación cruzada para ajustar los puntos de control.
input_points_corr = CP corr(input_points, base_points, input, base); punto optimista
Input_points_corr es el punto coincidente correspondiente a la imagen de entrada optimizada.
4. Calcular los parámetros de la fórmula de conversión.
Utilizando cp2tform, seleccione el tipo de conversión (es decir, método de registro) y calcule los parámetros de conversión. Simplemente elija uno de los siguientes.
4. Especifique el tipo de transformación que se utilizará e infiera sus parámetros
(1) Puntos no ajustados
Tlinear = cp2tform(input_points, base_points, 'Forma colineal lineal');
Taffine = cp2tform(input_points, base_points, 'affine');
tprojective = CP 2 tform(input_points, base_points, 'projective');
p>
tpolinomio 2 = CP 2 tform(entrada _ puntos, puntos_base, 'polinomio', 2
tpolinomio 3 = CP 2 tforma(entrada _ puntos, puntos_base); , 'polinomio', 3 );
tpolinomio 4 = CP 2 tform(entrada _ puntos, base_points, 'polinomio', 4);
tpiecewise = CP 2 tform(entrada _ puntos, base_points, 'puntos' Segmento lineal');
Tlwm = cp2tform(input_points, base_points, 'lwm');
(2) Puntos de ajuste
ft lineal = CP 2 tform (input_points_corr, base_points, 'lineal conforme');
fTaffine = CP 2 tform(input_points_corr, base_points, 'affine');
ft proyectivo = CP 2 tform(input_points_corr, base_points, 'projective');
ft polinomio 2 = CP 2 tform(input_points_corr, base_points, 'polynomial', 2);
ft polinomio 3 = CP 2 tform(entrada _ puntos _ corr, base_points, 'Polinomio', 3);
ft polinomio 4 = CP 2 tform(entrada _ puntos _ corr, base_points, 'polinomio', 4)
pie pieza = CP 2 tform(input _ puntos _ corr, base_points, 'piecewise linear'
ftl WM = CP 2 tform(input_points_corr, base_points, 'lwm'); );
Las variables como Tlinear son una estructura de datos llamada TFORM, que no ha sido estudiada detenidamente:
t linear=
ndims_in: 2
ndims_out: 2
forward_fcn: @fwd_affine
inverse_fcn: @inv_affine
tdata: [estructura 1x1]
5. Transforma la imagen.
5. Transforma imágenes no registradas para alinearlas.
Título ('Método polinómico de registro de imágenes');
Gráfico de rama (2, 2, 1);
imshow (base
);Título("Imagen básica");
Subtrama (2, 2, 2);
imshow(entrada);
Título( "Entrada image");
Gráfico de rama (2, 2, 3);
imshow(imtransform(input, tpolynomial 2));
Título ( "Registrado image");
Subtrama (2, 2, 4);
imshow(imtransform(input, ft polinomio 2));
Título ('Registrar imagen (punto de ajuste)');
Los resultados son los siguientes:
Subir archivo
Resumen
1.imagen y muestro la diferencia. El primero utiliza matrices de imágenes bidimensionales como base y entrada como imágenes de índice y selecciona colores en la biblioteca de índices del sistema.
2. Elija un método adecuado para establecer los parámetros de conversión. Cuanto más complejo sea el algoritmo, mejor. Debemos referirnos a factores de imagen (factores de degradación).
3. Los beneficios del método de correlación cruzada aún no se han visto.
4. Utilice cpselect para seleccionar puntos coincidentes. cpselect puede devolver un identificador GUI. Se implementan las siguientes funciones: cuando se abre la GUI de cpselect, el programa del archivo M deja de ejecutarse y continúa ejecutándose después del cierre. Como no entiendo la programación GUI, ni siquiera pude intentar usar las funciones de espera y pausa...