$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Este estudio utilizó exclusivamente conjuntos de datos de imágenes de TC y RM no identificados y disponibles públicamente. No hubo sujetos humanos o animales vivos involucrados. Por lo tanto, no se requirió la aprobación de la junta de revisión institucional (IRB) ni del comité de ética.
Descripción general del método
Este protocolo presenta una canalización reproducible para la eliminación de ruido de imágenes médicas energéticamente eficientes. Combina técnicas de preprocesamiento, incluidos filtros de nitidez y agrupación de K-means, con un autocodificador basado en una red neuronal convolucional (CNN) para eliminar el ruido de las imágenes. Este método integrado mejora la calidad de la imagen al tiempo que reduce el tiempo de entrenamiento y el consumo de energía del hardware, lo que respalda el diagnóstico médico sostenible 19,20,21,22,23. La Figura 5 resume el marco de un extremo a otro.

Figura 5: Arquitectura de marco de eliminación de ruido propuesta. Esta figura describe la canalización completa: adquisición de datos, preprocesamiento (nitidez + segmentación de K-means), seguido de eliminación de ruido del codificador automático basado en CNN. Enfatiza el enfoque híbrido destinado a reducir el uso de energía mientras se preserva la fidelidad estructural. Haga clic aquí para ver una versión más grande de esta figura.
El flujo de trabajo completo se resume en la Figura 5, que muestra la secuencia desde la configuración del conjunto de datos hasta el preprocesamiento (nitidez y K-medias) y el autocodificador de CNN desde la eliminación de ruido hasta las pruebas.
Configuración de software y entorno
Opción A - Google Colab (recomendado para la reproducibilidad): Vaya a colab.research.google.com, haga clic en Nuevo bloc de notas. Seleccione Tiempo de ejecución > Cambiar tipo de tiempo de ejecución > Acelerador de hardware: GPU > Guardar. Haga clic en Archivo > cargar para cargar el bloc de notas proporcionado y el conjunto de datos .zip (o conecte Google Drive haciendo clic en Archivos > Montar unidad). En la primera celda de código, instale las dependencias (ya en el cuaderno): pip install opencv-python scikit-image scikit-learn tensorflow matplotlib numpy pandas. Haga clic en Tiempo de ejecución > Ejecutar todo. Confirme que ve: (i) resumen del entorno con versiones de paquetes, (ii) nombre de GPU (en salida de celda) y (iii) creación de una carpeta de experimento runs/AAAA-MM-DD/.
Opción B - Local (conda): Abra Anaconda Prompt/Terminal y ejecute:

Coloque el conjunto de datos en data/raw/ y los scripts en code/. Ejecutar: python code/train_autoencoder.py --data_root data --img_size 256 --k_values 3 5 --epochs 100 --batch 32 --lr 0.001. Confirme para ver: impresión del entorno, GPU detectada y un directorio de registro runs/AAAA-MM-DD/.
Preparación del conjunto de datos
Los conjuntos de datos disponibles públicamente de tomografías computarizadas y resonancias magnéticas se obtuvieron de repositorios de imágenes médicas. Estos conjuntos de datos contenían ruido típico de las exploraciones clínicas del mundo real y fueron desidentificados de acuerdo con los estándares institucionales y éticos 8,9. Cada imagen se redimensionó a 256 x 256 píxeles y se almacenó en formato PNG o DICOM para mayor compatibilidad. Los conjuntos de datos se dividieron aleatoriamente de la siguiente manera: 70% para entrenamiento, 15% para validación y 15% para pruebas, lo que garantiza una distribución estratificada de modalidades de imágenes y niveles de ruido⁶. Las estadísticas de ruido se midieron utilizando la varianza media de píxeles antes de la eliminación de ruido.
Organizar carpetas: cree una carpeta como se describe a continuación:

Para agregar imágenes, copie las imágenes de TC/RM no identificadas en data/raw/CT y data/raw/MRI (PNG, JPG o DICOM). Estandarizar el tamaño de la imagen con Python (recomendado): Ejecute la celda del cuaderno Cambiar tamaño y convertir. Carga cada imagen, convierte la escala de grises si es necesario y cambia el tamaño a 256 x 256 .

Una alternativa es usar GUI (alternativa de ImageJ / Fiji) como se describe. Haga clic en Archivo > Importar > secuencia de imágenes (o imágenes individuales), luego > Imagen Escriba > 8 bits, Imagen > Ajustar tamaño de >... > 256 x 256 y, a continuación, Archivo > Guardar como > PNG en data/preproc/.
Crear divisiones: ejecute la división de la celda del cuaderno Train/Val/Test (70/15/15); Baraja los nombres de los archivos y los copia en data/splits/train|val|test/. La consola imprime los recuentos (por ejemplo, Train: 700, Val: 150, Test: 150). Punto de control (observar): Abra datos / divisiones / entrene / y verifique que las imágenes sean de 256 x 256 y escala de grises (1 canal). Mantenga un pequeño manifiesto CSV (splits.csv) que enumere la ruta de acceso del archivo, la modalidad y la etiqueta dividida.
Preprocesamiento de imágenes
Utilice el grano de afilado 3 x 3. Realice la mejora de la imagen utilizando un kernel de nitidez. Se utilizó un núcleo de convolución de agudización para mejorar los límites anatómicos antes de la segmentación:

Este filtro acentúa estructuras importantes al aumentar los componentes de alta frecuencia 4,5. Cada imagen se convolucionó utilizando la biblioteca OpenCV de Python (cv2.filter2D()) para generar la imagen mejorada. La Figura 6 ilustra comparaciones de antes y después.

Figura 6: Gráfico de precisión de validación para diferentes valores de k. Gráfico de barras que ilustra la precisión de validación lograda para varios valores de K utilizados en el paso de agrupación en clústeres de K-medias (K = 2, 3, 4, 5). La precisión alcanza su punto máximo en K=3, lo que indica una separación óptima entre las estructuras anatómicas y las regiones de ruido. Escala: Valores de precisión normalizados (0-1). Haga clic aquí para ver una versión más grande de esta figura.
Aplicar (Python/OpenCV) usando el código a continuación.

O use la alternativa de GUI (ImageJ / Fiji) haciendo clic en Procesar > filtros > Convolucionar. Pegue la matriz de 3 x 3 arriba y haga clic en Aceptar > Archivo > Guardar como PNG > en data/preproc/enhanced/. Observe el punto de control a medida que los bordes y los límites de los órganos parecen más nítidos; Si se observan halos demasiado afilados, reduzca el peso central del kernel de 5 a 4,5 y vuelva a ejecutarlo. La Figura 7 muestra los resultados de eliminación de ruido antes y después. Las imágenes anteriores muestran claramente ruido y desenfoque, mientras que las imágenes posteriores muestran una mayor claridad, límites anatómicos más nítidos y un contraste mejorado, lo que demuestra la eficacia de la línea de eliminación de ruido propuesta.

Figura 7: Arquitectura de red de convolución NAutoencoder. Ilustra la arquitectura del autocodificador: capa de entrada, codificador (capas Conv + Pool), cuello de botella, decodificador (sobremuestreo + capas Conv transpuestas). Cada capa está etiquetada con tamaño y función. Haga clic aquí para ver una versión más grande de esta figura.
Agrupación en clústeres K-Means para segmentación
Las imágenes mejoradas se remodelaron usando NumPy (image.reshape(-1, 1)) y se agruparon usando sklearn.cluster.KMeans(n_clusters=3 o 5). La salida segmentada se remodeló a 2D (np.reshape(clustered_array, image.shape)) para visualizar regiones anatómicas frente a zonas de ruido14. En la tabla 1 se enumeran los ajustes de segmentación.
| Sr No | Valor de k | Exactitud |
| 1 | 3 | 0.761 |
| 2 | 5 | 0.869 |
| 3 | 7 | 0.75 |
Tabla 1: Valores de k con sus respectivas precisiones de validación. Esta tabla presenta las precisiones de validación obtenidas para diferentes valores del parámetro de agrupación k utilizado en el paso de segmentación de K-medias de la canalización de eliminación de ruido. Los resultados demuestran que k = 5 produce la mayor precisión, guiando la selección óptima de parámetros de agrupación.
Segmentación de K-Means: Remodele y agrupe (Python/scikit-learn) usando el código a continuación.

Realice una vista previa de color (opcional) y asigne etiquetas a colores para el control de calidad visual y superponga los bordes de la imagen nítida. Elija K corriendo con K = 3 y K = 5; calcular la precisión de la validación en sentido descendente (la Tabla 1 enumera la configuración; La Figura 6 muestra la precisión frente a K). Este es un punto de control; observar los píxeles dominantes en ruido que forman grupos distintos; las regiones anatómicas deben permanecer contiguas. Si aparecen pequeñas manchas, aplique límites anatómicos.
Eliminación de ruido basada en redes neuronales
Descripción de la arquitectura: consulte la figura 8 para ver el esquema encoder-bottleneck-decoder. Se desarrolló un autocodificador basado en CNN utilizando TensorFlow/Keras. La arquitectura incluía: capa de entrada: imagen en escala de grises de 256 x 256, codificador con tres capas convolucionales (kernel: 3 x 3, zancada: 1, activación de ReLU), cada una seguida de max-pooling; cuello de botella como representación latente densa, decodificador con tres capas de muestreo ascendente con circunvoluciones transpuestas, salida como capa activada por sigmoide que produce una imagen sin ruido. La Tabla 2 proporciona parámetros arquitectónicos completos por capas.

Figura 8: Resultados visuales del proceso de eliminación de ruido. Presenta la imagen ruidosa original, la imagen preprocesada y la salida final sin ruido una al lado de la otra para una evaluación cualitativa. Demuestra la preservación de bordes y la reducción de artefactos. Haga clic aquí para ver una versión más grande de esta figura.
| Sr No | Atributos de compilación | Valores de los atributos de compilación |
| 1 | Optimizador | Adán |
| 2 | Pérdida | Entropía cruzada categórica |
| 3 | Métricas | Exactitud |
Tabla 2: Atributos de compilación de la red neuronal. En esta tabla se detallan los parámetros de compilación clave utilizados para entrenar el modelo de autocodificador convolucional. Estas configuraciones se implementaron en TensorFlow e incluyen el optimizador, la función de pérdida, la métrica de evaluación, la cantidad de épocas y el tamaño del lote.
Configuración de entrenamiento: Los parámetros de entrenamiento incluyeron: función de pérdida como error cuadrático medio (MSE), optimizador como Adam (tasa de aprendizaje = 0,001), tamaño de lote de 32 y épocas como 100 con parada temprana (paciencia = 10).
A continuación se presenta una breve descripción general de la capacitación. Inicie la capacitación yendo a Colab y haciendo clic en Tiempo de ejecución > Ejecutar todo; confirme que la GPU está en la lista (por ejemplo, Tesla T4). Use python code/train_autoencoder.py --data_root data --epochs 100 --batch 32 --lr 0.001 --early_stop 10. Monitorizar mediante la consola imprime época, train_loss, val_loss y hora/época. Desencadenantes de interrupción temprana después de la paciencia = 10 épocas sin mejoría. El mejor modelo se guarda en runs/.../checkpoints/best.h5. Este es un punto de control, observe usando model.summary() que muestra la pila de capas; el recuento de parámetros debe coincidir con la Tabla 2. Si obtiene errores OOM, reduzca el lote a 16 o establezca el tamaño de entrada en 224 x 224.
Puntos de control intermedios y solución de problemas
Después de enfocar y segmentar, obtenga una vista previa de tres imágenes por división y confirme que (i) los bordes están mejorados, (ii) las máscaras de clúster se alinean con la anatomía. Durante el entrenamiento, asegúrese de que la pérdida de validación disminuya y no diverja. Si la salida sin ruido aparece demasiado suavizada, reduzca el centro del kernel (4.5) o aumente las épocas de entrenamiento en 10 con una tasa de aprendizaje más baja (por ejemplo, 5e-4).
Evaluación del rendimiento: Se utilizaron las siguientes métricas cuantitativas: Relación señal-ruido máxima (PSNR), Medida del índice de similitud estructural (SSIM) y Precisión de validación de la clasificación de imágenes sin ruido.
El método propuesto mejoró la PSNR de 21,52 a 28,14 dB y la SSIM de 0,76 a 0,86 en comparación con los modelos de referencia presentados en 7,16. La eficiencia energética se registró mediante el monitoreo del uso de la GPU (registros NVIDIA-SMI) y el tiempo de entrenamiento. La Tabla 3 resume los resultados de la eliminación de ruido.
| Sr No | Métrico | Modelo de línea de base |
| 1 | Tiempo medio de época (seg) | 25.8 |
| 2 | Energía total de entrenamiento (kWh) | 0.52 |
| 3 | Uso de GPU (%) | 85% |
| 4 | Tiempo de inferencia por imagen (ms) | 18.7 |
| 5 | Precisión de validación (%) | 76.19% |
| 6 | PSNR (dB) | 21.52 |
| 7 | SSIM | 0.7619 |
Tabla 3: Métricas de evaluación del desempeño de la línea de base versus el método propuesto. En esta tabla se compara la canalización de eliminación de ruido propuesta con un modelo de línea base en varias métricas de rendimiento, incluido el tiempo de entrenamiento, el uso de GPU y las medidas de calidad (PSNR, SSIM y precisión de validación). Los resultados indican una mejora de la eficiencia energética y la calidad de imagen con el método propuesto.
Calcule PSNR/SSIM y el uso de energía. Para PSNR/SSIM (scikit-image), use el código siguiente.

Para calcular el uso de energía/GPU, ejecute la celda que registra nvidia-smi --query-gpu=power.draw,utilization.gpu --format=csv -l 1 en runs/.../gpu_log.csv durante el entrenamiento (proporcionado en el portátil). En un segundo terminal, ejecute el siguiente código:

Analice CSV para calcular la potencia promedio (W) e integre durante el tiempo de entrenamiento para obtener energía estimada (Wh = kWh). El cuaderno agrega PSNR, SSIM, precisión de validación, tiempo de época y energía en results_table3.csv para su inclusión directa.
Evaluación de la sostenibilidad y simulación de telemedicina
Para evaluar la sostenibilidad del hardware del dispositivo, aplicamos ruido gaussiano y de Poisson para simular la degradación de la imagen de los dispositivos antiguos. El modelo restauró estas entradas degradadas a una calidad cercana al diagnóstico, validando su robustez 27,28,29. En simulaciones de telemedicina, las imágenes sin ruido se transmitieron mediante un ancho de banda simulado de 256 Kbps utilizando sockets de Python. Se conservó la claridad visual, apoyando el diagnóstico remoto 30,31,32.
Para la simulación de envejecimiento del dispositivo, aplique ruido gaussiano (σ=10-30) y ruido de Poisson a imágenes limpias (simulación de envejecimiento de celda) y guarde en data/simulated/aged/. Ejecute el modelo entrenado en entradas aged/; Guarde las salidas en results/aged_denoised/. Observe que la calidad visual debe alcanzar una fidelidad cercana al diagnóstico; compare PSNR/SSIM con la línea de base.
Para la prueba de ancho de banda de telemedicina, comprima las imágenes sin ruido a PNG/JPEG al 85%-95% y envíelas a través de un enlace simulado de 256 kbps utilizando la prueba de socket de Python proporcionada (telemed_sim.py). Mida el tiempo de ida y vuelta y el hash de integridad de archivos; Compruebe que no se introducen artefactos de diagnóstico. Observe que se conserva la claridad visual y que los tamaños de archivo son adecuados para flujos de trabajo de bajo ancho de banda.
Punto final de protocolo
Al finalizar, debe tener: (i) imágenes nítidas en preproc/enhanced/, (ii) imágenes segmentadas en preproc/segmented/, (iii) un autocodificador entrenado con best.h5 en runs/.../checkpoints/, (iv) salidas sin ruido para imágenes de prueba y antiguas en results/, (v) un archivo de métricas compilado (results_table3.csv) que resuma PSNR, SSIM, precisión de validación, tiempo de época y energía estimada.