La aplicación toma como entrada una imagen de una radiografía con ruido  y mediante una serie de procesamientos, lo que devolvemos como resultado es una radiografía con un efecto de realzado a los huesos y sin mucho ruido para facilitar al radiólogo y al doctor el diagnóstico de las enfermedades de sus pacientes

C++ con librerias OpenCV Proyecto ejecutado XD

Pasos de Implementación:

 

  • Cargamos nuestra imagen de Rayos X.
Ingrese Imagen con extension
Imagen Original Torax
  • Eliminamos el ruido.(GAUSSIANO, MEDIANO,etc…)
//MEDIANA
IplImage* imagensinRuido= img;
IplImage *imgFiltroMediana = cvCloneImage(imagensinRuido);
cvSmooth( imagensinRuido, imgFiltroMediana, CV_MEDIAN, 3, 3, 0, 0);
//GAUSSIANO
IplImage* imagensinRuidoGaussiano= img;
IplImage *imgFiltroGaussiano = cvCloneImage(imagensinRuidoGaussiano);
cvSmooth( imagensinRuidoGaussiano, imgFiltroGaussiano, CV_GAUSSIAN, 7, 7, 0, 0);

  • Conversión de Imagen en escala de grises.
cvCvtColor(imgFiltroMediana, grayImg, CV_BGR2GRAY);//convierte la img de entrada a img escala de grises

  • Creamos una copia de la imagen en escala de grises
  • Se aplica la función FiltroHomomorfico a la copia creada.
/*************************************************************/

/* Funcion FiltroHomomorfico */

/*************************************************************/
void FiltroHomomorfico(CvMat* dft_Filter, int D, int n, float upper, float lower)
{
CvMat* single = cvCreateMat(dft_Filter->rows, dft_Filter->cols, CV_64FC1 );

CvPoint centre = cvPoint(dft_Filter->rows / 2, dft_Filter->cols / 2);
double radius;
for(int i = 0; i < dft_Filter->rows; i++)
{
for(int j = 0; j < dft_Filter->cols; j++)
{
radius = (double) sqrt(pow((i – centre.x), 2.0) + pow((double) (j – centre.y), 2.0));
CV_MAT_ELEM(*single, double, i, j) =
((upper – lower) * ( 1 / (1 + pow((double) (D / radius), (double) (2 * n))))) + lower;
}
}
cvMerge(single, single, NULL, NULL, dft_Filter);
cvReleaseMat(&single);
}

 

  • Se aplica Ecualizacion de histogramas a la imagen resultante de aplicar la función FiltroHomomorfico.
cvEqualizeHist(outputImg, outputImg);

creamos una barra para ajustar los parámetros
con:
cvCreateTrackbar

Imagen Ecualizada y aplicado el filtro Homomorfico

 

Lineas De Codigo !!XD

 

Dentro de las conclusiones podemos decir que es fundamental la utilización de filtros frecuenciales y espaciales( su uso computacionalmente es menos costoso) ya que ayuda a los médicos a una mejor visualización de las imágenes para dar un mejor diagnostico y tratar enfermedades o futuras fracturas.