Menú
Gratis
Registro
hogar  /  Navegantes/ Métodos y algoritmos para el procesamiento de imágenes. Implementación del sistema

Métodos y algoritmos para el procesamiento de imágenes. Implementación del sistema

Representación de imagen

Hay dos tipos principales de representaciones de imágenes: vector y raster.

En la representación vectorial, la imagen se describe mediante un conjunto de líneas (vectores), que contienen las coordenadas de los puntos inicial y final, la curvatura de las líneas y otras características geométricas, las reglas para construir varias áreas y características de color también son descrito. En otras palabras, una representación raster requiere la formación de algún modelo matemático. Por lo tanto, la representación vectorial se utiliza principalmente en la resolución de problemas de síntesis de imágenes. Aunque algunos algoritmos de reconocimiento de imágenes requieren una representación vectorial para su trabajo, la cual debe obtenerse a partir de la imagen original.

Una imagen ráster es una o más matrices que describen la distribución espacial de las características de la imagen en una determinada cuadrícula de coordenadas cartesianas. En este caso, la imagen se construye a partir de un conjunto de puntos y tiene una estructura raster. El elemento principal de una representación de trama de una imagen es un píxel (abreviatura de la frase "elementos de imagen" - elementos de imagen), que tiene coordenadas en un sistema de coordenadas de trama y algunos atributos (color, brillo, transparencia, etc.). El número de píxeles a lo largo de las coordenadas X e Y (horizontal y verticalmente) establece la resolución (dimensión) de la representación de la imagen. El color de un píxel viene dado por su profundidad, que es el número de bits necesarios para especificar cualquier color.

Las imágenes ráster, según los métodos para configurar el color de un píxel y las propiedades de la imagen original, se dividen en:

Binario

Semitono

Paleta

a todo color

En la representación binaria, el color de un píxel puede ser blanco o negro y se codifica en un bit. La imagen es una matriz. Cada elemento I (i, j) de esta matriz tiene un valor de 0 o 1, donde i es el número de fila y es el número de columna j del elemento correspondiente al píxel dado (Fig. 1).

En las imágenes en escala de grises, los píxeles representan valores de brillo correspondientes a tonos de gris. Los índices de matriz que describen la imagen de medios tonos definen la posición del píxel en el ráster y el valor del elemento de matriz

- establece su brillo I (i, j) (Fig. 2).

Las imágenes de la paleta se describen mediante dos matrices (Fig. 3). Uno almacena los valores de los índices, que especifican el acceso a la fila de la matriz de la paleta. La matriz de la paleta es un mapa de colores. Contiene 3 grupos de columnas - correspondientes a los colores rojo "R", verde "G" y azul "B". Establecen el color del píxel correspondiente.

Una paleta es una matriz Nc 3, donde Nc es el número de colores.

Algoritmos de preprocesamiento de imágenes

Las imágenes a todo color están construidas en formato RGB y representan tres matrices R (i, j), G (i, j), B (i, j). Los elementos correspondientes de cada matriz contienen los valores de intensidad de los colores rojo, verde y azul para el píxel especificado por los índices de la matriz. Así, una imagen a todo color no tiene mapa de color y el color de cada píxel está representado por tres números tomados de las matrices correspondientes (Fig. 4).

El formato de los números en las matrices puede ser entero o punto flotante. El primer caso se refiere a las llamadas imágenes digitalizadas obtenidas mediante diversos dispositivos: escáneres, cámaras digitales, cámaras de televisión, etc. Es en este formato que la información sobre las imágenes se almacena en archivos gráficos estándar.

La segunda opción se utiliza para la representación interna de imágenes durante su procesamiento. En este caso, es conveniente normalizar los datos de intensidad a un rango, por ejemplo, al rango , y realizar varios cálculos con números flotantes, y luego convertir el resultado a la forma entera original. Este método permite reducir los errores de cálculo y mejorar la precisión del resultado del procesamiento.

Para imágenes a todo color, una de las opciones es el número máximo de colores que se pueden representar en ese formato. Las imágenes más utilizadas tienen 16, 256, 65536 (color de alta densidad) y 10,7 millones de colores (color verdadero).

Algoritmos de preprocesamiento de imágenes

0 0 0 0 1 1 1 0 0

120 122 125 128 115 117 118

1 0 0 0 1 1 1 1 0

119 121 124 125 128 130 133

1 1 0 0 1 1 0 0 1

122 122 124 123 127 126 128

120 121 123 125 127 125 126

1 1 1 0 1 1 0 0 0

118 110 109 108 108 109 110

0 0 1 0 0 1 0 0 1

Algoritmos de preprocesamiento de imágenes

Matriz de índice

31 15 03 09

matriz de paleta

Algoritmos de preprocesamiento de imágenes

Una imagen a todo color se puede representar no solo en formato RGB, sino también utilizando otros sistemas de color.

En el sistema HSB, el color está representado por las siguientes características de color: Hue - tono de color;

Saturación - saturación; Brillo - brillo.

Se cree que este sistema de color corresponde a las peculiaridades de la percepción humana del color.

En el sistema LAB, el color se considera como una combinación de brillo (luminosidad) y dos valores de crominancia independientes, que determinan el color verdadero de un píxel. Cromaticidad A: el componente de color se selecciona en el rango de magenta a verde. Cromaticidad B: el segundo componente de color se selecciona del rango de amarillo a azul.

Existen otros sistemas de representación del color. Naturalmente, todos están conectados y de una representación se puede obtener otra. La variedad de sistemas de color se debe a las tareas resueltas con su ayuda. Por ejemplo, es más conveniente realizar la corrección de color en el sistema LAB, para reproducir la imagen en la pantalla del monitor en el sistema RGB, es mejor imprimir,

Algoritmos de preprocesamiento de imágenes

utilizando la representación CMYK. Sin embargo, en cualquier caso, al procesar imágenes y reconocerlas, trabajan con una representación raster de imágenes que contienen una o más matrices.

Clasificación de los algoritmos de preprocesamiento

Los algoritmos de preprocesamiento de imágenes se dividen en diferentes grupos según la función de clasificación. Todos los algoritmos de preprocesamiento deben mejorar la calidad de las imágenes en algún sentido o convertirlas a una forma que sea más conveniente para el procesamiento posterior.

Los algoritmos destinados a mejorar la reproducción del color de una imagen se denominan algoritmos de corrección de color. Este grupo también incluye algoritmos que trabajan con imágenes en escala de grises que cambian sus características de brillo y contraste.

Los algoritmos destinados a procesar las características espaciales de las imágenes se denominan algoritmos. filtrado espacial. Este grupo incluye algoritmos de supresión de ruido, algoritmos de suavizado espacial y algoritmos de amplificación espacial, algoritmos para suprimir y amplificar frecuencias espaciales.

Los algoritmos que realizan operaciones geométricas en una imagen se denominan algoritmos de procesamiento geométrico. Éstas incluyen:

Algoritmos de preprocesamiento de imágenes

Recortar una imagen: selección de una determinada parte de una forma rectangular de la imagen original;

Redimensionamiento de imagen. Estos algoritmos utilizan varios métodos de interpolación para completar correctamente los píxeles que faltan en la imagen ampliada o recalcular los valores de los píxeles cuando se reduce la imagen.

Rotacion de imagen. Estos algoritmos giran la imagen original en un ángulo determinado, recalculando correctamente los valores de píxeles utilizando varios métodos de interpolación.

Los algoritmos que realizan transformaciones de un sistema de color a otro se denominan algoritmos de conversión de color. También incluyen algoritmos para convertir imágenes en color en escala de grises y algoritmos de binarización que convierten la imagen original en binaria.

Los algoritmos que seleccionan algunas áreas en la imagen original de acuerdo con varias condiciones, a menudo informales, se denominan algoritmos de segmentación. Un ejemplo de tal algoritmo puede ser, por ejemplo, un algoritmo que debe resaltar áreas de texto e información gráfica en una imagen de documento o un algoritmo que selecciona áreas en una imagen de texto que pertenecen a palabras individuales.

Algoritmos de preprocesamiento de imágenes

Algoritmos de filtrado espacial

El filtrado espacial de una imagen en forma matemática es una convolución discreta de una imagen discreta con alguna respuesta de impulso de un filtro espacial

Si (yo, j)

Im(i m , j n )h (m , n ), donde:

m N11 n N21

Im, Si matrices de las imágenes original y filtrada, h es la matriz de la respuesta al impulso del filtro,

N 11 , N 21 límites inferior y superior de las columnas de respuesta al impulso, N 12 , N 22 límites izquierdo y derecho de las filas de respuesta al impulso.

La matriz de respuesta al impulso se puede obtener calculando el filtro espacial a partir de establecer parámetros. Una gran cantidad de literatura sobre filtrado digital está dedicada a métodos para calcular filtros espaciales, por ejemplo. Para cálculos prácticos, puede utilizar paquetes matemáticos estándar, por ejemplo, el sistema "MATLAB" incluye el sistema de cálculo de filtros "Image Filter Design".

Tenga en cuenta que el filtrado también se puede realizar en el dominio de la frecuencia. En eso

Algoritmos de preprocesamiento de imágenes

En este caso, el orden de filtrado es el siguiente:

Convierta la imagen del dominio espacial al de frecuencia utilizando la transformada de Fourier discreta 2D

Realice la multiplicación por elementos de la matriz de frecuencia de la imagen por la matriz de frecuencia del filtro

El resultado obtenido se convierte a un dominio espacial utilizando la transformada de Fourier discreta bidimensional inversa.

Im(x, y)

Im(f x , f y )

Si (f x , f y ) Im (f x , f y ) H (f x , f y )

Si (fx, f y)

si (x, y).

El filtrado de imágenes en el dominio de la frecuencia rara vez se usa debido a la gran cantidad de cálculos. Sin embargo, este método de filtrado es ampliamente utilizado en cálculos teóricos en el análisis de opciones de procesamiento de imágenes. Te permite visualizar con bastante claridad qué tipo de filtrado se necesita. Por ejemplo, si necesita resaltar cambios bruscos en el brillo de la imagen, entonces es obvio que necesita usar filtros de paso alto. Por el contrario, si necesita deshacerse del ruido de baja frecuencia (circuitos temblorosos, picos individuales, etc.), entonces necesita usar filtros de paso bajo. Los parámetros de filtro específicos se seleccionan en función del análisis de frecuencia de la interferencia y las propiedades de la imagen original.

DIGITAL TRATAMIENTO SEÑALES

Tema 17. PROCESAMIENTO DE IMÁGENES

No hay nada más allá de la imaginación del hombre.

Tito Lucrecio. Filósofo y poeta romano. siglo primero antes de Cristo mi.

La imaginación es algo bueno. Pero para sacar el vagabundo del sótano, lavarlo, convertirlo en un Apolo, empacarlo en una caja de fósforos y enviárselo a un amigo. correo electrónico bien programa de gráficos lo hará mejor

Anatoly Pyshmintsev, geofísico de Novosibirsk de la Escuela de los Urales. siglo 20

Introducción.

1. Conceptos básicos. Representación grafica imágenes Representación del color en infografías. Modelo de color RGB. Sistema de color CIE XYZ.

2. Transformaciones geométricas de imágenes raster. Áreas y etapas de transformación. Muestreo. Serie de interpolación de recuperación de señal bidimensional. Distorsiones de frecuencia de las imágenes y su eliminación. Remuestreo de imágenes.

3. Filtrado de imágenes. Filtros de línea. Filtros de suavizado. Filtros de contraste. filtros de diferencia Convolución cíclica bidimensional. filtros no lineales. Filtrado de umbral. filtrado medio. Filtros extremos.

4. Compresión de imágenes. Algoritmos de codificación de longitud de repetición (RLE). Algoritmos de diccionario. Algoritmos de codificación estadística. Compresión de imagen con pérdida. Estimación de pérdida de imagen. Transformada de Fourier. Transformada wavelet.

INTRODUCCIÓN

El alcance de la investigación en el campo de la imagen digital está creciendo rápidamente. Esto se debe a que el procesamiento de imágenes es un procesamiento de señales multidimensionales y la mayoría de las señales en el mundo real son multidimensionales.


Una imagen en representación matemática es una señal bidimensional que transporta una gran cantidad de información. imagen en color 500 × 500 elementos es una matriz de varios cientos de miles de bytes. Es posible procesar dicha información solo mediante una organización racional de cálculos. Para tareas específicas de procesamiento de imágenes, puede utilizar formas efectivas procesamiento, teniendo en cuenta las características y limitaciones de esta tarea en particular. Pero si hablamos de procesamiento de imágenes para resolver una amplia clase de problemas, entonces es necesario destacar un conjunto de operaciones estándar a partir de las cuales se pueden construir algoritmos para resolver problemas arbitrarios. Estos incluyen transformaciones lineales, convolución 2D y transformadas discretas de Fourier 2D.

Pero en el procesamiento de imágenes, las transformaciones no lineales también se utilizan ampliamente. La peculiaridad de las imágenes es que los elementos individuales de la imagen están en cierta conexión con los elementos vecinos. Por lo tanto, la mayoría de los algoritmos de transformación de imágenes son de naturaleza local, es decir, procesan imágenes por grupos de elementos ubicados en la vecindad alrededor del dado. Las transformaciones lineales satisfacen la propiedad de localidad y permiten la construcción de algoritmos cuya complejidad computacional no depende mucho del tamaño de la vecindad cubierta. Se requieren las mismas propiedades para las transformaciones de imágenes no lineales. La clase de tales transformaciones incluye algoritmos, que se denominan algoritmos de filtrado de rango, basados ​​en el cálculo de estadísticas de imagen de rango local. Al calcular las estadísticas de clasificación y sus derivados, son posibles simplificaciones relacionadas con la redundancia de información de las imágenes. El algoritmo más conocido de esta clase es el algoritmo de filtrado mediano. Otros ejemplos de algoritmos de rango son los algoritmos de filtrado extremo que reemplazan el elemento de imagen analizado con un máximo o un mínimo en la vecindad. Otra propiedad de los algoritmos de clasificación es la adaptación local a las características de la imagen procesada y el potencial de su uso no solo para suavizar y eliminar el ruido, sino también para la extracción de características cuando reconocimiento automático imágenes

En el procesamiento de imágenes, los métodos de procesamiento de señales unidimensionales son ampliamente utilizados, si es posible generalizarlos a señales multidimensionales. Al mismo tiempo, hay que tener en cuenta que los métodos matemáticos para describir sistemas multidimensionales no están completos. Los sistemas multidimensionales tienen un gran número de grados de libertad y su diseño adquiere una flexibilidad que no es propia de los sistemas unidimensionales. Al mismo tiempo, los polinomios multidimensionales no se pueden descomponer en factores simples, lo que complica el análisis y la síntesis de sistemas multidimensionales.

17.1. Conceptos básicos

Representación gráfica de imágenes. Para representar información gráfica en un plano bidimensional (pantalla de monitor), se utilizan dos enfoques: raster y vector.

Con el enfoque vectorial, la información gráfica se describe como un conjunto de objetos geométricos abstractos: líneas rectas, segmentos, curvas, rectángulos, etc. La descripción vectorial supone un conocimiento a priori sobre la estructura de la imagen.

Los gráficos de trama operan en imágenes arbitrarias en forma de mapas de bits. Un ráster es una descripción de una imagen en un plano dividiéndola (muestreándola) en elementos idénticos a lo largo de una cuadrícula regular y asignando a cada elemento su propio color y cualquier otro atributo. El raster más simple es rectangular, el más económico en términos de número de muestras para transmitir imágenes es hexagonal. Matemáticamente, un ráster es una aproximación constante por partes en el plano de una función de imagen continua.

Un elemento de un ráster se llama píxel. Identificación de píxeles estándar:


f(i, j) = (A(i, j),C(i, j)), (17.1.1)

donde A(i, j) Ì R2 - área de píxel, C(i, j) Î C - atributo de píxel (generalmente color). Los dos atributos más utilizados son:

C(i, j) = I(i, j) - intensidad (brillo) de un píxel;

C(i, j) = (R(i, j), G(i, j), B(i, j)) - atributos de color en el modelo de color RGB.

En forma matricial:

Mij ​​= (Aij, Cij).

Al muestrear imágenes continuas, los valores Aij se pueden definir de dos formas, ya sea como los valores de los puntos Aij = (i, j) para los cuales se definen los atributos Cij, o como los valores de los cuadrados Aij = (i, i+1) × (j, j+1) o cualquier otra forma, con la definición de Cij por los valores medios dentro de esta forma (Fig. 17.1.1).

En la práctica, por regla general, X e Y son conjuntos limitados de números enteros no negativos de un ráster cuadrado o rectangular con una relación de aspecto (relación de aspecto) del ancho al alto del ráster, que se escribe, por ejemplo, como "4:3".

Representación del color en infografías. El concepto de color se basa en la percepción por parte del ojo humano de ondas electromagnéticas en un determinado rango de frecuencia. Percibido por nosotros luz tiene longitudes de onda λ de 400 nm (violeta) a 700 nm (rojo). La descripción del flujo de luz puede ser su función espectral I(λ). La luz se llama monocromática si su espectro tiene solo una longitud de onda específica.

Hay dos tipos de receptores en la retina: bastones y conos. La sensibilidad espectral de los palos (Fig. 17.1.2) es directamente proporcional al brillo de la luz incidente. Los conos se dividen en tres tipos, cada uno de los cuales tiene cierta sensibilidad en rangos limitados con máximos para los colores rojo, verde y azul, y pierden bruscamente su sensibilidad en la oscuridad. La susceptibilidad del ojo al azul es mucho menor que a los otros dos. Una propiedad importante de la percepción humana de la luz es la linealidad al agregar colores con diferentes longitudes de onda.

modelo de color RGB (Rojo, verde, azul - rojo, verde, azul) en gráficos por computadora es actualmente el más común. En este modelo, la función espectral se representa como la suma de las curvas de sensibilidad para cada tipo de cono con coeficientes de peso no negativos (normalizados de 0 a 1), que se denotan como R, G y B. El modelo se caracteriza por la propiedad de la aditividad para obtener nuevos colores. Por ejemplo, la codificación de funciones espectrales:

Negro: fblack = 0, (R, G, B) = (0,0,0);

Violeta fvioleta = fred + fazul, (R, G, B) = (1,0,1);

Blanco fblanco = fred + fverde + fazul, (R, G, B) = (1,1,1).

El espacio de color tridimensional del modelo RGB se muestra en la fig. 17.1.3. Debido a las peculiaridades de la percepción de la luz por parte de los receptores, no todos los colores visibles para los humanos son representables en este modelo. Sin embargo, la proporción de colores reproducibles es mucho mayor que la proporción de colores que no se pueden representar en este modelo.

Sistema de color CIE XYZ. El estándar internacional de representación del color CIE (CIE - Commission Internationale de l "Eclairage) fue adoptado en 1931 por la Comisión Internacional de Iluminación. Define tres funciones básicas ρX (λ), ρY (λ), ρZ (λ), dependiendo de la longitud de onda, cuyas combinaciones lineales con coeficientes no negativos (X, Y y Z) producen todos los colores visibles para los humanos. Estas funciones tienen en cuenta la percepción relativa de la intensidad de la luz por parte de los receptores del ojo. En el espacio tridimensional, el CIE El sistema de color forma un cono en el primer cuadrante y se utiliza para mostrar imágenes en color de alta calidad.

17.2. Transformaciones geométricas de mapas de bits

Áreas y etapas de transformación. Las imágenes se pueden dividir en texturales y detalladas. En las imágenes de textura, todas las muestras (elementos) llevan información (una imagen en una pantalla de TV). Una imagen detallada es una imagen en la que se pueden distinguir los objetos que interfieren, el fondo y los objetos útiles.

Hay tres grupos principales de algoritmos de procesamiento de imágenes en las computadoras:

1. Procesamiento primario (preliminar) de imágenes con el fin de restaurar, limpiar el ruido aleatorio, mejorar la calidad, corregir las distorsiones geométricas de los sistemas ópticos (desenfoque, aberraciones, etc.).

2. Descripción de imágenes, reconocimiento de patrones. Se lleva a cabo para determinar los parámetros de los detalles de la imagen e incluye: encontrar áreas de la imagen que sean uniformes en términos de iluminación y color, resaltar signos de la forma de las imágenes, determinar las coordenadas de puntos especiales de objetos, etc.

3. Codificación eficiente para reducir la cantidad de transmisión y almacenamiento.

La mayoría de los métodos de preprocesamiento se basan en el uso de filtros lineales espacialmente invariantes (LPI). Los algoritmos lineales se realizan utilizando análogos 2D de filtros 1D FIR e IIR. Se pueden utilizar, por ejemplo, al implementar filtros para reducir el nivel de ruido en las imágenes.

Los filtros FIR se implementan utilizando el método de convolución. La ventaja de los filtros 2D FIR es la visibilidad, la simplicidad y la estabilidad absoluta. Los filtros IIR se implementan mediante ecuaciones en diferencias y transformadas z. Son más rápidos que los filtros FIR, pero pueden ser inestables. La síntesis de filtros IIR bidimensionales difiere de la síntesis de filtros unidimensionales, ya que para una función bidimensional no es posible seleccionar explícitamente los polos.

También se pueden requerir métodos no lineales para restaurar imágenes y mejorar su calidad. Entonces, por ejemplo, para suprimir el ruido y al mismo tiempo preservar la parte del contorno de las imágenes, es necesario aplicar filtros no lineales o lineales espacialmente no invariantes (SPNI), que se implementan mediante algoritmos de rango. Todos los filtros no lineales de rango se basan en algoritmos rápidos para calcular histogramas locales.

Uno de estos métodos es el filtrado mediano. El uso de filtros medianos es efectivo para suprimir ciertos tipos de ruido y ruido periódico sin distorsionar simultáneamente la señal, por ejemplo, para suprimir ráfagas de emisiones de ruido, incluidas caídas de línea. El método también se puede utilizar para resolver problemas relacionados con el reconocimiento, por ejemplo, para resaltar líneas finas y pequeños objetos aislados.

Los algoritmos para describir imágenes y reconocer imágenes, por regla general, no son lineales y son de naturaleza heurística. Los signos de los objetos suelen ser el área de la imagen del objeto, el perímetro del contorno de la imagen, la relación del área al cuadrado del perímetro de la imagen. La forma de un objeto se puede caracterizar por el radio del círculo inscrito en la imagen o circunscrito alrededor de la imagen del objeto, la longitud del radio-vector mínimo y máximo desde el "centro de masa" de la imagen.

Muestreo. Las transformaciones de imágenes en una computadora y el almacenamiento de los datos procesados ​​se realizan de forma discreta. El muestreo se utiliza para obtener una representación discreta a partir de imágenes analógicas continuas del mundo real. En la práctica, se lleva a cabo mediante dispositivos de entrada (cámara digital, escáner u otros). Para la percepción visual de imágenes procesadas en dispositivos de salida (display, plotter, etc.), se reconstruye una imagen analógica según su representación discretizada.

En el caso más simple de imágenes en blanco y negro, tenemos un arreglo bidimensional sa(x, y). Para imágenes en color en el modelo RGB, teniendo en cuenta la propiedad de aditividad al agregar colores, cada capa R, G y B también se puede considerar y procesar como una matriz bidimensional, con la posterior suma de los resultados.

De las formas de generalizar la discretización periódica unidimensional al caso bidimensional, la más simple es la discretización periódica en coordenadas rectangulares:

s(n, m) = sa(nDx, mDy),

donde Dx y Dy son los intervalos de muestreo horizontal y vertical de la señal continua bidimensional sa(x, y) con coordenadas x e y continuas. A continuación, los valores de Dx y Dy, como en el caso unidimensional, se toman iguales a 1.

La discretización de una señal bidimensional también conduce a la periodización de su espectro y viceversa. La condición de equivalencia informativa de las representaciones de coordenadas y frecuencias de una señal discreta también se conserva con un número igual de puntos de muestreo en los rangos de la señal principal. Para la discretización rectangular, las transformadas de Fourier directa e inversa se definen mediante las expresiones:

S(k, l) =s(n, m) exp(-jn2pk/N-jm2pl/M), (17.2.1)

S(k, l) =exp(-jn2pk/N) s(n, m) exp(-jm2pl/M), (17.2.1")

s(n, m) =S(k, l) exp(-jn2pk/N-jm2pl/M). (17.2.2)

s(n, m) = exp(-jn2pk/N) S(k, l) exp(-jm2pl/M). (17.2.2")

Arroz. 17.2.1. Periodización del espectro.

Estas expresiones muestran que una DFT 2D sobre un ráster de muestreo de datos rectangular se puede calcular usando DFT seriales 1D. Las segundas sumas de las expresiones (17.2.1") y (17.2.2") son las DFT unidimensionales de las secciones de las funciones s(n, m) y S(k, l) a lo largo de las líneas n y k, respectivamente, y las primeras sumas son las DFT unidimensionales de las funciones calculadas en los tramos por m y l. En otras palabras, las matrices iniciales de valores s(n, m) y S(k, l) primero se recalculan en matrices intermedias con DFT por filas (o por columnas), y las matrices intermedias se recalculan en matrices finales con DFT por columnas (o, respectivamente, por filas).

Para que la repetición periódica del espectro (Fig. 17.2.1), causada por el muestreo de una señal analógica con una frecuencia de Fx=1/Dx y Fy=1/Dy, no cambie el espectro en la frecuencia principal rango (en relación al espectro de la señal analógica original), es necesario y suficiente que las máximas componentes de frecuencia fmax en el espectro de la señal analógica, tanto en filas como en columnas, no superen la frecuencia de Nyquist (fmax. x £ fN = Fx/2, fmax y £ fM = Fy/2). Esto significa que la frecuencia de muestreo de la señal debe ser al menos dos veces mayor que el componente de frecuencia máxima en el espectro de la señal:

Fx ³ 2fmáx. x, Fy ³ 2fmáx. y, (17.2.3)

lo que asegura que las funciones espectrales alcancen valores cero en los extremos del rango principal del espectro.

Serie de interpolación de recuperación de señal bidimensional. Si señal continua sa(x, y) es una señal de espectro limitado, y los períodos de muestreo se eligen lo suficientemente pequeños y los espectros de los períodos vecinos no se superponen:

Sa(Wx, Wy) = 0 para |Wx|p/Dx, |Wy|p/Dx,

entonces, como en el caso unidimensional, la señal sa(x, y) se puede reconstruir a partir de una señal discreta usando un análogo bidimensional de la serie Kotelnikov-Shannon:

sa(x, y) = Sn Sm s(n, m) . (17.2.4)

Distorsiones de frecuencia de las imágenes y su eliminación. También se puede muestrear una señal con un espectro ilimitado, pero en este caso hay una superposición de espectros en períodos adyacentes, mientras que las frecuencias altas, más altas que las frecuencias de Nyquist, serán "enmascaradas", como en el caso unidimensional, bajo bajas frecuencias período principal. El efecto de "reflexión" de los límites del período da una imagen aún más compleja debido a la interferencia de frecuencias reflejadas en diferentes coordenadas. También se producirá un efecto similar, conocido como aliasing, cuando las imágenes estén submuestreadas. Este efecto se puede observar especialmente claramente en cambios bruscos de contraste en el brillo.

Para combatir tales fenómenos, se utiliza el filtrado previo (anti-aliasing), una convolución preliminar de una imagen analógica con una función de filtro de peso que corta los componentes de alta frecuencia que pueden provocar el aliasing. En el caso bidimensional, el filtrado se describe de la siguiente manera:

z(x, y) = h(x", y") ③③ s(x-x", y-y"). (17.2.5)

Cabe señalar que las imágenes analógicas solo existen en el rango óptico, por ejemplo, en forma de una pantalla de luz, papel fotográfico o película fotográfica, pero no pueden existir en la memoria de la computadora. Por lo tanto, la implementación física del prefiltrado solo es posible cuando se registra una imagen desenfocándola, lo que, por regla general, no se usa. La información primaria siempre debe registrarse con la máxima integridad y precisión, y limpiar la información primaria de detalles innecesarios y redundancia es una cuestión de procesamiento de datos posterior. Por tanto, en relación con la ecuación 17.2.5, el prefiltrado bidimensional, en su implementación práctica, sólo puede ser un filtrado de imágenes muestreadas con un amplio margen sobre el rango de frecuencia principal (con excesiva resolución), y se utiliza, por regla general, , al volver a muestrear a un paso mayor, por ejemplo, al comprimir imágenes. El prefiltrado también se puede incorporar en los algoritmos de imágenes.

En la fig. 17.2.3 y siguientes, la Tabla 17.2.1 muestra ejemplos de los filtros antisolapamiento unidimensionales más comunes. También se pueden implementar en forma de filtros analógicos y se utilizan, por ejemplo, cuando se transmiten líneas de televisión de imágenes en forma analógica a través de canales de radio (anti-aliasing horizontal). En principio, se puede realizar una operación similar en las columnas (duplicar - imagen), y después de sumar la imagen, se realizará una operación de suavizado completa, pero este método pertenece más al campo de la investigación científica especial.

Tabla 17.2.1.

Funciones básicas de peso

ventana de tiempo

función de peso

Transformada de Fourier

Naturales (P)

П(t) = 1, |t|£t; П(t) = 0, |t|>t

П(w) = 2t sinc

Bartlett (D)

B(w) = t sinc2(wt/2).

Henning, Hanna

p(t) = 0,5

0.5p(w)+0.25p(w+p/t)+0.25p(w-p/t)

hamming

p(t) = 0,54+0,46 cos(pt/t)

0.54P(w)+0.23P(w+p/t)+0.23P(w-p/t)

Carré (2ª ventana)

p(t) = b(t) sinc(pt/t)

t B(w)*P(w), P(w) = 1 para |w|

Laplace-Gauss

p(t) = exp[-b2(t/t)2/2]

[(t/b) exp(-t2w2/(2b2))] ③ P(w)

Los análogos bidimensionales de los filtros unidimensionales f1(x) se construyen en dos variantes de simetría: o en función del radio:

f2(x, y) = f1(),

o como obra:

f2(x, y) = f1(x) × f1(y).

La primera opción es más correcta, pero la segunda tiene la propiedad de separabilidad, es decir, la convolución bidimensional puede realizarse mediante dos convoluciones unidimensionales secuencialmente en filas con f1(x) y en columnas con f1(y).

Remuestreo de imagen o el remuestreo es un cambio en la frecuencia de muestreo de una señal digital. Para imágenes digitales, esto significa cambiar el tamaño de la imagen.

Hay varios algoritmos de remuestreo de imágenes. Por ejemplo, para aumentar la imagen 2 veces utilizando el método de interpolación bilineal, las columnas y filas intermedias se obtienen mediante interpolación lineal de los valores de las columnas y filas vecinas. Es posible obtener cada punto de la nueva imagen como suma ponderada de un mayor número de puntos de la imagen original (bicúbica y otros tipos de interpolación). El remuestreo de mayor calidad se obtiene cuando se utilizan algoritmos que tienen en cuenta no solo el tiempo sino también el dominio de la frecuencia de la señal.

Considere un algoritmo de remuestreo con la máxima preservación de la información de frecuencia de la imagen. Consideraremos el funcionamiento del algoritmo en señales unidimensionales, ya que una imagen bidimensional puede primero estirarse o comprimirse horizontalmente (en filas) y luego verticalmente (en columnas), y el remuestreo de una imagen bidimensional puede ser reducido al remuestreo de señales unidimensionales.

Supongamos que tenemos una señal unidimensional (Fig. 17.2.4), dada en el intervalo 0-T y discretizada con un paso Dt=1 (N intervalos). Es necesario "estirar" la señal m veces. El espectro de la señal que se muestra en la figura se calcula mediante la transformada rápida de Fourier (FFT, el número de muestras de espectro es igual al número de muestras de señal) y se proporciona en el rango principal de FFT (0-2p, frecuencia de Nyquist wN = p/Dt = p, o 0,5N según la numeración de las muestras de espectro con un paso a lo largo del espectro Df = 1/T o Dw = 2p/T). El estiramiento requiere 2 pasos.

El primer paso es la interpolación cero, que aumenta m veces la longitud de la señal. (Figura 17.2.5). Es necesario multiplicar todas las muestras de la señal original por m, y luego, después de cada muestra de señal, insertar m-1 valor cero. En el intervalo 0-T, cuyo valor permanece sin cambios, ahora hay m veces más intervalos de muestreo (mN), y el nuevo paso de muestreo será igual a Dx=Dt/m. En consecuencia, la nueva frecuencia de Nyquist para esta señal es mp/Dt = mp. Pero el valor físico del paso del espectro en unidades de frecuencia es el inverso del valor físico del intervalo de establecimiento de la señal (Df=1/T) y, por lo tanto, la FFT en mN puntos de la señal calculará mN puntos del espectro en el rango principal de FFT de 0-2pm con el paso de espectro de la señal original, en el que estarán presentes m-períodos del espectro de la señal original (un lado principal y uno m-1).

El segundo paso es filtrar las bandas laterales del espectro utilizando un filtro de paso bajo, ya sea en el dominio del tiempo o espectral. En la fig. 17.2.6, se despejó el espectro y se realizó la transformada inversa de Fourier, como resultado de lo cual se obtuvo una señal m veces más larga que la señal original con preservación total de toda la información de frecuencia.

De acuerdo con un principio similar, se puede construir un algoritmo para comprimir (diezmar) una señal n veces, mientras se invierte el orden de los pasos. Al comprimir la señal, el paso de muestreo de la señal aumenta y, en consecuencia, la frecuencia de Nyquist se reduce, mientras que las frecuencias altas de corte (ruido y partes insignificantes de alta frecuencia del espectro de la señal) se reflejarán desde el borde del rango principal. y añadido a la información principal, creando distorsiones. Para eliminar este fenómeno, la señal primero se filtra en paso bajo con una frecuencia de corte igual a la nueva frecuencia de Nyquist (anti-aliasing), y solo entonces la señal se diluye.

Cuando el remuestreo se realiza solo en el dominio del tiempo, los algoritmos de estiramiento y compresión generalmente se combinan en un solo proceso secuencial con la configuración del cambio de paso de muestreo en forma de relación m/n, lo que le permite establecer valores enteros de m y n para valores fraccionarios del cambio de paso de muestreo. Esto simplifica enormemente los algoritmos y mejora la eficiencia y la calidad de su trabajo. Por ejemplo, cuando la señal se estira 1,5 veces en m/n = 3/2, la señal primero se estira 3 veces (una adición simple y uniforme de ceros a todas las muestras, luego se realiza un filtrado de paso bajo, después de lo cual la señal es diezmada por un factor de 2. No se requiere filtro antialiasing, ya que su frecuencia de corte se superpone con la frecuencia del primer filtro de paso bajo. En la operación de compresión inversa (por ejemplo, m/n = 2/3 ), del mismo modo, solo se utiliza el filtro anti-aliasing.

17.3. filtrado de imagen

El filtrado de imágenes es una operación que da como resultado una imagen del mismo tamaño, obtenida a partir de la original de acuerdo con algunas reglas. Normalmente, la intensidad (color) de cada píxel en la imagen resultante está determinada por las intensidades (colores) de los píxeles ubicados en algunos de sus alrededores en la imagen original.

Las reglas de filtrado pueden ser muy diversas. El filtrado de imágenes es una de las operaciones más fundamentales de la visión artificial, el reconocimiento de patrones y el procesamiento de imágenes. La gran mayoría de los métodos de procesamiento de imágenes comienzan con uno u otro filtrado de las imágenes originales.

Filtros de línea tienen una descripción matemática muy simple. Supondremos que se da la imagen A de semitonos original, y denotaremos las intensidades de sus píxeles por A(x, y). Un filtro lineal se define mediante una función de valor real h (núcleo de filtro) definida en un ráster. El filtrado en sí se realiza mediante la operación de convolución discreta (suma ponderada):

B(x, y) = h(i, j) ③③A(x, y) = h(i, j) A(x-i, y-j). (17.3.1)

El resultado es la imagen B. Por lo general, el núcleo del filtro es distinto de cero solo en alguna vecindad N del punto (0, 0). Fuera de esta vecindad, h(i, j) es igual a cero, o muy cercano a él, y puede despreciarse. La suma se realiza sobre (i, j) í N, y el valor de cada píxel B(x, y) está determinado por los píxeles de la imagen A que se encuentran en la ventana N centrada en el punto (x, y) ( denotado es el conjunto N(x, y) ). Un kernel de filtro definido en una vecindad rectangular N se puede considerar como una matriz de m por n donde las longitudes de los lados son números impares. Al especificar el kernel como matriz, debe estar centrado. Si un píxel (x, y) se encuentra cerca de los bordes de la imagen, entonces las coordenadas A(x-i, y-j) para ciertos (i, j) pueden corresponder a píxeles A inexistentes fuera de la imagen. Este problema se puede resolver de varias maneras.

No filtre dichos píxeles recortando la imagen B en los bordes o aplicando los valores originales de la imagen A para sus valores.

No incluya el píxel faltante en la suma distribuyendo su peso h(i, j) uniformemente entre otros píxeles en la vecindad N(x, y).

Redefina los valores de píxeles fuera de los límites de la imagen mediante la extrapolación.

Redefina los valores de los píxeles fuera de los bordes de la imagen, utilizando la continuación del espejo de la imagen.

La elección del método se realiza teniendo en cuenta las características específicas del filtro y de la imagen.

Filtros de suavizado. El filtro de suavizado rectangular más simple de radio r viene dado por una matriz (2r+1) × (2r+1), cuyos valores son todos 1/(2r+1)2, y la suma de los valores es uno. Este es el análogo 2D del filtro de promedio móvil en forma de U 1D de paso bajo. Al filtrar con un kernel de este tipo, el valor de píxel se reemplaza por el valor de píxel promedio en un cuadrado de 2r+1 a su alrededor. Ejemplo de máscara de filtro 3×3:

.

Una de las aplicaciones de los filtros es la reducción de ruido. El ruido varía independientemente de un píxel a otro y, siempre que la expectativa matemática del valor del ruido sea cero, el ruido de los píxeles vecinos se cancelará entre sí cuando se sume. Cuanto mayor sea la ventana de filtrado, menor será la intensidad de ruido promedio; sin embargo, también se producirá la borrosidad correspondiente de los detalles significativos de la imagen. La imagen de un punto blanco sobre un fondo negro durante el filtrado (reacción a un solo pulso) será un cuadrado gris uniforme.

La reducción de ruido con un filtro rectangular tiene un inconveniente importante: todos los píxeles de la máscara de filtro a cualquier distancia del procesado tienen el mismo efecto en el resultado. Se obtiene un resultado ligeramente mejor modificando el filtro con un aumento del peso del punto central:

.

Se puede lograr una reducción de ruido más efectiva si la influencia de los píxeles en el resultado disminuye al aumentar la distancia desde el procesado. Esta propiedad la posee un filtro gaussiano con núcleo: h(i, j) = (1/2ps2) exp(-(i2+j2)/2s2). El filtro gaussiano tiene un núcleo distinto de cero de tamaño infinito. Sin embargo, el valor del núcleo del filtro decrece muy rápidamente a n), y por lo tanto, en la práctica, uno puede limitarse a la convolución con una pequeña ventana alrededor de (0, 0), por ejemplo, tomando el radio de la ventana igual a 3σ.

El filtrado gaussiano también está suavizando. Sin embargo, a diferencia del filtro rectangular, la imagen de un punto con filtrado gaussiano será una mancha borrosa simétrica, con una disminución del brillo desde el centro hacia los bordes. El grado de desenfoque de la imagen está determinado por el parámetro σ.

Filtros de contraste . Si los filtros de suavizado reducen el contraste local de la imagen, desdibujándolo, entonces los filtros de realce de contraste producen el efecto contrario y, en esencia, son filtros de altas frecuencias espaciales. El kernel de filtro boost en (0, 0) tiene un valor mayor que 1, con una suma total de valores igual a 1. Por ejemplo, los filtros boost son filtros con un kernel dado por matrices:

. .

Un ejemplo de aplicación del filtro se muestra en la fig. 17.3.1. El efecto de aumentar el contraste se logra debido al hecho de que el filtro enfatiza la diferencia entre las intensidades de los píxeles vecinos, eliminando estas intensidades entre sí. Este efecto será más fuerte cuanto mayor sea el valor del término central del núcleo. Un artefacto característico del filtrado de mejora de contraste lineal es la luz perceptible y los halos oscuros menos perceptibles alrededor de los bordes.

Filtros de diferencia son filtros lineales definidos por aproximaciones discretas de operadores diferenciales (por el método de las diferencias finitas). Estos filtros juegan un papel importante en muchas aplicaciones, por ejemplo, para buscar bordes en una imagen.

El operador diferencial más simple es la derivada de x d/dx, que se define para funciones continuas. Las variantes comunes de operadores similares para imágenes discretas son los filtros Prewitt y Sobel:

. .

Los filtros que aproximan el operador derivado con respecto a la coordenada y d/dy se obtienen transponiendo matrices.

El algoritmo más simple para calcular la norma del gradiente sobre tres puntos adyacentes:

G(x, y) = .

También se utiliza una fórmula de cálculo simplificada:

Cálculo de la norma de un gradiente sobre cuatro puntos adyacentes (operador de Roberts):

El algoritmo de Sobel utiliza ocho muestras de brillo en las proximidades del punto central:

G(x, y) = , G(x, y) @ ,

Gxx, y = - ,

Gyx, y = - .

Junto con una definición más precisa de la norma de gradiente, el algoritmo de Sobel también le permite determinar la dirección del vector de gradiente en el plano de análisis de la imagen en forma de un ángulo j entre el vector de gradiente y la dirección de las filas de la matriz:

j(x, y) = argtg(Gyx, y /Gxx, y).

A diferencia de los filtros de suavizado y mejora del contraste que no modifican la intensidad media de la imagen, como resultado de la aplicación de operadores de diferencia, por regla general, se obtiene una imagen con un valor de píxel medio cercano a cero. Las caídas verticales (bordes) de la imagen original corresponden a píxeles con valores de módulo grandes en la imagen resultante. Por lo tanto, los filtros de diferencia también se denominan filtros de detección de límites de objetos.

De manera similar a los filtros anteriores, el método de diferencias finitas se puede utilizar para componer filtros para otros operadores diferenciales. En particular, el operador diferencial de Laplace (Laplaciano) D= 𝝏2/𝝏x2 + 𝝏2/𝝏y2, que es importante para muchas aplicaciones, se puede aproximar para imágenes discretas mediante un filtro con una matriz (una de las opciones):

.

Como se ve en la fig. 17.3.2, como resultado de aplicar el Laplaciano discreto, valores grandes en valor absoluto corresponden a diferencias de brillo tanto verticales como horizontales. Un filtro es, por lo tanto, un filtro que encuentra límites de cualquier orientación. Se pueden encontrar bordes en una imagen aplicando este filtro y tomando todos los píxeles cuyo valor absoluto exceda un cierto umbral.

Sin embargo, este algoritmo tiene importantes inconvenientes. El principal es la incertidumbre en la elección del valor umbral. Para diferentes partes de la imagen, generalmente se obtiene un resultado aceptable en umbrales significativamente diferentes. Además, los filtros diferenciales son muy sensibles al ruido de la imagen.

Convolución cíclica bidimensional. Al igual que con las señales 1D, la convolución 2D se puede realizar en el dominio de la frecuencia espacial utilizando algoritmos FFT y multiplicando los espectros de la imagen 2D y el núcleo del filtro. También es cíclico, y generalmente se realiza en una versión deslizante. Teniendo en cuenta la ciclicidad, para calcular el patrón constante del espectro del núcleo, las dimensiones de la máscara de filtro del núcleo se duplican a lo largo de los ejes y se rellenan con ceros, y las mismas dimensiones de la máscara se utilizan para resaltar la ventana que se desliza sobre la imagen, dentro de que se realiza la FFT. La implementación de un filtro FIR con una FFT es especialmente eficiente si el filtro tiene un área de referencia grande.

Filtros no lineales . En el procesamiento de imágenes digitales, los algoritmos no lineales basados ​​en estadísticas de rango se usan ampliamente para restaurar imágenes dañadas por varios modelos de ruido. Le permiten evitar una distorsión adicional de la imagen al eliminar el ruido, así como mejorar significativamente los resultados de los filtros en imágenes con un alto grado de ruido.

Introduzcamos el concepto de un M-vecindario de un elemento de imagen A(x, y), que es central para este vecindario. En el caso más simple, el vecindario M contiene N píxeles, puntos que caen en la máscara de filtro, incluido (o no incluido) el central. Los valores de estos N-elementos se pueden ordenar en una serie variacional V(r), clasificada en orden ascendente (o descendente), y se pueden calcular ciertos momentos de esta serie, por ejemplo, el valor promedio de la luminosidad mN y la varianza dN. El cálculo del valor de salida del filtro, que reemplaza la muestra central, se realiza mediante la fórmula:

B(x, y) = aÀ(x, y) + (1-a)mN. (17.3.2)

El valor del coeficiente a = está asociado a cierta dependencia con las estadísticas de muestras en la ventana de filtro, por ejemplo:

a = dN /(dN + k dS), (17.3.3)

donde dS es la varianza del ruido sobre la imagen como un todo o sobre el S-vecindario para S > M y M-S, k es la constante de confianza de la varianza del S-vecindario. Como se sigue de esta fórmula, para k=1 y dN » dS, tiene lugar a » 0.5, y el valor B(x, y) = (A(x, y) + mN)/2, es decir, se suman por igual sobre los valores de la muestra central y el valor medio de los píxeles de su M-vecindario. Con un aumento en los valores de dN, aumenta la contribución del valor de la referencia central al resultado; con una disminución, el valor de mN. El peso de la contribución de los valores medios sobre el M-vecindario se puede cambiar por el valor del coeficiente k.

La elección de la función estadística y la naturaleza de la dependencia del coeficiente a de ella pueden ser bastante diversas (por ejemplo, según las varianzas de las diferencias en las lecturas en la vecindad M con una lectura central), y depende tanto del tamaño de la apertura del filtro y de la naturaleza de las imágenes y el ruido. En esencia, el valor del coeficiente a debe especificar el grado de daño a la muestra central y, en consecuencia, la función de préstamo para su corrección de muestras de la vecindad M.

Los tipos más simples y comunes de filtros no lineales para el procesamiento de imágenes son los filtros de umbral y de mediana.

Filtrado de umbral se da, por ejemplo, como sigue:

B(x, y) =

Valor pag es el umbral del filtro. Si el valor del punto central del filtro excede el valor promedio de las muestras mN en su vecindad M por el valor umbral, entonces se reemplaza por el valor promedio. El valor umbral puede ser constante o funcionalmente dependiente del valor del punto central.

Filtrado mediano se define de la siguiente manera:

B(x, y) = medio (M(x, y)),

es decir, el resultado del filtrado es el valor medio de los píxeles vecinos, cuya forma está determinada por la máscara de filtro. El filtrado de mediana puede eliminar eficazmente el ruido de una imagen que afecta de forma independiente a los píxeles individuales. Por ejemplo, dichas interferencias son píxeles "rotos" durante la toma digital, ruido de "nieve" cuando algunos píxeles se reemplazan por píxeles con la máxima intensidad, etc. La ventaja del filtrado medio es que se reemplazará un píxel "caliente" en un fondo oscuro. oscuro y no "manchado" por el vecindario.

El filtrado de mediana tiene una selectividad pronunciada con respecto a los elementos de matriz, que son un componente no monotónico de una secuencia de números dentro de la apertura del filtro. Al mismo tiempo, el filtro mediano deja sin cambios el componente monótono de la secuencia. Debido a esta característica, los filtros medianos con una apertura óptimamente seleccionada conservan los bordes nítidos de los objetos sin distorsión, suprimiendo el ruido no correlacionado o débilmente correlacionado y los detalles de tamaño pequeño.

Filtros extremos determinado por las reglas:

Bmin(x, y) = min(M(x, y)),

Bmax(x, y) = max (M(x, y)),

es decir, el resultado del filtrado son los valores mínimo y máximo de píxeles en la máscara de filtro. Dichos filtros se aplican, por regla general, para imágenes binarias.

17.4. COMPRESIÓN DE IMAGEN

Una imagen típica con una resolución de alrededor de 3000×2000 a 24 bits por píxel para transmisión de color tiene un tamaño de 17 megabytes. Para dispositivos profesionales, el tamaño de la trama de imagen resultante puede ser mucho mayor, la profundidad de color es de hasta 48 bits por píxel y el tamaño de una imagen puede ser de más de 200 megabytes. Por lo tanto, los algoritmos de compresión de imágenes son muy relevantes para reducir la cantidad de datos que representan una imagen.

Hay dos clases principales de algoritmos:

1. Compresión sin pérdidas A (compresión sin pérdidas), si existe un algoritmo inverso A-1 tal que para cualquier h - imagen A[h] = h1 tenemos A-1 = h. La compresión sin pérdida se utiliza en formatos de imágenes gráficas como: GIF, PCX, PNG, TGA, TIFF, y se utiliza cuando se procesa información primaria especialmente valiosa (imágenes médicas, imágenes aéreas y espaciales, etc.), cuando incluso la más mínima distorsión no es deseada.

2. Compresión con pérdida, si no proporciona la capacidad de restaurar con precisión la imagen original. El algoritmo de recuperación de imagen aproximado emparejado con A se indicará como A*. El par (A, A*) se elige para proporcionar altas relaciones de compresión manteniendo la calidad visual. La compresión con pérdida se aplica en formatos gráficos: JPEG, JPEG2000, etc.

Todos los algoritmos y declaraciones se aplican tanto a imágenes como a secuencias arbitrarias, cuyos elementos pueden tomar un número finito de valores. Al mismo tiempo, se debe tener en cuenta que no existen algoritmos ideales que puedan comprimir cualquier conjunto de datos sin pérdida.

Algoritmos de codificación de longitud repetida (RLE) se basan en un principio simple: reemplazar grupos repetidos de elementos de la secuencia original con un par (cantidad, elemento), o solo con una cantidad.

nivel de bits. Consideraremos los datos originales al nivel de una secuencia de bits, por ejemplo, representando una imagen en blanco y negro. Por lo general, hay varios 0 o 1 seguidos, y se puede codificar el número de dígitos idénticos consecutivos. Pero el número de repeticiones también debe codificarse en bits. Se puede considerar que cada número de repeticiones cambia de 0 a 7 (código de 3 bits), alternando la secuencia de códigos de unos y ceros. Por ejemplo, las secuencias se pueden comparar con los números 7 0 4, es decir, 7 unos, 0 ceros, 4 unos, mientras tenemos un nuevo año. Cuanto más largas sean las secuencias de bits idénticos, mayor será el efecto. Entonces, una secuencia de 21 unos, 21 ceros, 3 unos y 7 ceros se codifica de la siguiente manera: , es decir, de la secuencia original de 51 bits, tenemos una secuencia de 36 bits.

Nivel de byte. Supongamos que la entrada es una imagen en escala de grises, donde se asigna 1 byte para el valor de intensidad de píxel, mientras que la expectativa de una larga cadena de bits idénticos se reduce significativamente.

Dividiremos el flujo de entrada en bytes (código de 0 a 255) y codificaremos los bytes repetidos como un par (número, letra). No se puede cambiar un solo byte. Entonces, los bytes AABBBCDAA codifican (2A) (3B) (C) (D) (2A).

Sin embargo, las modificaciones de este algoritmo rara vez se usan solas (por ejemplo, en formato PCX), ya que la subclase de secuencias en las que el algoritmo es efectivo es relativamente estrecha. Más a menudo se utilizan como una de las etapas de la tubería de compresión.

Diccionario Algoritmos en lugar de codificar solo un elemento de la secuencia entrante, se realiza la codificación de una cadena de elementos. Esto utiliza un diccionario de cadenas (creado a partir de la secuencia de entrada) para codificar las nuevas.

El algoritmo LZ77 fue uno de los primeros en utilizar un diccionario. Los N últimos elementos ya codificados de la secuencia se utilizan como diccionario. Durante la compresión, la subsecuencia del diccionario se "desliza" sobre la secuencia entrante. La cadena de elementos en la salida se codifica de la siguiente manera: la posición de la parte coincidente de la cadena procesada de elementos en el diccionario - desplazamiento (en relación con la posición actual), longitud, el primer elemento que sigue a la parte coincidente de la cadena. La longitud de la cadena coincidente está limitada desde arriba por el número n. En consecuencia, la tarea es encontrar la cadena más grande del diccionario que coincida con la secuencia procesada. Si no hay coincidencias, se escriben el desplazamiento cero, la longitud de la unidad y el primer elemento de la secuencia no codificada.

El esquema de codificación descrito anteriormente conduce al concepto de ventana deslizante, que consta de dos partes:

Una subsecuencia de elementos ya codificados de longitud N-diccionario - búfer de búsqueda;

La subsecuencia de longitud n de la cadena de elementos para los que se intentará encontrar una coincidencia es el búfer de búsqueda anticipada.

La decodificación de una secuencia comprimida es la decodificación de los códigos registrados: cada entrada se compara con una cadena de un diccionario y un elemento escrito explícitamente, después de lo cual se desplaza el diccionario. El diccionario se vuelve a crear a medida que se ejecuta el algoritmo de decodificación.

Este algoritmo es el antepasado de toda una familia de algoritmos. Sus ventajas incluyen un grado decente de compresión en secuencias suficientemente grandes y una descompresión rápida. Las desventajas incluyen una velocidad de compresión lenta y una relación de compresión más baja que los algoritmos alternativos.

Algoritmo LZW. El diccionario en este algoritmo es una tabla que se llena con cadenas de elementos a medida que se ejecuta el algoritmo. El proceso de compresión busca la cadena más larga ya escrita en el diccionario. Cada vez que no se encuentra una nueva cadena de elementos en el diccionario, se agrega al diccionario y se registra el código de la cadena. En teoría, no hay límite para el tamaño de la tabla, pero el límite de tamaño mejora la relación de compresión, ya que se acumulan cadenas innecesarias (que no ocurren). Cuantas más entradas tiene una tabla, más información debe asignarse a los códigos de tienda.

La decodificación consiste en la decodificación directa de códigos, es decir, en la construcción de un diccionario y la salida de las cadenas correspondientes. El diccionario se inicializa de la misma forma que en el codificador. Las ventajas del algoritmo incluyen un alto grado de compresión y una velocidad bastante alta, tanto de compresión como de decodificación.

Algoritmos de codificación de entropía asigne a cada elemento de la secuencia un código para que su longitud corresponda a la probabilidad de ocurrencia del elemento. La compresión ocurre reemplazando elementos de la secuencia original que tienen la misma longitud (cada elemento ocupa el mismo número de bits) con elementos de diferente longitud, proporcional al logaritmo negativo de la probabilidad, es decir, elementos que ocurren con más frecuencia que otros tienen una código de menor longitud.

El algoritmo de Huffman utiliza un código de prefijo de longitud variable que tiene una propiedad especial: los códigos más cortos no coinciden con el prefijo (parte inicial) de los más largos. Tal código permite la codificación uno a uno. El proceso de compresión consiste en reemplazar cada elemento de la secuencia de entrada con su código. La construcción de un conjunto de códigos se suele realizar utilizando los denominados árboles de código.

El algoritmo de Huffman es de dos pasos. El primer paso a través de la imagen crea una tabla de pesos de elementos y, durante el segundo paso, se lleva a cabo la codificación. Hay implementaciones del algoritmo de tabla fija. Suele suceder que se desconoce la distribución de probabilidad a priori de los elementos del alfabeto, ya que no se dispone de la secuencia completa a la vez, mientras que se utilizan modificaciones adaptativas del algoritmo de Huffman.

Compresión de imagen con pérdida. La cantidad de información necesaria para almacenar imágenes suele ser grande. Los algoritmos clásicos, al ser algoritmos de propósito general, no tienen en cuenta que la información que se comprime es una imagen, un objeto bidimensional, y no proporcionan un grado suficiente de compresión.

La compresión con pérdida se basa en las características de la percepción humana de la imagen: la mayor sensibilidad en un cierto rango de ondas de color, la capacidad de percibir la imagen como un todo, sin notar pequeñas distorsiones. La principal clase de imágenes en las que se centran los algoritmos de compresión con pérdida son las fotografías, imágenes con transiciones de color suaves.

Estimación de pérdida de imagen. Hay muchas medidas para estimar las pérdidas en las imágenes después de su restauración (descodificación) a partir de las comprimidas, sin embargo, para todas ellas, se pueden seleccionar dos imágenes de modo que su medida de diferencia sea lo suficientemente grande, pero las diferencias serán casi imperceptibles para el ojo. Y viceversa: puede captar imágenes que difieren mucho a simple vista, pero que tienen una pequeña diferencia.

La medida numérica estándar de pérdida suele ser la desviación estándar (RMS) de los valores de píxel de la imagen reconstruida a partir de la original. Sin embargo, la "medida" más importante de la evaluación de pérdidas es la opinión del observador. Cuantas menos diferencias (o mejor, su ausencia) detecte un observador, mayor será la calidad del algoritmo de compresión. Los algoritmos de compresión con pérdida a menudo permiten al usuario elegir la cantidad de datos "perdidos", es decir, el derecho a elegir entre la calidad y el tamaño de la imagen comprimida. Naturalmente, cuanto mejor sea la calidad visual con una relación de compresión más alta, mejor será el algoritmo.

Transformada de Fourier. En el caso general, la imagen se puede considerar como una función de dos variables, definidas en los puntos del ráster final. El conjunto de tales funciones sobre los puntos de un ráster finito fijo forman un espacio euclidiano de dimensión finita, y se les puede aplicar la transformada discreta de Fourier, es decir, la representación espectral de la imagen. Proporciona:

Falta de correlación e independencia de los coeficientes del espectro, es decir, la precisión de la representación de un coeficiente no depende de ningún otro.

- Compactación energética. La transformación almacena la información básica en un pequeño número de coeficientes. Esta propiedad es más pronunciada en imágenes fotorrealistas.

Los coeficientes de representación espectral son las amplitudes de las frecuencias espaciales de la imagen. En el caso de imágenes con transiciones suaves, la mayor parte de la información está contenida en el espectro de baja frecuencia.

El algoritmo de compresión utilizado en formato jpeg, se basa en el uso de la transformada discreta de Fourier del coseno. El esquema de compresión en el algoritmo es un pipeline, donde esta transformación es solo una de las etapas, pero una de las principales. El algoritmo contiene las siguientes operaciones principales:

1. Transfiera al espacio de color YCbCr. Aquí Y es el componente de luminancia, Cb y Cr son los componentes de crominancia. El ojo humano es más sensible al brillo que al color. Por lo tanto, es más importante mantener una mayor precisión al transmitir Y que al transmitir Cb y Cr.

2. Transformada de coseno discreta (DCT). La imagen se divide en bloques de 8 × 8. Se aplica una transformada de coseno discreta a cada bloque (por separado para los componentes Y, Cb y Cr).

3. Reducción de componentes de alta frecuencia en matrices DCT. El ojo humano apenas nota cambios en los componentes de alta frecuencia, por lo tanto, los coeficientes responsables de las altas frecuencias pueden almacenarse con menos precisión.

4. Ordenamiento en zigzag de matrices. Este es un pase de matriz especial para obtener una secuencia unidimensional. Primero viene el elemento T00, luego T01, T10, T1 Además, para imágenes fotorrealistas típicas, primero habrá coeficientes distintos de cero correspondientes a componentes de baja frecuencia y luego muchos ceros (componentes de alta frecuencia).

5. Compresión primero por el método RLE y luego por el método Huffman.

El algoritmo de recuperación de imágenes funciona en orden inverso. La relación de compresión es de 5 a 100 o más veces. Al mismo tiempo, la calidad visual de la mayoría de las imágenes fotorrealistas se mantiene en un buen nivel cuando se comprime hasta 15 veces. El algoritmo y el formato son los más comunes para transferir y almacenar imágenes a todo color.

Transformada wavelet señales es una generalización de la transformada clásica de Fourier. El término "wavelet" (wavelet) en la traducción del inglés significa "onda pequeña (corta)". Wavelets es un nombre generalizado para familias de funciones matemáticas. cierta forma, que son locales en tiempo y frecuencia, y en las que todas las funciones se obtienen a partir de una función base por medio de sus desplazamientos y expansiones a lo largo del eje del tiempo.

En los algoritmos de compresión con pérdida, por regla general, todas las operaciones de la tubería de compresión con reemplazo transformación discreta Fourier en la transformada wavelet discreta. Las transformadas wavelet tienen muy buena localización frecuencial-espacial y superan a las tradicionales transformadas de Fourier en este indicador. En este caso, es posible aplicar una cuantificación más fuerte, mejorando las propiedades de la secuencia para la compresión posterior. Los algoritmos de compresión de imágenes basados ​​en esta transformación, con la misma relación de compresión, muestran mejores resultados en la preservación de la calidad de la imagen.

literatura

46. ​​et al.Algoritmos rápidos en el procesamiento de imágenes digitales. - M.: Radio y comunicación, 1984. - 224 p.

47. Procesamiento de imágenes Soyfer. Parte 2. Métodos y algoritmos. - Revista Educativa Soros No. 3, 1996.

48. Ruido de cartílago de imágenes basadas en algoritmos no lineales usando estadísticas de rango. - Yaroslavski Universidad Estatal, 2007.

49. Andreev sistemas de vigilancia de televisión. Parte II. Aritmética - bases lógicas y algoritmos. Tutorial. - San Petersburgo: San Petersburgo, GUITMO, 2005. - Años 88.

51. Introducción al Procesamiento Digital de Señales (Fundamentos Matemáticos) - M.: Universidad Estatal de Moscú, Laboratorio de Computación Gráfica y Multimedia, 2002. - http://pv. *****/dsp/dspcurso. pdf, http://dsp-libro. *****/dspcurso. djvu, http://geogin. *****/archivo/dsp/dsp4.pdf.

1i. y otros fundamentos algorítmicos de gráficos de trama. – Universidad de Internet de las Tecnologías de la Información. – http://www. *****/ir a/curso/rastergraph/

2i. Lukin-Sistemas electrónicos: notas de clase. ITMO, 2004. - San Petersburgo, ITMO IFF, 2004. - http://iff. *****/kons/oes/KL. htm

Sobre los errores notados y sugerencias para adiciones: ****@***ru.

Derechos de autor©2008davydovA.V.

El ruido digital es un defecto de la imagen, que consiste en áreas ubicadas aleatoriamente que tienen un tamaño cercano a un píxel y difieren de la imagen original en brillo o color. La reducción de ruido juega un papel importante en la transmisión, procesamiento y compresión de secuencias de video e imágenes.

El ruido de video puede ocurrir por varias razones:

1. Equipo de captura de video imperfecto.

2. Condiciones de disparo deficientes, como tomas nocturnas de fotos/videos, tomas en condiciones climáticas adversas.

3. Interferencia durante la transmisión a través de canales analógicos: interferencia de fuentes de campos electromagnéticos, ruido intrínseco de los componentes activos (amplificadores) de la línea de transmisión. Un ejemplo es una señal de televisión.

4. Filtrado de imprecisiones al extraer señales de diferencia de color y luminancia de una señal compuesta analógica, etc.

La cantidad de ruido en una imagen puede variar desde una mota casi imperceptible en una fotografía digital tomada con buena luz hasta fotografías astronómicas en las que el ruido oculta gran parte del información útil, que solo se puede obtener mediante un laborioso procesamiento de imágenes.

El ruido puede ser de diferentes tipos, dependiendo de la naturaleza de la distribución aleatoria del ruido en la imagen. En la práctica, los tipos más comunes son:

Ruido gaussiano blanco

Uno de los ruidos más comunes es el ruido gaussiano aditivo, que se caracteriza por sumar valores con distribución normal y media cero a cada píxel de una imagen. El término "aditivo" significa que este tipo de ruido se suma a la señal útil. Ocurre cuando las condiciones de recepción de la señal son malas.

ruido digital

La causa del ruido digital se asocia con mayor frecuencia con las características del equipo utilizado para disparar, generalmente con una sensibilidad a la luz insuficiente de la matriz. Este tipo de ruido se caracteriza por la sustitución de algunos de los píxeles de la imagen por los valores de una variable fija o aleatoria. Si el brillo de los puntos es aproximadamente igual, el ruido digital también se denomina "impulsivo". Si la intensidad de los puntos puede cambiar de negro a blanco, este ruido se denomina ruido de sal y pimienta.

Por lo general, este tipo de ruido solo afecta a una pequeña cantidad de píxeles en una imagen.

Ruido combinado

Mucho menos comunes son los casos en que una imagen en un volumen igual es ruidosa con ruido gaussiano y pulsos aleatorios. Este conjunto se denomina ruido combinado.

Defectos de escaneo de imagen

También pueden aparecer en la imagen efectos extraños, como grietas, arañazos, magulladuras. Estos artefactos no tienen una estructura homogénea, la definición de su forma y ubicación está básicamente más allá del análisis matemático. Los defectos de este tipo solo se pueden combatir con la ayuda del procesamiento manual de imágenes, por lo que no se consideran en este documento.

Algoritmos de eliminación de ruido

Hay una gran cantidad de algoritmos para eliminar el ruido de las imágenes, y pueden ser utilizados no solo por programas de procesamiento especiales, sino también por algunas cámaras fotográficas y de video. A pesar de esto, todavía no existe un algoritmo de filtrado universal, ya que al procesar una imagen, siempre hay que elegir entre el grado de eliminación de efectos no deseados y la preservación de pequeños detalles que tienen características similares al ruido. Además, un algoritmo que hace frente fácilmente a un tipo de ruido solo puede estropear la imagen con otro tipo de ruido.

Consideremos algunos de los algoritmos de reducción de ruido de imagen más conocidos.

Promedio de píxeles lineales

La idea más simple para la eliminación de ruido es promediar los valores de píxeles en la vecindad espacial. Dado que el ruido varía independientemente de un píxel a otro, el ruido de los píxeles adyacentes se cancelará entre sí cuando se sume. Se establece una ventana rectangular, que se superpone a cada píxel de la imagen a su vez. El valor del píxel central se calcula en función del análisis de todos los píxeles vecinos que se encuentran dentro del área de la ventana. En consecuencia, cuanto mayor sea la ventana tomada, más valor promedio se obtendrá al final, lo que conduce a un fuerte efecto de desenfoque.

En la versión más simple, el análisis de los píxeles vecinos consiste en encontrar su media aritmética. Para reducir la influencia de píxeles que no pertenecen a la misma área que la considerada (por ejemplo, un contorno oscuro sobre un fondo claro), puede introducir un cierto umbral numérico y tener en cuenta al calcular solo aquellos vecinos cuya diferencia de el píxel central no supera este umbral. Cuanto mayor sea el valor del umbral, más fuerte será el promedio. La variante considerada puede complicarse introduciendo coeficientes de peso para cada píxel vecino, en función de su distancia al centro del área considerada.

Este método también se puede aplicar en el dominio del tiempo promediando cada píxel sobre cuadros adyacentes del flujo de video (cada píxel se promediará sobre píxeles ubicados en la misma posición en cuadros adyacentes).

Este algoritmo es muy simple, pero no da un buen resultado, al mismo tiempo que conduce a una fuerte borrosidad de los detalles de la imagen.

filtro gaussiano

Tiene un principio de funcionamiento similar al método anterior y también pertenece a la serie de filtros anti-aliasing. Sin embargo, la reducción de ruido mediante un filtro de promedio lineal tiene un inconveniente importante: todos los vecinos del píxel procesado tienen el mismo efecto en el resultado, independientemente de su distancia. El filtro gaussiano también promedia el píxel central y sus vecinos en un área determinada, solo que esto sucede de acuerdo con una determinada ley, que establece la función gaussiana.

Donde el parámetro y especifica el grado de desenfoque y el parámetro A proporciona normalización. Como resultado, el píxel central del área bajo consideración tendrá el valor más alto correspondiente al pico de la distribución Gaussiana. Los valores de los elementos restantes tendrán cada vez menos efecto a medida que te alejes del centro.

El filtro de matriz calculado por la fórmula especificada se denomina Gaussiano; cuanto mayor sea su tamaño, más fuerte será el desenfoque (para una y fija). Dado que este filtro es separable, se puede representar como:

De ello se deduce que la convolución se puede realizar secuencialmente en filas y columnas, lo que conduce a una aceleración significativa del método para filtros de gran tamaño.

Algoritmo 2Dcleaner

Reemplaza cada píxel de la imagen con el valor promedio de los píxeles vecinos, tomados en un área delimitada por un radio. En este caso, no se consideran todos los puntos que caen dentro del radio, sino solo aquellos cuyo valor difiere del píxel central en no más de un valor predeterminado (umbral) . Debido a esto, las áreas de colores uniformes se desenfocan más que los bordes afilados de los objetos. Esto reduce el ruido de bajo nivel en la imagen mientras mantiene intactos los detalles finos.

Filtrado mediano

Los algoritmos lineales resultan muy efectivos para suprimir el ruido gaussiano, cuando los píxeles vecinos, aunque tienen una distribución aleatoria de valores, aún permanecen dentro de algún valor promedio característico del área a la que pertenecen. Sin embargo, a veces hay que lidiar con imágenes distorsionadas por otros tipos de interferencia. Un ejemplo de dicha interferencia es el ruido de impulso, que se manifiesta en la presencia de puntos de brillo aleatorio dispersos aleatoriamente en la imagen. En este caso, el promedio "difumina" cada uno de esos puntos en los píxeles vecinos, lo que provoca un deterioro en la calidad de la imagen.

El filtrado de mediana es la forma estándar de suprimir el ruido de impulso. Este método de procesamiento de imágenes no lineal elimina los picos pero, a diferencia de los algoritmos de promediación lineal, deja intactas las monótonas secuencias de píxeles. Debido a esto, los filtros medianos pueden preservar sin distorsiones los contornos de los objetos y las diferencias entre áreas de diferente brillo, mientras suprimen de manera efectiva el ruido no correlacionado y los detalles de tamaño pequeño.

Principio de filtración: Se establece una determinada ventana de un tamaño impar, superpuesta secuencialmente a cada píxel de la imagen. Entre todos los píxeles que caen en el área considerada, incluido el central, se busca el valor de la mediana, que finalmente se asigna al píxel central del área. La mediana en este caso es el elemento central de la matriz de valores de píxeles ordenados que pertenecen a la región. El tamaño impar de la ventana se elige precisamente para garantizar la existencia del píxel central.

También es posible utilizar un filtro mediano para suprimir el ruido gaussiano blanco en la imagen. Sin embargo, un estudio de supresión de ruido utilizando filtrado mediano muestra que su eficacia para resolver este problema es menor que la del filtrado lineal.

El filtrado de mediana tiene un inconveniente inherente a la mayoría de los filtros de reducción de ruido: cuando se aumenta el tamaño de la máscara para mejorar el grado de reducción de ruido, la nitidez de la imagen disminuye y sus contornos se ven borrosos. Sin embargo, es posible minimizar los efectos negativos aplicando un filtrado mediano con un tamaño de máscara dinámico (filtrado mediano aditivo).Su principio sigue siendo el mismo, solo el tamaño de la ventana deslizante de filtrado puede cambiar dependiendo del brillo de los píxeles vecinos.

Nitidez de imagen

Casi todos los algoritmos para la reducción de ruido en la imagen conducen a su desenfoque, como resultado, se pierden pequeños detalles y la percepción de la imagen es difícil. Para compensar parcialmente este efecto negativo y restaurar el contraste de contorno perdido y las transiciones de color, el filtro de nitidez de imagen es capaz de hacerlo. La nitidez también puede depender de muchos otros factores: de la calidad de la lente, de la apertura utilizada, del grosor del filtro antimoiré que se encuentra en la matriz de la mayoría de las cámaras digitales, que difumina la imagen en diversos grados. Además, muchas veces es necesario aumentar la nitidez de las imágenes después de reducir su tamaño, porque en este caso se pierde inevitablemente parte de la información, y con ella la nitidez de los contornos.

Unsharp masking es una técnica que, al aumentar el contraste de las transiciones entre tonos en una imagen, mejora su percepción visual debido a la ilusión de nitidez. De hecho, la nitidez se mantiene al mismo nivel, porque en principio es imposible restaurar los detalles perdidos de la imagen, pero mejorar el contraste entre áreas de diferente brillo hace que la imagen se perciba más clara.

Figura 5.1 - Ilustración del concepto de "nitidez del contorno"

La nitidez de la imagen depende de la magnitud de la diferencia de brillo entre las áreas (W) que forman sus contornos, y de la nitidez del cambio en esta diferencia (H).

La técnica de enmascaramiento de enfoque se aplicó por primera vez al procesamiento de fotografías de películas. El método adaptado para el procesamiento de imágenes digitales difiere poco del original: la llamada "máscara de enfoque" se resta de la imagen, su copia borrosa e invertida. El resultado es una nueva imagen que contiene solo los contornos claros del original. Los contornos oscuros se pueden obtener simplemente invirtiendo el resultado.

Si resta aún más los bordes oscuros de la imagen original y agrega bordes claros, obtendrá un aumento significativo en el contraste en cada diferencia de brillo.

Cualquiera de los filtros de reducción de ruido, como el filtro gaussiano, se puede utilizar para desenfocar el original con el fin de obtener una "máscara de enfoque".

Figura 5.2 - El resultado de aplicar un enmascaramiento de enfoque

La operación de convolución se usa con bastante frecuencia en el procesamiento de imágenes. Además de dar nitidez, se utiliza para difuminar, aumentar el brillo, dar brillo, etc.

La convolución de imágenes es la operación de calcular un nuevo valor de un píxel dado, que tiene en cuenta los valores de los píxeles vecinos que lo rodean. En un sentido general, este término significa alguna acción que se realiza en cada parte de la imagen.

El elemento principal de la convolución es la máscara de convolución: esta es una matriz (de tamaño y relación de aspecto arbitrarios). A menudo, dicha máscara se denomina filtro, núcleo, plantilla o ventana. Los valores de los elementos de la matriz suelen denominarse coeficientes.

Muy a menudo, se utiliza una matriz cuadrada como núcleo de convolución.

El procesamiento de la imagen por la operación de convolución se produce de la siguiente manera: el elemento central de la matriz, llamado "ancla", se superpone sucesivamente a cada píxel de la imagen. El nuevo valor del píxel considerado se calcula como la suma de los valores de los píxeles vecinos multiplicados por sus correspondientes coeficientes de máscara de convolución.

El efecto resultante depende del kernel de convolución seleccionado.

El kernel de filtro boost tiene un valor mayor que 1 en el punto (0, 0), con la suma total de todos los valores igual a 1. Por ejemplo, un filtro boost son filtros con kernels dados por matrices:

El efecto de aumentar el contraste se logra debido al hecho de que el filtro enfatiza la diferencia entre las intensidades de los píxeles vecinos, eliminando estas intensidades entre sí. Este efecto será más fuerte cuanto mayor sea el valor del término central del núcleo.

El filtrado mejorado de contraste lineal basado en convolución puede causar halos de color visibles alrededor de los bordes de la imagen.

Compensación de diferencia de luz

Los problemas de iluminación de la imagen ocurren con mayor frecuencia cuando las ventanas, el sol u otras fuentes de luz no reguladas ingresan al marco.

Esta situación se denomina "exceso de luz" y conduce al hecho de que, debido a una iluminación de contrafuerte demasiado brillante, los detalles y los colores de los objetos ubicados contra el fondo de objetos demasiado brillantes se pierden y se vuelven difíciles de distinguir.

La situación de falta de luz también se encuentra a menudo. Puede ser causado por grabar en habitaciones oscuras con poca iluminación, así como por un rango de sensibilidad limitado del equipo de video.

Algoritmo Retinex de escala única

Cuando intenta iluminar la imagen aumentando el brillo de cada píxel en un valor fijo, inicialmente las áreas claras pueden resultar completamente sobreexpuestas.

En tales casos, se requiere aplicar una corrección de color “inteligente”, que sería capaz de igualar la iluminación de la imagen, procesando las áreas claras en menor medida que las oscuras.

Estos requisitos se cumplen mediante el algoritmo Retinex de escala única basado en los principios de los receptores retinales. El objetivo principal del algoritmo es dividir la imagen en componentes que son responsables por separado de la iluminación y los detalles. Dado que los problemas en la imagen están relacionados con la iluminación de la escena, luego de recibir el componente responsable de la iluminación, es posible transformarlo por separado de la imagen, lo que aumenta significativamente su calidad.

Cualquier imagen se puede representar como el producto de una señal de alta frecuencia (reflexión - R) y una señal de baja frecuencia (iluminancia - I).

S(x,y) = I(x,y) * R(x,y)(5.6)


Figura 5.3 - Representación de la imagen en el algoritmo Retinex.

Se puede obtener una imagen aproximada de la iluminación utilizando un filtro de paso bajo; en otras palabras, simplemente difumine la imagen original, por ejemplo, con un filtro gaussiano.

donde G -- filtro gaussiano

Como el logaritmo de la señal no cambia la frecuencia, y debido a las propiedades de la función logarítmica (el logaritmo del producto es igual a la suma de los logaritmos de los factores), la tarea de separar el producto de señales puede ser simplificado al problema de separar la suma de señales.

Después de eso, solo queda tomar el exponente de la señal recibida para devolverla a la escala de amplitud original. El componente de alta frecuencia resultante se puede agregar a la imagen original borrosa y brillante, que actúa como un nuevo modelo de iluminación.

El efecto obtenido de la ecualización de la luz puede ser demasiado fuerte (las áreas oscuras tendrán el mismo brillo que las claras). Para reducir el efecto, simplemente puede mezclar la imagen procesada con el original en cierta proporción.

Corrección gamma

El propósito original de la corrección gamma es compensar las diferencias en los colores mostrados en diferentes dispositivos de salida para que la imagen se vea igual cuando se ve en diferentes monitores. Debido a la forma no lineal de la función de potencia aplicada, la corrección gamma también permite aumentar el contraste de las áreas oscuras de la imagen sin resaltar los detalles brillantes y sin perder la visibilidad de los límites de los objetos de la imagen.

Información de brillo en forma analógica en la televisión, así como en formulario digital en los formatos gráficos más comunes, almacenados en una escala no lineal. El brillo de un píxel en la pantalla de un monitor puede considerarse proporcional

donde I es el brillo del píxel en la pantalla (o el brillo de los componentes de color, rojo, verde y azul por separado),

V es un valor de color numérico de 0 a 1, y

r -- índice de corrección gamma .

Si r es menor que 1, entonces la característica de transferencia de nivel será convexa y la imagen resultante será más clara que la original. Si r es mayor que 1, entonces la característica de transferencia de nivel será cóncava y la imagen resultante será más oscura que la original.

Por defecto, el parámetro r es 1, lo que corresponde a una transmisión lineal de niveles y sin corrección gamma.

Selección de contorno de imagen

El análisis de contorno se puede utilizar para describir, reconocer, comparar y buscar objetos gráficos representados como contornos externos. Dado que el uso de contornos excluye los puntos internos del objeto, esto puede reducir significativamente la complejidad computacional y algorítmica de estas operaciones.

Figura 5.4 - Cambiar el tipo de función de potencia según el parámetro r

El contorno de un objeto es una lista de puntos que representan una curva en una imagen que separa el objeto del fondo. La mayoría de las veces, hay un salto en el brillo o el color a lo largo del contorno.

Para simplificar la búsqueda de contornos en la imagen, puede pre-binarizarlo.

El filtro Sobel resalta los bordes de los objetos en función de su brillo. Dado que el componente de color no se tiene en cuenta, las imágenes primero deben convertirse a escala de grises.

El filtro Sobel se aplica secuencialmente a cada píxel, calculando el valor aproximado de su gradiente de brillo. El gradiente para cada punto de la imagen (función de brillo) es un vector bidimensional cuyos componentes son las derivadas horizontal y vertical del brillo de la imagen.

En cada punto de la imagen, el vector de gradiente está orientado en la dirección del mayor aumento de brillo y su longitud corresponde a la cantidad de cambio en el brillo. Estos datos nos permiten hacer una suposición sobre la probabilidad de encontrar el punto considerado en el límite de un determinado objeto, así como sobre la orientación de este límite.

Eso. el resultado de la operación del operador de Sobel en un punto en la región de brillo constante será un vector cero, y en un punto que se encuentra en el borde de las regiones de brillo diferente, un vector que cruza el borde en la dirección del brillo creciente.

Para calcular los valores aproximados de las derivadas en cada punto de la imagen, el filtro de Sobel utiliza una convolución con una matriz de 3×3.

Coeficientes de la matriz de Sobel:

El valor final del gradiente se calcula por aproximación según la fórmula:

|G| = |Gx| + |Gy|

Detector de límites Kenny

Aunque el trabajo de Kenny se realizó en los primeros días de la visión artificial (1986), el detector de bordes de Kenny sigue siendo uno de los mejores detectores de la actualidad. El método de Kenny es un algoritmo de varias etapas e incluye los siguientes pasos:

1. Limpiar la imagen de ruidos y detalles innecesarios.

2. Limpiar la imagen de ruidos y detalles innecesarios.

3. Busque degradados de imagen, por ejemplo, utilizando el operador Sobel.

4. Supresión de no máximos. Solo los máximos locales están marcados como límites.

5. Filtrado de doble umbral. Los límites potenciales se definen mediante umbrales.

6. Trazado de caminos (Vincular bordes a caminos)

Dado que el más mínimo ruido en la imagen puede romper la integridad de sus contornos, se recomienda filtrar la imagen utilizando cualquier método de reducción de ruido antes de iniciar la búsqueda. Debido a la alta velocidad de operación y la facilidad de implementación, el filtro gaussiano se usa con mayor frecuencia. Los bordes de una imagen pueden estar en diferentes direcciones, por lo que el algoritmo de Kenny usa cuatro filtros para detectar bordes horizontales, verticales y diagonales. Utilizando un operador de detección de bordes (como el operador de Sobel) se obtiene el valor de la primera derivada en la dirección horizontal (Gy) y en la dirección vertical (Gx). A partir de este degradado, puede obtener el ángulo de la dirección del borde:

El ángulo de dirección del borde se redondea a uno de los cuatro ángulos que representan vertical, horizontal y dos diagonales (por ejemplo, 0, 45, 90 y 135 grados). Solo se declaran como bordes aquellos píxeles en los que se alcanza el máximo local del gradiente en la dirección del vector de gradiente. El valor de la dirección debe ser un múltiplo de 45°. Después de suprimir los no máximos, los bordes se vuelven más precisos y delgados.

En el siguiente paso, el filtrado de umbral determina para cada píxel considerado si pertenece a los límites de la imagen. Cuanto más alto sea el umbral, más uniformes serán los contornos encontrados; sin embargo, los bordes débiles pueden ignorarse. Por otro lado, la disminución del umbral aumenta la susceptibilidad del algoritmo al ruido. La detección de bordes de Kenny usa dos umbrales de filtrado: si el valor de píxel está por encima del límite superior, toma valor máximo(el límite se considera válido), si está por debajo: el píxel se suprime, los puntos con un valor que se encuentra en el rango entre los umbrales toman un valor promedio fijo (se refinarán en el siguiente paso).

La última etapa del procesamiento de imágenes es unir bordes individuales en contornos uniformes. Los píxeles que han recibido el valor promedio en el paso anterior se suprimen (si no tocan ninguno de los bordes ya detectados) o se adjuntan al contorno correspondiente.

Segmentación

La mayoría de las imágenes obtenidas de los equipos de fotografía y video son raster, es decir, consisten en puntos de colores dispuestos en una cuadrícula rectangular. Sin embargo, las personas perciben el mundo que les rodea como una colección de objetos sólidos y no como una matriz de puntos. El cerebro humano es capaz de unir los detalles dispares de la imagen en áreas homogéneas, dividiéndola claramente en objetos a nivel subconsciente. Este proceso se denomina segmentación y se puede implementar en el software al resolver el problema del análisis de imágenes por computadora y el reconocimiento de patrones. La segmentación se realiza en las primeras etapas de análisis, y la calidad de su implementación puede tener un fuerte impacto en su velocidad y precisión.

Los métodos de segmentación se pueden dividir en dos clases: automáticos, que no requieren la interacción del usuario e interactivos, que utilizan la entrada del usuario directamente en el proceso.

En el primer caso, no se utiliza información a priori sobre las propiedades de las regiones, sino que se imponen algunas condiciones a la propia partición de la imagen (por ejemplo, todas las regiones deben ser uniformes en color y textura). Dado que esta formulación del problema de segmentación no utiliza información a priori sobre los objetos representados, los métodos de este grupo son universales y aplicables a cualquier imagen.

Para una estimación aproximada de la calidad de un método en una tarea particular, se suelen fijar varias propiedades que debe tener una buena segmentación:

§ Homogeneidad de regiones (uniformidad de color o textura);

§ disimilitud de regiones vecinas;

§ suavidad del borde de la región;

§ un pequeño número de pequeños "agujeros" dentro de las regiones;

Segmentación de umbral

El procesamiento de umbral es el método más simple orientado al procesamiento de imágenes, cuyas áreas homogéneas individuales difieren en el brillo promedio. Sin embargo, si la imagen está iluminada de manera desigual, algunos de los objetos pueden coincidir con la intensidad del fondo, lo que hará que la segmentación del umbral sea ineficaz.

El tipo de segmentación de umbral más simple y al mismo tiempo más utilizado es la segmentación binaria, cuando solo se distinguen dos tipos de áreas homogéneas en la imagen.

En este caso, la transformación de cada punto de la imagen de origen en la imagen de salida se realiza de acuerdo con la regla:

donde x0 es el único parámetro de procesamiento denominado umbral. Los niveles de brillo de salida y0 e y1 pueden ser arbitrarios, solo funcionan como marcadores, con la ayuda de los cuales se marca el mapa resultante, asignando sus puntos a las clases K1 o K2, respectivamente. Si la preparación resultante está preparada para la percepción visual, a menudo sus valores corresponden a los niveles de blanco y negro. Si hay más de dos clases, entonces se debe especificar una familia de umbrales durante la umbralización, separando los brillos de diferentes clases entre sí.

La segmentación de umbral es adecuada para seleccionar una pequeña cantidad de objetos que no se cruzan en una imagen que tienen una estructura uniforme y se destacan claramente del fondo. A medida que aumenta el grado de heterogeneidad de la imagen y, por tanto, el número de segmentos y su complejidad, este tipo de segmentación se vuelve ineficiente.

Segmentación basada en la partición de un gráfico

Los métodos de teoría de grafos son una de las áreas de desarrollo más activas en la segmentación de imágenes.

La idea general de los métodos de este grupo es la siguiente. La imagen se representa como un gráfico ponderado, con vértices en los puntos de la imagen. El peso del borde del gráfico refleja la similitud de los puntos en algún sentido (la distancia entre los puntos a lo largo de alguna métrica). La partición de la imagen se modela mediante cortes de gráfico.

Por lo general, en los métodos de teoría de grafos, se introduce un funcional de "costo" de corte, que refleja la calidad de la segmentación resultante. Por lo tanto, el problema de dividir una imagen en regiones homogéneas se reduce a un problema de optimización de encontrar un corte de costo mínimo en un gráfico. Este enfoque permite, además de la uniformidad del color y la textura de los segmentos, controlar la forma de los segmentos, su tamaño, la complejidad de los bordes, etc.

Se utilizan varios métodos para encontrar el corte de costo mínimo: algoritmos voraces (se elige un borde en cada paso para que el costo total del corte sea mínimo), métodos de programación dinámica (se garantiza que al elegir el borde óptimo en cada paso, terminaremos con la ruta óptima), algoritmo Dijkstra, etc.

Interpolación

EN gráficos de computadora el método de interpolación se usa a menudo en el proceso de cambio de escala de imágenes. Al cambiar el número de píxeles de la imagen, la interpolación ayuda a evitar la pixelización excesiva de la imagen cuando se amplía o la pérdida de detalles importantes cuando se reduce.

Durante el proceso de interpolación, se insertan puntos adicionales entre los píxeles de la imagen, cuyo tono y color estimados se calculan mediante un algoritmo especial basado en el análisis de los datos disponibles en las áreas vecinas. Desafortunadamente, dado que cualquier interpolación es solo una aproximación, la imagen invariablemente perderá calidad cada vez que se interpole.

Interpolación del vecino más cercano

Este algoritmo es el tipo de interpolación más simple, simplemente aumentando cada píxel de la imagen a la escala requerida. Requiere el menor tiempo de procesamiento, pero conduce a los peores resultados.

Interpolación bilineal

Este tipo de interpolación se realiza para cada coordenada de la cuadrícula bidimensional. La imagen se considera como una superficie, color - la tercera dimensión. Si la imagen es en color, la interpolación se realiza por separado para tres colores. Para cada punto desconocido en la nueva imagen, la interpolación bilineal considera un cuadrado de cuatro píxeles conocidos que lo rodean. El promedio ponderado de estos cuatro píxeles se utiliza como valor interpolado. Como resultado, las imágenes se ven mucho más suaves que el resultado del método del vecino más cercano.

La interpolación bilineal funciona bien con valores enteros grandes de factores de escala, sin embargo, difumina bastante los bordes nítidos de la imagen.

La interpolación bicúbica va un paso más allá que la bilineal, considerando una matriz de píxeles circundantes de 4x4, 16 en total. diferentes distancias de un píxel desconocido, los píxeles más cercanos reciben más peso en el cálculo. La interpolación bicúbica produce imágenes significativamente más nítidas que los dos métodos anteriores y posiblemente sea el mejor en términos de tiempo de procesamiento y calidad de salida. Por esta razón, se ha convertido en estándar en muchos programas de edición de imágenes (incluido Adobe Photoshop), controladores de impresora e interpolación de cámara integrada.

La imagen escalada puede volverse significativamente menos nítida. Los algoritmos de interpolación que conservan mejor la nitidez también son más propensos al moiré, mientras que los que eliminan el moiré tienden a producir resultados más suaves. Desafortunadamente, esta compensación de escala no se puede evitar.

Uno de mejores maneras Para combatir esto, aplique una máscara de enfoque inmediatamente después de escalar, incluso si el original ya se ha enfocado.

5.2 Justificación de la elección de los algoritmos utilizados en el subsistema

El requisito principal para el paquete de software desarrollado fue minimizar el retraso en la reproducción de la transmisión de video durante su procesamiento preliminar en un clúster de computación. Además, el rodaje puede tener lugar en cualquier condición, lo que significa que en poco tiempo fue necesario implementar una gran cantidad de filtros simples para neutralizar varios efectos negativos. Además, fue necesario estudiar una gran cantidad de factores negativos que aparecían en el video en poco tiempo e implementar filtros simples para neutralizarlos. Los algoritmos que satisfagan los requisitos presentados deben ser de fácil acceso, estar bien optimizados, tener alta confiabilidad y, al mismo tiempo, ser fáciles de implementar. Las funciones de la biblioteca OpenCV tienen tales propiedades, por lo tanto, al elegir métodos específicos para implementar filtros de procesamiento de flujo de video, se dio prioridad a los algoritmos contenidos en esta biblioteca de una forma u otra.

Todos los algoritmos considerados en la parte teórica del trabajo final de calificación se implementaron en forma de prueba con el fin de comparar sus características en la práctica. En particular, se dio preferencia a un compromiso entre la velocidad de procesamiento de un cuadro de transmisión de video y la calidad del resultado.

Como resultado, se eligieron los siguientes algoritmos para implementar los filtros de procesamiento de transmisión de video en el clúster de computación:

1. Se eligió el algoritmo gaussiano para eliminar el ruido "blanco aditivo". Como el método de reducción de ruido más común, está muy bien optimizado y, por lo tanto, tiene una alta velocidad.

2. Se eligió el algoritmo gaussiano para eliminar el ruido “blanco aditivo”. Como el método de reducción de ruido más común, está muy bien optimizado y, por lo tanto, tiene una alta velocidad de operación.

3. Se eligió el filtrado mediano para eliminar el ruido de "impulso". Este método también está bien optimizado y fue diseñado específicamente para eliminar el ruido impulsivo y de sal y pimienta.

4. Se eligió la convolución para hacer más nítida la imagen, ya que funciona mucho más rápido que el enmascaramiento sin enfoque, y al mismo tiempo ofrece resultados aceptables.

5. La biblioteca OpenCV no contiene algoritmos de corrección de color; por lo tanto, se decidió implementar el algoritmo Retinex de escala única más común y mejor documentado. Este método tiene una eficiencia muy alta, pero requiere optimización para acelerar el trabajo.

6. Se eligió el algoritmo de Kenny como método para la detección de bordes, ya que da mejores resultados que el filtro de Sobel.

7. El algoritmo de segmentación piramidal presentado en la biblioteca OpenCV es extremadamente lento, por lo que se decidió utilizar el algoritmo de segmentación considerado anteriormente en gráficos.

8. interpolación: se eligió el método de interpolación bicúbica como el compromiso más razonable entre la velocidad del trabajo y la calidad del resultado.

Instalación y configuración del software utilizado.

El clúster de cómputo utilizado estaba ejecutando GNU Linux (Ubuntu)

Después de instalar el sistema operativo, debe instalar varias bibliotecas que admitan leer y escribir archivos de imagen, dibujar en la pantalla, trabajar con video, etc.

Instalación de CMake

El proyecto está construido usando CMake (requiere la versión 2.6 o superior). Puedes instalarlo con el comando:

apt-get install cmake

También puede necesitar las siguientes bibliotecas:

build-essential libjpeg62-dev libtiff4-dev libjasper-dev libopenexr-dev libtbb-dev libeigen2-dev libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev

Instalando ffmpeg

Para que opencv procese los archivos de video correctamente, debe instalar la biblioteca ffmpeg. Esto se hace con los siguientes comandos:

1) Descargando los códigos fuente de la biblioteca

wget http://ffmpeg.org/releases/ffmpeg-0.7-rc1.tar.gz

2) Desempaquetar el archivo con códigos fuente

tar -xvzf ffmpeg-0.7-rc1.tar.gz

3) Configuración de la biblioteca

configure --enable-gpl --enable-version3 --enable-nonfree --enable-postproc

habilitar-libfaac --habilitar-libopencore-amrnb --habilitar-libopencore-amrwb

Habilitar-libtheora --habilitar-libvorbis --habilitar-libxvid --habilitar-x11grab

Habilitar-swscale --habilitar-compartido

4) Construcción e instalación de la biblioteca

instalación GTK

La visualización de ventanas OpenCV requiere GTK+ 2.x o superior instalado, incluido archivos de encabezado(libgtk2.0-dev)

apt-get install libgtk2.0-dev

Instalando Opencv

Después de instalar todas las bibliotecas relacionadas, la instalación de opencv2.2 se realiza con los siguientes comandos:

1) Descargando los códigos fuente de la biblioteca OpenCV

http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.2/OpenCV-2.2.0.tar.bz2

2) Desempaquetar el archivo con códigos fuente

tar -xvf OpenCV-2.2.0.tar.bz2

3) generar un Makefile usando CMake.

4) construir e instalar la biblioteca OpenCV

5) Es posible que también deba establecer la ruta a las bibliotecas

exportar LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

Instalación y compilación del paquete de software desarrollado

necesito copiar códigos fuente programas del disco adjunto a esta nota explicativa. Copie el archivo por lotes build_all.sh en la misma carpeta y luego ejecútelo. Si el compilador gcc está instalado en el sistema, la compilación se realizará automáticamente.

La esencia del procesamiento de imágenes es llevar la imagen original de la escena a una forma que permita resolver el problema de reconocer sus objetos.

El objetivo final del procesamiento de imágenes en VS es preparar los objetos de la escena para el reconocimiento, es decir, asignando sus imágenes a unas clases predeterminadas. A pesar de la variedad de procedimientos de conversión de información que se presentan, en los SV se suelen distinguir tres etapas principales de procesamiento:

1) preprocesamiento de imágenes;

2) segmentación;

3) descripción.

El preprocesamiento, a su vez, tiene dos etapas básicas: la formación de la imagen y su codificación (compresión). La secuencia de pasos no es rígida y depende de la tarea específica.

Preprocesamiento de imágenes

Todos los métodos de preprocesamiento de imágenes en VS se dividen en espaciales y de frecuencia. Los métodos espaciales son procedimientos que operan directamente sobre los píxeles de una imagen. El brillo se utiliza como una característica de una imagen. Y(x, y). Los métodos de frecuencia están asociados con la traducción de la imagen al plano complejo utilizando la transformada de Fourier.

Al considerar los procedimientos de preprocesamiento, nos limitaremos a solo métodos espaciales y la imagen original se considerará en escala de grises.

En la primera etapa de preprocesamiento, formación de imagen La formación de imágenes es el procedimiento para obtener directamente una imagen en forma de una matriz de elementos discretos ubicados en la memoria del procesador de video: píxeles que forman una matriz o contorno.

En STZ, en la etapa de formación de la imagen, se selecciona un umbral de brillo ajustando la iluminación y se filtra la imagen.

Filtración La imagen es la etapa más larga y compleja del preprocesamiento. En general, el filtrado resuelve las siguientes tareas principales:

suavizado (supresión de ruido de alta frecuencia como "nieve");

aumento en el contraste;

selección de contorno.

El procedimiento de suavizado se implementa inmediatamente después de seleccionar el umbral de brillo. Su significado radica en promediar según una determinada regla los valores de la función de brillo Y(X, y) dentro del fragmento de imagen analizado.

Se utiliza un filtro de paso bajo para eliminar la interferencia de alta frecuencia del tipo "nieve". desventaja filtrado de paso bajo es un deterioro en el contraste de la imagen.

Segmentación



Como resultado del procesamiento previo, la imagen contiene una o más representaciones de contorno de objetos. El procedimiento para separar estos contornos y relacionarlos con ciertos objetos se llama segmentación.

Si se sabe a priori que la imagen contiene varios objetos, el procedimiento de segmentación se realiza después de la extracción del contorno antes de la etapa de codificación de la imagen.

Los algoritmos de segmentación, por regla general, se basan en la búsqueda de discontinuidades en el contorno y la similitud de las áreas. En el primer caso, se encuentra el contorno y su omisión de software se lleva a cabo de acuerdo con la regla establecida. Si el contorno es cerrado, se considera que pertenece al objeto. En el segundo caso, se determinan áreas de la imagen que tienen propiedades comunes (por ejemplo, el mismo brillo de píxeles). Cuando se encuentran dichas áreas, se asignan al fondo o al objeto.

Codificación de imágenes

Para los sistemas que procesan imágenes en escala de grises con métodos espaciales, existen dos métodos de codificación principales:

· codificación de la propia imagen por el método de códigos de longitud de ejecución;

· codificación del contorno de la imagen por el código de cadena de Freeman.

En ambos casos, al codificar, hay una reducción significativa en la cantidad de datos que caracterizan la imagen. La eficiencia de codificación está determinada por el grado de compresión de la imagen.

La esencia de la codificación por el método de los códigos. longitud de la serie, implementado utilizando el algoritmo RLE, es representar la imagen como segmentos homogéneos de la línea de exploración, donde el brillo y el color de los píxeles son los mismos. Además, cada serie se caracteriza por el valor correspondiente y la longitud de la serie (número de píxeles).

Para codificar directamente el contorno de la imagen, se suele utilizar la cadena. código de hombre libre(Figura 6.22, b). En este caso, el contorno del objeto, a partir de un punto determinado, está dado por una secuencia de vectores que toman valores discretos, siendo el módulo del ángulo de inclinación divisible por 45. El valor del módulo es 2 si el vector del ángulo de inclinación es 45 , y 1 si está en posición vertical u horizontal. El cambio en la dirección del vector durante la transición de un punto de la curva a otro refleja la naturaleza del cambio en la curva modelada.



descripción de la imagen

Bajo descripción se entiende la definición de los parámetros característicos de un objeto - señales(discriminadores) necesarios para su selección entre todos los que forman la escena.

Según su naturaleza física, los signos se dividen en globales y locales. Característica global images es una característica que se puede calcular para cualquier imagen de un objeto.

Signos locales usado menos; no caracterizan toda la imagen, sino solo una parte de ella. Estos incluyen el ángulo entre dos líneas de contorno, el número y los parámetros de los agujeros en la imagen del objeto, etc.

Reconocimiento de imagen

Reconocimiento es un proceso en el que, sobre la base de un conjunto de características de una determinada imagen de un objeto, se determina su pertenencia a una determinada clase.

El reconocimiento implementa la función de análisis de imágenes visuales..

Convencionalmente, todos los métodos de reconocimiento se pueden dividir en dos grupos: teóricos y estructurales. Los métodos de reconocimiento teórico más comunes utilizan los principios de la teoría de la decisión.

Es imposible determinar el valor real de las características de un objeto, ya que los valores difieren con cada medida. Por tanto, la tarea de reconocimiento se plantea de la siguiente manera: determinar la probabilidad de que un objeto pertenezca a una determinada clase.

Una de las áreas más interesantes del reconocimiento de patrones en VS está relacionada con el desarrollo de algoritmos de reconocimiento facial. El algoritmo de reconocimiento (verificación) está cerca del algoritmo de registro. Las características extraídas de la imagen actual se combinan en un vector de características, cuyos componentes se comparan con los componentes correspondientes de todos los vectores contenidos en la base de datos.

Laboratorio #1

Algoritmos de procesamiento de imágenes

operación de convolución

La convolución es un algoritmo muy amplio que se puede utilizar tanto para el preprocesamiento de imágenes como para el reconocimiento e identificación de objetos. Deje que la imagen esté dada por una matriz de brillo bidimensional F" , y la matriz de respuesta al impulso H. Convolución matemática de una matriz F con núcleo H puede definirse mediante la siguiente fórmula:

Dónde M2xN2: tamaño de la matriz del kernel de convolución. Tamaño de la matriz F es igual a (M1+M2-1)x(N1+N2-1), donde M1xN1 - el tamaño de la matriz original F" . Matriz F se obtiene del original agregando elementos en los bordes de la matriz de acuerdo con alguna regla para llevarla al tamaño requerido. Por lo general, la matriz original se rellena con ceros en los bordes por la mitad del ancho de la matriz. H izquierda y derecha y, respectivamente, la mitad de la altura hacia arriba y la misma hacia abajo. Entonces el tamaño de la matriz resultante R será igual a la matriz F" .

La convolución se puede calcular directamente "ejecutando" una matriz sobre otra, como ya se mostró arriba. En la fig. 1 muestra el esquema para calcular la convolución (el tamaño de la matriz de máscara se toma igual a 3x3). El operador de convolución se puede ver como una matriz de coeficientes (máscaras) que se multiplican elemento por elemento con el fragmento de imagen seleccionado, seguido de la suma para obtener un nuevo valor del elemento de imagen filtrado. Esta matriz puede ser de tamaño arbitrario, no necesariamente cuadrada.

Arroz. 1. Implementación de la operación de convolución.

Ejercicio

    Implementar un algoritmo que realice la operación de convolución de la imagen original con una máscara de matriz.

    El usuario establece el tamaño y el tipo de máscara de matriz.

    Utilice las siguientes matrices de máscara para implementar varios algoritmos de procesamiento de imágenes:

    • para suavizar y suprimir el ruido en la imagen, se utiliza una máscara de matriz de 3x3 de la siguiente forma:

    para enfatizar los contornos, se utilizan máscaras de matriz de la siguiente forma:

1/9*

    La máscara de la siguiente forma se utiliza para seleccionar contornos:

4. Implemente un filtro mediano, que se utiliza para suprimir el ruido puntual y de impulso. El píxel de la imagen y sus vecinos en el área bajo consideración se organizan en una serie variacional (en valores de píxel ascendentes o descendentes) y el valor central de esta serie variacional se selecciona como un nuevo valor de píxel. El resultado del filtrado promedio es que cualquier ruido aleatorio contenido en la imagen será eliminado de manera efectiva. Esto se debe a que se ordenará cualquier cambio abrupto aleatorio en la intensidad de los píxeles dentro de la región bajo consideración, es decir, se colocará en la parte superior o inferior de los valores ordenados en esa región y no se contará ya que el valor central siempre se toma para el valor del nuevo elemento.

5. Implementar el algoritmo de estampado. El grabado en relieve se realiza de manera similar a los algoritmos de mejora de bordes o promediación. Cada píxel de la imagen es procesado por un núcleo de relieve de 3x3 (máscara de matriz). Por ejemplo, como núcleo de relieve, puede tomar la siguiente matriz de máscara:

Después de que el motor de estampado procesa el valor del píxel, se le agrega 128. Por lo tanto, el valor de los píxeles de fondo se convertirá en el color gris promedio (rojo = 128, verde = 128, azul = 128). Los importes superiores a 255 se pueden redondear hasta 255.

En la versión en relieve de la imagen, los contornos parecen estar extruidos sobre la superficie. La dirección del resaltado de la imagen se puede cambiar cambiando las posiciones 1 y -1 en el kernel. Si, por ejemplo, se intercambian los valores 1 y -1, entonces se invierte la dirección de la luz de fondo.

6. Acuarela de la imagen. El filtro de acuarela transforma la imagen y, después de procesarla, parece que fue escrita en acuarela:

    El primer paso para aplicar un filtro de acuarela es suavizar los colores de la imagen. Una forma de suavizar es aplicar un promedio de color medio en cada punto. El valor de color de cada píxel y sus 24 vecinos (el tamaño de la máscara de matriz es 5x5) se organizan en una serie variacional en orden descendente o ascendente. El valor de color mediano (decimotercero) en la serie de variación se asigna al píxel central.

    después de suavizar los colores, debe aplicar un filtro de mejora de bordes para resaltar los bordes de las transiciones de color.