Referencia Completa de Efectos de Video¶
Descripción General¶
El Paquete de Filtros de Procesamiento DirectShow proporciona más de 35 efectos de video en tiempo real que se pueden aplicar individualmente o encadenar juntos. Esta referencia documenta todos los efectos disponibles, sus parámetros y uso.
Categorías de Efectos¶
- Texto y Gráficos - Logotipos de texto, superposiciones gráficas
- Filtros de Color - Filtros rojo, verde, azul, escala de grises
- Ajuste de Imagen - Brillo, contraste, saturación
- Efectos Espaciales - Voltear, espejo, rotar
- Efectos Artísticos - Mármol, solarizar, posterizar, mosaico
- Ruido y Calidad - Algoritmos de eliminación de ruido (CAST, adaptativo, mosquito)
- Desentrelazado - Métodos de mezcla, triángulo, CAVT
- Efectos Creativos - Desenfoque, sacudida, spray, invertir
Efectos de Texto y Gráficos¶
ef_text_logo¶
Renderiza superposición de texto en video con amplias opciones de personalización.
Tipo de Efecto: CVFEffectType.ef_text_logo
Parámetros (estructura CVFTextLogoMain):
| Parámetro | Tipo | Descripción | Predeterminado |
|-----------|------|-------------|----------------|
| x | int | Posición X (píxeles) | 0 |
| y | int | Posición Y (píxeles) | 0 |
| text | BSTR | Texto a mostrar | "" |
| font_name | BSTR | Nombre de familia de fuente | "Arial" |
| font_size | int | Tamaño de fuente (puntos) | 12 |
| font_color | COLORREF | Color del texto (RGB) | 0xFFFFFF (blanco) |
| font_italic | BOOL | Estilo cursiva | FALSE |
| font_bold | BOOL | Estilo negrita | FALSE |
| font_underline | BOOL | Estilo subrayado | FALSE |
| font_strikeout | BOOL | Estilo tachado | FALSE |
| transparent_bg | BOOL | Fondo transparente | TRUE |
| bg_color | COLORREF | Color de fondo | 0x000000 (negro) |
| transp | DWORD | Nivel de transparencia (0-255) | 255 (opaco) |
| align | CVFTextAlign | Alineación de texto | al_left |
| antialiasing | CVFTextAntialiasingMode | Modo de suavizado | am_AntiAlias |
| gradient | BOOL | Habilitar degradado | FALSE |
| gradientMode | CVFTextGradientMode | Dirección del degradado | gm_horizontal |
| gradientColor1 | COLORREF | Color inicial del degradado | 0xFFFFFF |
| gradientColor2 | COLORREF | Color final del degradado | 0x000000 |
| borderMode | CVFTextBorderMode | Estilo de borde/contorno | bm_none |
| innerBorderColor | COLORREF | Color de borde interior | 0x000000 |
| outerBorderColor | COLORREF | Color de borde exterior | 0xFFFFFF |
| innerBorderSize | int | Ancho de borde interior | 1 |
| outerBorderSize | int | Ancho de borde exterior | 1 |
| DateMode | BOOL | Mostrar fecha/hora actual | FALSE |
| DateMask | BSTR | Cadena de formato de fecha | "" |
Opciones de Alineación de Texto:
- al_left - Alineado a la izquierda
- al_center - Alineado al centro
- al_right - Alineado a la derecha
Modos de Borde:
- bm_none - Sin borde
- bm_inner - Contorno interior
- bm_outer - Contorno exterior
- bm_inner_and_outer - Ambos lados
- bm_embossed - Efecto relieve 3D
- bm_outline - Contorno estándar
- bm_filled_outline - Contorno sólido
- bm_halo - Efecto resplandor
Ejemplo (C++):
CVFEffect effect;
effect.Type = ef_text_logo;
effect.Enabled = TRUE;
effect.TextLogo.x = 10;
effect.TextLogo.y = 10;
effect.TextLogo.text = SysAllocString(L"Transmisión en Vivo");
effect.TextLogo.font_name = SysAllocString(L"Arial");
effect.TextLogo.font_size = 32;
effect.TextLogo.font_color = RGB(255, 255, 255);
effect.TextLogo.font_bold = TRUE;
effect.TextLogo.borderMode = bm_outline;
effect.TextLogo.outerBorderColor = RGB(0, 0, 0);
effect.TextLogo.outerBorderSize = 2;
pEffects->add_effect(effect);
ef_graphic_logo¶
Superpone una imagen (logotipo, marca de agua) en el video.
Tipo de Efecto: CVFEffectType.ef_graphic_logo
Parámetros (estructura CVFGraphicLogoMain):
| Parámetro | Tipo | Descripción |
|---|---|---|
x |
UINT32 | Posición X (píxeles) |
y |
UINT32 | Posición Y (píxeles) |
Filename |
BSTR | Ruta al archivo de imagen (BMP, PNG, JPG) |
hBmp |
int | Identificador de mapa de bits (alternativa al nombre de archivo) |
StretchMode |
CVFStretchMode | Cómo escalar la imagen |
TranspLevel |
int | Nivel de transparencia (0-255) |
UseColorKey |
BOOL | Habilitar transparencia por clave de color |
ColorKey |
COLORREF | Color para hacer transparente |
Modos de Estiramiento:
- sm_none - Tamaño original
- sm_stretch - Estirar para ajustar
- sm_letterbox - Ajustar con relación de aspecto
- sm_crop - Recortar para ajustar
Ejemplo (C#):
var effect = new CVFEffect
{
Type = (int)CVFEffectType.ef_graphic_logo,
Enabled = true,
GraphicLogo = new CVFGraphicLogoMain
{
Filename = @"C:\Images\logo.png",
x = 20,
y = 20,
StretchMode = (int)CVFStretchMode.sm_none,
TranspLevel = 200,
UseColorKey = false
}
};
effectsInterface.add_effect(effect);
Efectos de Filtro de Color¶
ef_blue¶
Aplica filtro de color azul (realza el azul, reduce otros colores).
Tipo de Efecto: CVFEffectType.ef_blue
Parámetros:
- pAmountI - Intensidad del filtro (0-100, predeterminado: 50)
Casos de Uso:
- Tinte azul artístico
- Atmósfera fría
- Escenas de agua/océano
ef_green¶
Aplica filtro de color verde.
Tipo de Efecto: CVFEffectType.ef_green
Parámetros:
- pAmountI - Intensidad del filtro (0-100)
Casos de Uso: - Efecto de visión nocturna - Escenas de bosque/naturaleza - Efecto estilo Matrix
ef_red¶
Aplica filtro de color rojo.
Tipo de Efecto: CVFEffectType.ef_red
Parámetros:
- pAmountI - Intensidad del filtro (0-100)
Casos de Uso:
- Atmósfera cálida
- Efecto de atardecer
- Escenas de alerta/peligro
ef_filter_blue / ef_filter_blue_2¶
Filtrado azul avanzado con diferentes algoritmos.
Tipo de Efecto: CVFEffectType.ef_filter_blue o ef_filter_blue_2
Diferencia: ef_filter_blue_2 utiliza matemáticas de color alternativas para diferentes resultados visuales.
ef_filter_green / ef_filter_green2¶
Filtrado verde avanzado (dos variantes).
Tipos de Efecto: CVFEffectType.ef_filter_green, ef_filter_green2
ef_filter_red / ef_filter_red2¶
Filtrado rojo avanzado (dos variantes).
Tipos de Efecto: CVFEffectType.ef_filter_red, ef_filter_red2
ef_greyscale¶
Convierte video a blanco y negro.
Tipo de Efecto: CVFEffectType.ef_greyscale
Parámetros: Ninguno (conversión completa a escala de grises)
Casos de Uso:
- Aspecto de película clásica
- Efecto artístico
- Reducir ruido de color
Ejemplo (C++):
ef_invert¶
Invierte todos los colores (imagen negativa).
Tipo de Efecto: CVFEffectType.ef_invert
Parámetros: Ninguno
Casos de Uso: - Efecto artístico - Apariencia de rayos X - Efectos visuales especiales
Efectos de Ajuste de Imagen¶
ef_contrast¶
Ajusta el contraste de la imagen.
Tipo de Efecto: CVFEffectType.ef_contrast
Parámetros:
- pAmountI - Ajuste de contraste (-100 a +100)
- Negativo: Disminuir contraste
- Positivo: Aumentar contraste
- Predeterminado: 0 (sin cambios)
Ejemplo (C#):
var effect = new CVFEffect
{
Type = (int)CVFEffectType.ef_contrast,
Enabled = true,
pAmountI = 25 // Aumentar contraste en 25%
};
ef_lightness¶
Ajusta el brillo general.
Tipo de Efecto: CVFEffectType.ef_lightness
Parámetros:
- pAmountI - Ajuste de brillo (-100 a +100)
- Negativo: Oscurecer
- Positivo: Aclarar
- Predeterminado: 0
ef_darkness¶
Oscurece la imagen (opuesto a brillo).
Tipo de Efecto: CVFEffectType.ef_darkness
Parámetros:
- pAmountI - Cantidad de oscuridad (0-100)
ef_saturation¶
Ajusta la saturación de color.
Tipo de Efecto: CVFEffectType.ef_saturation
Parámetros:
- pAmountI - Ajuste de saturación (-100 a +100)
- -100: Escala de grises
- 0: Colores originales
- +100: Hiper-saturado
Casos de Uso: - Colores vivos para contenido promocional - Desaturar para aspecto apagado - Gradación de color
Efectos Espaciales¶
ef_flip_down¶
Voltea el video verticalmente (cabeza abajo).
Tipo de Efecto: CVFEffectType.ef_flip_down
Parámetros: Ninguno
Casos de Uso:
- Corregir cámara invertida
- Efecto espejo con rotación
- Efectos especiales
ef_flip_right¶
Voltea el video horizontalmente (espejo).
Tipo de Efecto: CVFEffectType.ef_flip_right
Parámetros: Ninguno
Casos de Uso: - Modo espejo de cámara web - Corregir cámara reflejada - Efectos de simetría
ef_mirror_down¶
Crea efecto espejo vertical (arriba se refleja abajo).
Tipo de Efecto: CVFEffectType.ef_mirror_down
ef_mirror_right¶
Crea efecto espejo horizontal (izquierda se refleja a derecha).
Tipo de Efecto: CVFEffectType.ef_mirror_right
Efectos Artísticos¶
ef_blur¶
Aplica desenfoque gaussiano a la imagen.
Tipo de Efecto: CVFEffectType.ef_blur
Parámetros:
- pAmountI - Cantidad de desenfoque (0-100)
- pSizeI - Tamaño del núcleo de desenfoque (1-20)
Casos de Uso:
- Desenfoque de fondo (simulación de profundidad de campo)
- Suavizar imagen
- Privacidad (desenfocar rostros, matrículas)
Ejemplo (C++):
CVFEffect effect;
effect.Type = ef_blur;
effect.Enabled = TRUE;
effect.pAmountI = 50; // 50% fuerza de desenfoque
effect.pSizeI = 10; // radio de desenfoque de 10 píxeles
pEffects->add_effect(effect);
ef_marble¶
Crea efecto de textura de mármol/remolino.
Tipo de Efecto: CVFEffectType.ef_marble
Parámetros:
- pAmountD - Intensidad del efecto (0.0-1.0)
- pTurbulenceI - Cantidad de turbulencia (0-100)
- pScaleD - Factor de escala (0.1-10.0)
Casos de Uso: - Fondo artístico - Efectos de transición - Visuales psicodélicos
ef_posterize¶
Reduce el número de colores (efecto arte póster).
Tipo de Efecto: CVFEffectType.ef_posterize
Parámetros:
- pAmountI - Niveles de color (2-256)
- Valores más bajos: Menos colores, más dramático
- Valores más altos: Más colores, efecto sutil
Casos de Uso:
- Estilo arte pop
- Efecto cómic
- Reducir profundidad de color
ef_mosaic¶
Crea efecto pixelado/mosaico.
Tipo de Efecto: CVFEffectType.ef_mosaic
Parámetros:
- pSizeI - Tamaño de bloque de mosaico (2-100 píxeles)
Casos de Uso: - Privacidad (desenfocar rostros/identidades) - Estilo pixel art retro - Censura
Ejemplo (C#):
var effect = new CVFEffect
{
Type = (int)CVFEffectType.ef_mosaic,
Enabled = true,
pSizeI = 15 // bloques de 15x15 píxeles
};
ef_solarize¶
Crea efecto de solarización (inversión parcial de color).
Tipo de Efecto: CVFEffectType.ef_solorize (nota ortografía)
Parámetros:
- pAmountI - Umbral de solarización (0-255)
Casos de Uso:
- Efecto de fotografía artística
- Aspecto retro
- Transiciones creativas
ef_spray¶
Crea efecto de spray/salpicadura de pintura.
Tipo de Efecto: CVFEffectType.ef_spray
Parámetros:
- pAmountI - Intensidad del spray (0-100)
ef_shake_down¶
Simula efecto de sacudida de cámara verticalmente.
Tipo de Efecto: CVFEffectType.ef_shake_down
Parámetros:
- pAmountI - Intensidad de sacudida (0-100)
Casos de Uso:
- Efecto terremoto
- Vibración de impacto
- Simulación de cámara en mano
Efectos de Procesamiento de Ruido¶
ef_denoise_cast¶
Algoritmo de eliminación de ruido CAST (Combined Adaptive Spatial-Temporal).
Tipo de Efecto: CVFEffectType.ef_denoise_cast
Parámetros (estructura CVFDenoiseCAST):
| Parámetro | Rango | Predeterminado | Descripción |
|---|---|---|---|
TemporalDifferenceThreshold |
0-255 | 16 | Umbral de detección de movimiento |
NumberOfMotionPixelsThreshold |
0-16 | 0 | Píxeles mínimos para movimiento |
StrongEdgeThreshold |
0-255 | 8 | Preservación de bordes |
BlockWidth |
1-16 | 4 | Ancho de bloque de procesamiento |
BlockHeight |
1-16 | 4 | Alto de bloque de procesamiento |
EdgePixelWeight |
0-255 | 128 | Peso de mezcla de bordes |
NonEdgePixelWeight |
0-255 | 16 | Peso de área suave |
GaussianThresholdY |
int | 12 | Umbral de ruido Luma |
GaussianThresholdUV |
int | 6 | Umbral de ruido Croma |
HistoryWeight |
0-255 | 192 | Fuerza de filtrado temporal |
Casos de Uso: - Limpieza de video con poca luz - Reducción de ruido de cámara web - Eliminación de artefactos de compresión
Ejemplo (C++):
CVFEffect effect;
effect.Type = ef_denoise_cast;
effect.Enabled = TRUE;
// Reducción de ruido moderada
effect.DenoiseCAST.TemporalDifferenceThreshold = 20;
effect.DenoiseCAST.StrongEdgeThreshold = 10;
effect.DenoiseCAST.GaussianThresholdY = 15;
effect.DenoiseCAST.GaussianThresholdUV = 8;
pEffects->add_effect(effect);
ef_denoise_adaptive¶
Reducción de ruido adaptativa que se ajusta al contenido de la imagen.
Tipo de Efecto: CVFEffectType.ef_denoise_adaptive
Parámetros:
- pDenoiseAdaptiveThreshold - Umbral de ruido (0-100)
- pDenoiseAdaptiveBlurMode - Método de desenfoque (0-2)
Casos de Uso:
- Reducción de ruido general
- Limpieza de video
- Mejora de calidad
ef_denoise_mosquito¶
Reduce el ruido mosquito (artefactos de compresión alrededor de los bordes).
Tipo de Efecto: CVFEffectType.ef_denoise_mosquito
Parámetros:
- pAmountI - Fuerza de reducción (0-100)
Casos de Uso: - Limpiar video muy comprimido - Eliminar artefactos MPEG/H.264 - Post-procesamiento para transmisión
ef_color_noise¶
Añade ruido de color (grano) a la imagen.
Tipo de Efecto: CVFEffectType.ef_color_noise
Parámetros:
- pAmountI - Cantidad de ruido (0-100)
Casos de Uso:
- Efecto de grano de película
- Aspecto retro/vintage
- Textura artística
ef_mono_noise¶
Añade ruido monocromático (blanco y negro).
Tipo de Efecto: CVFEffectType.ef_mono_noise
Parámetros:
- pAmountI - Cantidad de ruido (0-100)
Efectos de Desentrelazado¶
ef_deint_blend¶
Mezcla campos entrelazados juntos.
Tipo de Efecto: CVFEffectType.ef_deint_blend
Parámetros (estructura CVFDeintBlend):
| Parámetro | Rango | Predeterminado | Descripción |
|-----------|-------|----------------|-------------|
| blendThresh1 | 0-255 | 5 | Primer umbral de mezcla |
| blendThresh2 | 0-255 | 9 | Segundo umbral de mezcla |
| blendConstants1 | 0.0-1.0 | 0.3 | Primer peso de mezcla |
| blendConstants2 | 0.0-1.0 | 0.7 | Segundo peso de mezcla |
Casos de Uso:
- Desentrelazar video analógico
- Eliminar artefactos de peine
- Convertir entrelazado a progresivo
ef_deint_triangle¶
Desentrelazado por interpolación triangular.
Tipo de Efecto: CVFEffectType.ef_deint_triangle
Parámetros:
- pDeintTriangleWeight - Peso de interpolación (0-100)
Calidad: Mejor preservación de bordes que la mezcla
ef_deint_cavt¶
Desentrelazado CAVT (Content Adaptive Vertical Temporal).
Tipo de Efecto: CVFEffectType.ef_deint_cavt
Parámetros:
- pDeintCAVTThreshold - Umbral de movimiento (0-100)
Calidad: Mejor calidad, más intensivo en CPU
Casos de Uso:
- Desentrelazado de alta calidad
- Conversión de video de difusión
- Procesamiento de archivo
Encadenamiento de Efectos¶
Se pueden aplicar múltiples efectos simultáneamente. Los efectos se procesan en el orden en que se agregaron.
Ejemplo: Mejora de Transmisión Profesional:
// 1. Denoise
CVFEffect denoise;
denoise.Type = ef_denoise_adaptive;
denoise.Enabled = TRUE;
denoise.pDenoiseAdaptiveThreshold = 15;
pEffects->add_effect(denoise);
// 2. Color correction
CVFEffect saturation;
saturation.Type = ef_saturation;
saturation.Enabled = TRUE;
saturation.pAmountI = 15; // Ligero aumento de saturación
pEffects->add_effect(saturation);
// 3. Add branding
CVFEffect logo;
logo.Type = ef_graphic_logo;
logo.Enabled = TRUE;
logo.GraphicLogo.Filename = SysAllocString(L"logo.png");
logo.GraphicLogo.x = 20;
logo.GraphicLogo.y = 20;
pEffects->add_effect(logo);
// 4. Add timestamp
CVFEffect timestamp;
timestamp.Type = ef_text_logo;
timestamp.Enabled = TRUE;
timestamp.TextLogo.DateMode = TRUE;
timestamp.TextLogo.DateMask = SysAllocString(L"%Y-%m-%d %H:%M:%S");
timestamp.TextLogo.x = 20;
timestamp.TextLogo.y = 1050; // Abajo izquierda
pEffects->add_effect(timestamp);
Consideraciones de Rendimiento¶
Uso de CPU por Efecto¶
Bajo Impacto (< 5% CPU): - Filtros de color - Escala de grises - Invertir - Voltear/Espejo Impacto Medio (5-15% CPU): - Superposiciones de texto/gráficos - Contraste/brillo - Posterizar - Desentrelazado simple Alto Impacto (15-40% CPU): - Desenfoque (radio grande) - Denoise (CAST, adaptativo) - Mosaico (bloques pequeños) - Mármol/efectos artísticos
Consejos de Optimización¶
- Limitar efectos simultáneos - Cada efecto añade tiempo de procesamiento
- Usar parámetros apropiados - Radio de desenfoque más grande = más CPU
- Deshabilitar efectos no utilizados - Establecer
Enabled = FALSEen lugar de eliminar - Procesar a menor resolución - Reducir escala, aplicar efectos, aumentar escala
- Usar renderizado por GPU cuando sea posible - Verificar efectos acelerados por GPU
Combinaciones de Efectos Comunes¶
Mejora de Cámara Web¶
1. ef_denoise_adaptive (umbral: 15)
2. ef_contrast (cantidad: +10)
3. ef_saturation (cantidad: +15)
4. ef_flip_right (modo espejo)