¡Descarga Procesamiento de señales de audio y video mediante filtros digitales y más Monografías, Ensayos en PDF de Estadística Aplicada solo en Docsity!
Taller N.- 6
Nombre: Edison Tisalema
Objetivos:
➢ Comprender los conceptos básicos del análisis espectral. ➢ Diseñar y aplicar filtros digitales. ➢ Procesar señales de voz y audio. ➢ Tratar imágenes y videos mediante técnicas de filtrado Link de Google con los Archivos de Matlab, imágenes, videos usados en el presente informe de resultados:
https://drive.google.com/drive/folders/1Oq8FB_RUXdIQ08UVwb
oqP6ZUwFlzlG7U?usp=drive_link
Desarrollo:
Módulo 1: Análisis Espectral
Contenido:
Introducción al análisis espectral El análisis espectral de una señal es una técnica que permite descomponer una señal en sus componentes de frecuencia. Esto se logra mediante la Transformada de Fourier , que convierte una señal del dominio del tiempo al dominio de la frecuencia. En términos simples, el análisis espectral te muestra cómo se distribuyen las diferentes frecuencias dentro de una señal. Por ejemplo, si tienes una señal de audio, el análisis espectral te permitirá ver qué frecuencias (graves, medios, agudos) están presentes y con qué intensidad Representación en frecuencias de diferentes señales: Transformada de Fourier. La Transformada de Fourier (TF) es una herramienta matemática que permite descomponer una señal en una suma de ondas senoidales. Esta técnica es crucial para el análisis espectral, ya que transforma una señal del dominio del tiempo al dominio de la frecuencia. Espectrograma. El espectrograma es una representación gráfica que muestra cómo varía el espectro de frecuencias de una señal a lo largo del tiempo. En este caso, el eje horizontal representa el tiempo, el eje vertical representa la frecuencia y la intensidad de color o el brillo indica la amplitud de la señal en cada frecuencia. Esta representación es útil para analizar señales no estacionarias, como las grabaciones de voz o música. Análisis de Forma de Onda. El análisis de forma de onda representa los valores instantáneos de una señal en función del tiempo. Esta representación permite observar cómo la amplitud de la señal cambia con el tiempo, y se puede utilizar para identificar patrones o anomalías en la señal. Densidad Espectral de Potencia. La densidad espectral de potencia (DSP) es otra forma de representar el contenido de frecuencia de una señal. Se utiliza para analizar la potencia de diferentes componentes de frecuencia dentro de una señal. Una técnica común para calcular la DSP es el periodograma, que estima la potencia en diferentes frecuencias a partir de una serie de muestras de la señal. Gráficos Tridimensionales. Las señales también pueden representarse en gráficos tridimensionales, donde el eje horizontal muestra la frecuencia, el eje vertical la amplitud y el
eje de profundidad el tiempo. Esta representación es útil para visualizar la variación rápida de la amplitud de diferentes componentes espectrales en el tiempo. Ejemplos de Aplicación: Vibraciones en Máquinas : En la industria, el análisis espectral se utiliza para identificar fallas en componentes mecánicos. Por ejemplo, las vibraciones de un rodamiento pueden ser analizadas para detectar patrones que indiquen desgaste o fallas inminentes. Sonido y Música : En el ámbito musical, el espectrograma permite a los ingenieros de sonido visualizar y modificar las frecuencias de una grabación, facilitando la mezcla y la producción de música. Transformada Discreta de Fourier (TDF) La Transformada Discreta de Fourier (TDF) es una herramienta fundamental en el análisis espectral de señales discretas. La TDF transforma una secuencia de datos discretos en una representación en el dominio de la frecuencia. Se utiliza principalmente para analizar señales que han sido muestreadas, permitiendo identificar las frecuencias presentes en la señal original. Propiedades Clave:
- Linealidad : La TDF es una transformación lineal, lo que significa que la TDF de una suma de señales es igual a la suma de las TDFs de las señales individuales.
- Periodicidad : La TDF produce un espectro que es periódico con un periodo de N N , lo que implica que las frecuencias se repiten cada N N muestras.
- Inversibilidad : La TDF puede ser invertida mediante la Transformada Inversa de Fourier Discreta (IDFT), permitiendo recuperar la señal original a partir de su representación en frecuencia.
Análisis de Resultados
Código en MATLAB: % Ejemplo de Análisis Espectral usando TDF Fs = 1000; % Frecuencia de muestreo t = 0:1/Fs:1-1/Fs; % Vector de tiempo x = cos(2pi100t) + cos(2pi200t); % Señal de ejemplo con dos frecuencias % Calcular la TDF X = fft(x); f = (0:length(X)-1)*Fs/length(X); % Vector de frecuencias % Graficar figure; subplot(2,1,1); plot(t, x); title('Señal en el tiempo'); xlabel('Tiempo (s)'); ylabel('Amplitud'); subplot(2,1,2); plot(f, abs(X)/length(X)); title('Espectro de frecuencia'); xlabel('Frecuencia (Hz)'); ylabel('Amplitud'); El código que proporcionaste es un ejemplo de análisis espectral de una señal utilizando la Transformada Discreta de Fourier (TDF) en MATLAB. Aquí se explica detalladamente lo que hace el código:
- Se define la frecuencia de muestreo (Fs) como 1000 Hz.
- En el espectro de frecuencia, se pueden observar picos en las frecuencias de 100 Hz y 200 Hz cuya amplitud es de 0.5. Estos picos representan la magnitud de las componentes de frecuencia de la señal.
- La amplitud de los picos puede ser diferente, lo que indica que las frecuencias no contribuyen de manera igual a la energía total de la señal. Conclusiones:
- La presencia de picos en 100 Hz y 200 Hz confirma que estas son las frecuencias dominantes en la señal. Esto es consistente con la forma de onda que se observó en el dominio del tiempo.
- La amplitud de los picos en el espectro de frecuencia indica la contribución relativa de cada frecuencia a la señal total. Si el pico en 200 Hz es más alto que el de 100 Hz, se puede concluir que la frecuencia de 200 Hz tiene una mayor influencia en la señal.
- La ausencia de otros picos significativos en el espectro sugiere que no hay componentes de frecuencia adicionales presentes en la señal, lo que simplifica el análisis y la interpretación. Patrones en la Gráfica de la Señal en el Tiempo
- Periodicidad : La señal muestra una forma de onda periódica, lo que indica que contiene componentes de frecuencia estables. Esto es típico en señales que son la suma de ondas sinusoidales.
- Superposición de Frecuencias : La forma de la señal sugiere que hay una superposición de al menos dos frecuencias (100 Hz y 200 Hz), lo que se traduce en una complejidad en la forma de onda. Patrones en la Gráfica del Espectro de Frecuencia
- Picos en Frecuencias Específicas : Se observan picos en 100 Hz y 200 Hz, que indican que estas frecuencias son componentes significativas de la señal. La altura de los picos refleja la amplitud relativa de cada frecuencia.
- Ausencia de Componentes Adicionales : La falta de otros picos significativos sugiere que no hay frecuencias adicionales presentes en la señal, lo que simplifica el análisis y la interpretación.
- Relación Armónica : Si el pico en 200 Hz es el doble del 100 Hz, esto puede indicar una relación armónica, donde una frecuencia es un múltiplo entero de otra. Esto es común en señales que contienen armónicos. Resumen General ➢ Identificación de Frecuencias Dominantes : La gráfica del espectro permite identificar claramente las frecuencias que contribuyen a la señal, lo que es crucial en aplicaciones de procesamiento de señales. ➢ Análisis de Composición Espectral : La representación espectral facilita la comprensión de cómo se distribuye la energía de la señal entre diferentes frecuencias, lo que es útil en diversas aplicaciones, como el diagnóstico de sistemas y el análisis de audio Si mantenemos el Fs en 1000 Hz y cambiamos las dos señales coseno con frecuencias de 300 Hz y 500 Hz respectivamente.
Conclusión: ➢ Existe picos en 3 00 Hz y 5 00 Hz, lo que sigue indicando que estas frecuencias son componentes significativas de la señal. ➢ La grafica Señal en el tiempo : Muestra una onda periódica que oscila con una frecuencia constante a lo largo del tiempo, desde 0 hasta 1 segundo. La amplitud varía entre - 2 y 2. ➢ La grafica Espectro de frecuencia : Presenta tres picos distintos en el eje horizontal que representa la frecuencia en Hertz (Hz), desde 0 hasta 1000 Hz. Estos picos indican la presencia de frecuencias dominantes en la señal, siendo la de 500 Hz con amplitud 1 la dominante, lo que sugiere que estas frecuencias tienen una potencia significativa en la señal. Este tipo de análisis es útil para entender la composición de señales en campos como las telecomunicaciones, la ingeniería de audio y el procesamiento de señales.
plot(t, y); title('Señal filtrada'); xlabel('Tiempo (s)'); ylabel('Amplitud'); El código de MATLAB proporcionado diseña un filtro FIR (Finite Impulse Response) pasa bajos y lo aplica a una señal de prueba que contiene dos frecuencias. Aquí te explico paso a paso lo que hace:
- Se definen las variables:
- Fs: Frecuencia de muestreo (1000 Hz)
- Fpass: Frecuencia de paso (200 Hz)
- Fstop: Frecuencia de stop (300 Hz)
- Apass: Atenuación en banda de paso (1 dB)
- Astop: Atenuación en banda de stop (60 dB)
- Se diseña un filtro FIR pasa bajos utilizando la función designfilt() con los parámetros especificados anteriormente. El filtro se almacena en la variable d.
- Se grafica la respuesta en frecuencia del filtro utilizando la función fvtool().
- Se genera una señal de prueba x que contiene dos frecuencias: 100 Hz y 300 Hz.
- Se aplica el filtro diseñado a la señal x utilizando la función filter(), y el resultado se almacena en la variable y.
- Se grafica la señal original x y la señal filtrada y utilizando la función plot(). En resumen, este código:
- Diseña un filtro FIR pasa bajos con frecuencia de paso de 200 Hz y frecuencia de stop de 300 Hz.
- Genera una señal de prueba con dos frecuencias: 100 Hz y 300 Hz.
- Aplica el filtro diseñado a la señal de prueba para eliminar la frecuencia de 300 Hz.
- Grafica la señal original y la señal filtrada para visualizar el efecto del filtro. El objetivo es demostrar cómo diseñar y aplicar un filtro FIR pasa bajos utilizando MATLAB, y cómo este filtro puede eliminar componentes de alta frecuencia de una señal.
Resultados de Matlab:
La gráfica muestra la Respuesta en Magnitud (dB) de un sistema o filtro en función de la frecuencia, desde 0 hasta 500 Hz.
- Línea Azul : Esta línea representa la respuesta en magnitud del sistema. Se observa una caída brusca después de cierta frecuencia, lo que indica un punto de corte del filtro. Después de esta caída, la línea se aplana, sugiriendo que las frecuencias más allá de este punto son atenuadas significativamente.
- Línea Roja Punteada : Esta línea parece seguir la caída inicial de la línea azul antes de comenzar a oscilar. Esto podría representar una respuesta teórica o una comparación con otro filtro o sistema. Conclusiones:
- Punto de Corte : La caída brusca en la línea azul indica la frecuencia de corte del filtro, donde las frecuencias más altas son atenuadas.
- Atenuación : Las frecuencias más allá del punto de corte son atenuadas, lo que es típico en filtros pasa-bajos.
- Comparación : La línea roja punteada puede estar mostrando una comparación con otra respuesta en magnitud, posiblemente para evaluar la efectividad del filtro. Al analizar la gráfica, se pueden extraer varias conclusiones sobre el comportamiento del filtro FIR pasa bajos y su efecto en la señal original. Efecto del Filtro en la Señal
- Señal Original : La señal original x es la suma de dos componentes de frecuencia: una de 100 Hz y otra de 300 Hz. En la gráfica, se puede observar que ambas frecuencias están presentes, lo que resulta en una señal compuesta.
- Señal Filtrada : Después de aplicar el filtro FIR pasa bajos, la señal muestra que la componente de 300 Hz ha sido significativamente atenuada o eliminada. Esto es consistente con las características del filtro, que permite el paso de frecuencias por debajo de 200 Hz (frecuencia de paso) y atenúa las frecuencias superiores a 300 Hz (frecuencia de stop). Comportamiento del Filtro
- Frecuencia de Paso : La frecuencia de 100 Hz, que está por debajo de la frecuencia de paso (200 Hz), permanece casi intacta en la señal filtrada. Esto indica que el filtro está funcionando correctamente al permitir que las frecuencias deseadas pasen sin atenuación significativa.
- Frecuencia de Stop : La componente de 300 Hz, que está en la banda de stop del filtro, se ve notablemente reducida en la señal filtrada. Esto demuestra la efectividad del filtro para eliminar componentes no deseadas de alta frecuencia. Aplicaciones Prácticas
- Filtrado de Señales : Este tipo de filtrado es útil en diversas aplicaciones, como en sistemas de audio, procesamiento de señales biomédicas (por ejemplo, ECG), y en comunicaciones, donde es importante eliminar el ruido de alta frecuencia o interferencias.
Módulo 3: Procesamiento de Voz y Audio
Contenido:
Técnicas de filtrado para mejorar la calidad de grabaciones de voz. A continuación, algunas técnicas de filtrado que pueden mejorar la calidad de las grabaciones de voz:
- Reducción de ruido : Utiliza filtros de reducción de ruido para eliminar sonidos de fondo no deseados. Herramientas como Audacity y Adobe Audition tienen funciones específicas para esto.
- Ecualización (EQ) : Ajusta las frecuencias de la grabación para mejorar la claridad de la voz. Por ejemplo, puedes aumentar las frecuencias medias para hacer que la voz sea más clara y reducir las frecuencias bajas para eliminar ruidos de fondo.
- Compresión : Utiliza un compresor para nivelar las variaciones de volumen en la grabación. Esto ayuda a que todas las partes de la voz se escuchen de manera uniforme.
- Eliminación de reverberación : Aplica filtros para reducir la reverberación y el eco en la grabación. Esto es especialmente útil si la grabación se realizó en un espacio con mucha reverberación.
- Normalización : Ajusta el nivel de volumen general de la grabación para que todas las partes tengan un volumen consistente. Análisis espectral de señales de audio El análisis espectral de señales de audio es una técnica utilizada para descomponer una señal de audio en sus componentes de frecuencia. Esto permite visualizar cómo se distribuyen las diferentes frecuencias a lo largo del espectro auditivo. Aquí hay algunos puntos clave sobre el análisis espectral:
- Representación en el Dominio de la Frecuencia : En lugar de analizar la señal en el dominio del tiempo, el análisis espectral se enfoca en el dominio de la frecuencia. Esto se logra mediante transformaciones matemáticas como la Transformada de Fourier.
- Espectro de Frecuencia : El resultado del análisis espectral es un espectro de frecuencia, que muestra la amplitud (o potencia) de las diferentes frecuencias presentes en la señal de audio. Este espectro puede revelar características importantes de la señal, como tonos fundamentales, armónicos y ruido.
- Aplicaciones : El análisis espectral es ampliamente utilizado en diversas aplicaciones, incluyendo: o Mejora de la Calidad de Audio : Identificación y eliminación de ruidos no deseados. o Reconocimiento de Voz : Análisis de las características de la voz para mejorar la precisión de los sistemas de reconocimiento de voz. o Música y Acústica : Análisis de la estructura de las composiciones musicales y la acústica de los espacios.
Análisis de Resultados
Código en MATLAB: % Procesamiento de una grabación de voz [audio, Fs] = audioread('audio.wav'); % Cargar archivo de audio audio = audio(:, 1); % Usar solo un canal si es estéreo % Filtrado para eliminar ruido d = designfilt('lowpassfir', 'PassbandFrequency', 3000, ... 'StopbandFrequency', 3500, 'PassbandRipple', 1, ...
'StopbandAttenuation', 60, 'SampleRate', Fs); audio_filtrado = filter(d, audio); % Graficar señal original y filtrada t = (0:length(audio)-1)/Fs; figure; subplot(2,1,1); plot(t, audio); title('Audio original'); xlabel('Tiempo (s)'); ylabel('Amplitud'); subplot(2,1,2); plot(t, audio_filtrado); title('Audio filtrado'); xlabel('Tiempo (s)'); ylabel('Amplitud'); % Análisis espectral X = fft(audio); X_filtrado = fft(audio_filtrado); f = (0:length(X)-1)*Fs/length(X); figure; subplot(2,1,1); plot(f, abs(X)/length(X)); title('Espectro del audio original'); xlabel('Frecuencia (Hz)'); ylabel('Amplitud'); subplot(2,1,2); plot(f, abs(X_filtrado)/length(X)); title('Espectro del audio filtrado'); xlabel('Frecuencia (Hz)'); ylabel('Amplitud'); El código de MATLAB que esta proporcionado realiza el procesamiento de una grabación de voz para eliminar el ruido utilizando un filtro digital, y luego visualiza tanto la señal original como la señal filtrada, así como sus espectros de frecuencia. A continuación, se desglosa cada parte del código y su funcionalidad.
- Carga del Archivo de Audio
- audioread('audio.wav') : Carga un archivo de audio llamado audio.wav. La variable audio contiene los datos de la señal de audio, y Fs es la frecuencia de muestreo
- audio = audio(:, 1) : Si el archivo de audio es estéreo (dos canales), se selecciona solo el primer canal para simplificar el procesamiento.
- Diseño del filtro
- designfilt('lowpassfir', ...) : Diseña un filtro FIR pasa bajos. Los parámetros especifican: PassbandFrequency : 3000 Hz (frecuencia máxima que se permite pasar). StopbandFrequency : 3500 Hz (frecuencia a partir de la cual se comienza a atenuar). PassbandRipple : 1 dB (variación permitida en la banda de paso). StopbandAttenuation : 60 dB (atenuación en la banda de stop). SampleRate : La frecuencia de muestreo del audio.
subplot(2,1,2); plot(t, audio_filtrado); title('Audio filtrado'); xlabel('Tiempo (s)'); ylabel('Amplitud'); % Análisis espectral X = fft(audio); X_filtrado = fft(audio_filtrado); f = (0:length(X)-1)*Fs/length(X); figure; subplot(2,1,1); plot(f, abs(X)/length(X)); title('Espectro del audio original'); xlabel('Frecuencia (Hz)'); ylabel('Amplitud'); subplot(2,1,2); plot(f, abs(X_filtrado)/length(X)); title('Espectro del audio filtrado'); xlabel('Frecuencia (Hz)'); ylabel('Amplitud'); % Paso adicional: Guardar el audio filtrado en un archivo audiowrite('conversacionfiltrada.wav', audio_filtrado, Fs); % Paso adicional: Reproducir el audio filtrado sound(audio_filtrado, Fs); La imagen muestra dos gráficos que comparan el espectro de frecuencia de una señal de audio antes y después de aplicar un filtro:
- Espectro del audio original : Este gráfico muestra la distribución de las frecuencias en la señal de audio original. Se observan varios picos pronunciados a lo largo del espectro, indicando la presencia de múltiples frecuencias dominantes.
- Espectro del audio filtrado : Este gráfico muestra la señal de audio después de aplicar un filtro. Se observa una reducción significativa en la cantidad y amplitud de los picos, lo que sugiere que el filtro ha eliminado o atenuado ciertas frecuencias no deseadas. Conclusiones:
- Reducción de Ruido : El filtro ha sido efectivo en reducir el ruido o las frecuencias no deseadas, haciendo que el espectro del audio filtrado sea más limpio y con menos picos.
- Mejora de Calidad : La señal filtrada probablemente tenga una mejor calidad de audio, con menos interferencias y ruido de fondo. La gráfica muestra dos señales de audio: “Audio original” y “Audio filtrado”. Que dejan como conclusiones:
- Audio original : La señal tiene una gran variabilidad en la amplitud a lo largo del tiempo, lo que indica la presencia de ruido o componentes de alta frecuencia.
- Audio filtrado : La señal es más suave y tiene menos variabilidad en la amplitud, por lo que se aplicó el filtro para reducir el ruido y eliminar ciertas frecuencias no deseadas. En resumen, el proceso de filtrado ha mejorado la calidad del audio al reducir las fluctuaciones y el ruido, resultando en una señal más clara y estable.
1. Eliminación de Ruido : Los filtros pueden suavizar las imágenes en un video para
eliminar el ruido de alta frecuencia. Esto es particularmente útil en grabaciones
realizadas en condiciones de poca luz o en entornos ruidosos.
2. Resaltado de Bordes : Filtros pasa altos o filtros Laplacianos pueden ser utilizados
para resaltar bordes y detalles en las imágenes del video. Esto es útil en
aplicaciones de visión por computadora donde se requiere detectar objetos o
características específicas.
3. Suavizado de Movimiento : En videos con movimientos rápidos, los filtros
pueden ayudar a suavizar la transición entre cuadros, reduciendo el efecto de
"temblor" o "vibración".
4. Compresión de Video : Los filtros también pueden ser aplicados para reducir la
cantidad de datos en un video, eliminando información redundante y mejorando
la eficiencia de compresión.
Análisis de Resultados
Código en MATLAB: % Filtrado de una imagen img = imread('Cat.jpg'); % Cargar imagen img_gray = rgb2gray(img); % Convertir a escala de grises % Crear un filtro Gaussiano h = fspecial('gaussian', [5 5], 1); img_filtrada = imfilter(img_gray, h); % Mostrar imagen original y filtrada figure; subplot(1,2,1); imshow(img_gray); title('Imagen original'); subplot(1,2,2); imshow(img_filtrada); title('Imagen filtrada'); % Procesamiento de video video = VideoReader('videomalo.mp4'); % Cargar video outputVideo = VideoWriter('video_filtrado.avi'); open(outputVideo); while hasFrame(video) frame = readFrame(video); frame_gray = rgb2gray(frame); frame_filtrado = imfilter(frame_gray, h); writeVideo(outputVideo, frame_filtrado); end close(outputVideo);
- Filtrado de una Imagen
- Carga de la Imagen : La imagen Cat.jpg se carga en la variable img.
- Conversión a Escala de Grises : La imagen a color se convierte a escala de grises utilizando rgb2gray(), y se almacena en img_gray.
- Creación del Filtro Gaussiano : Se crea un filtro Gaussiano utilizando fspecial('gaussian', [5 5], 1). Los parámetros especifican un filtro de tamaño 5x5 con una desviación estándar de 1.
- Aplicación del Filtro : La función imfilter() se utiliza para aplicar el filtro Gaussiano a la imagen en escala de grises img_gray. El resultado se almacena en img_filtrada.
- Visualización de Resultados : Se crea una figura con dos subgráficas. La primera muestra la imagen original en escala de grises (img_gray), y la segunda muestra la imagen filtrada (img_filtrada). El resultado de este proceso es una imagen suavizada, donde los detalles finos y el ruido se han reducido debido al filtrado Gaussiano.
- Filtrado de Video
- Carga del Video : El video videomalo.mp4 se carga utilizando VideoReader().
- Creación del Video de Salida : Se crea un objeto VideoWriter() llamado outputVideo para guardar el video filtrado en formato 'avi'.
- Procesamiento de Cuadros : Se itera a través de cada cuadro del video utilizando hasFrame() y readFrame().
- Conversión a Escala de Grises : Cada cuadro se convierte a escala de grises utilizando rgb2gray().
- Aplicación del Filtro : El filtro Gaussiano creado anteriormente se aplica a cada cuadro en escala de grises utilizando imfilter().
- Escritura del Video Filtrado : Los cuadros filtrados se escriben en el objeto outputVideo utilizando writeVideo().
- Cierre del Video de Salida : Finalmente, se cierra el objeto outputVideo utilizando close(). El resultado de este proceso es un video filtrado donde cada cuadro ha sido suavizado utilizando el filtro Gaussiano. Esto puede ser útil para eliminar ruido o mejorar la calidad visual del video.
Resultados de Matlab:
Filtrado de Imagen
La imagen muestra dos fotografías de un gato: una como “imagen original” y la otra
como “Imagen filtrada”. Aquí están las conclusiones que se pueden extraer del uso del
filtro gaussiano:
Extracto video con filtro gaussiano y resultado a escala de grises
Conclusión: El uso de filtros Gaussianos en el procesamiento de video tiene un impacto significativo en la calidad del video final. A continuación, se destacan los efectos y beneficios clave:
- Eliminación de Ruido : El filtro Gaussiano es eficaz para eliminar el ruido no deseado en las secuencias de video. Al suavizar la imagen, ayuda a reducir las variaciones bruscas en los píxeles que pueden ser causadas por interferencias o condiciones de grabación subóptimas.
- Mejora de la Claridad: Al suavizar la imagen, el filtro Gaussiano ayuda a mejorar la claridad general del video. Esto es especialmente útil en aplicaciones donde la precisión es crucial, como en el reconocimiento de patrones o la visión por computadora.
- Suavizado de Transiciones : El filtro también suaviza las transiciones entre cuadros, lo que puede reducir el efecto de "temblor" o "vibración" en videos con movimientos rápidos
- Preservación de Estructuras Importantes : A pesar de que el suavizado puede eliminar detalles finos, el filtro Gaussiano está diseñado para preservar las estructuras más importantes de la imagen. Esto significa que, aunque se eliminan los ruidos y detalles menores, las características clave del video, como bordes y contornos, permanecen intactas, lo que es esencial para la interpretación visual
Código mejorado con respuesta video a color
% Leer el video videoInput = VideoReader('video_prueba.mp4'); videoOutput = VideoWriter('video_filtrado65.mp4', 'MPEG-4'); open(videoOutput); % Crear un filtro Gaussiano h = fspecial('gaussian', [5 5], 1); while hasFrame(videoInput) frame = readFrame(videoInput); % Separar los canales de color redChannel = frame(:, :, 1); % Canal rojo greenChannel = frame(:, :, 2); % Canal verde blueChannel = frame(:, :, 3); % Canal azul % Aplicar el filtro a cada canal filteredRed = imfilter(redChannel, h); filteredGreen = imfilter(greenChannel, h);
filteredBlue = imfilter(blueChannel, h); % Combinar los canales filtrados filteredFrame = cat(3, filteredRed, filteredGreen, filteredBlue); % Escribir el cuadro filtrado en el nuevo video writeVideo(videoOutput, filteredFrame); end close(videoOutput); Explicación de las Modificaciones
- Separación de Canales : En lugar de convertir el cuadro a escala de grises, el código separa los canales de color (rojo, verde y azul) utilizando la indexación de matrices.
- Aplicación del Filtro : El filtro Gaussiano se aplica a cada uno de los canales de color por separado utilizando imfilter().
- Combinación de Canales : Después de filtrar cada canal, se combinan de nuevo en un solo cuadro utilizando cat(3, ...), que concatena los canales a lo largo de la tercera dimensión (la dimensión del color).
4. Escritura del Cuadro Filtrado : Finalmente, el cuadro filtrado (en color) se escribe en el
nuevo video.
Extracto video original
Extracto video con filtro gaussiano y resultado a color