robert mateo ocampo garcia's profile

Análisis radiómico de las componentes principales

Análisis radiómico de las componentes principales en imágenes medicas
RESUMEN
En el presente trabajo se busca por medio de un análisis radiómico de las componentes principales de unas modalidades de resonancia magnética, discutir en base de los resultados si es más viable el análisis por medio de componentes que por medio de modalidades, si se puede omitir el uso de modalidades o de ciertas modalidades y si el análisis de componentes principales permite obtener información adicional que no se encuentra con las modalidades, se tiene en cuenta que el campo de la radiómica aún es muy experimental.

Se escogieron 7 casos de resonancia magnética del área craneal donde se presenta gliomas, obtenidos del BrainTs 2019, cada caso presenta las modalidades Flair (recuperación de la inversión que neutraliza los fluidos), T1 (relajación longitudinal), T2 (relajación transversal) y T1 con contraste, además de la verdad fundamental que es el área de interés (tumor) la cual se seleccionó mediante un consenso del BrainTs.

A cada caso se le realiza una etapa de visualización de las modalidades y un análisis radiómico de cada una de las modalidades, los datos son guardados para una posterior comparación, adicional se verifica que los estudios estén corregistrados para poder realizar una comparación y discusión con los resultados.

Posterior a cada caso se le realiza el proceso de obtención de 4 componentes principales partiendo de las 4 modalidades, se gráfica y se genera 4 imágenes siendo cada una respectivamente la representación de cada componente, adicionalmente realizamos un análisis radiómico de las 4 componentes y se comparan los resultados con los obtenidos de las modalidades, se discute y se sacan conclusiones.
INTRODUCCIÓN

Siendo la radiómica una ciencia que estudia características de las imágenes médicas imperceptibles al ojo humano, su diseño y estudio aún se encuentran en fase temprana peor con un gran potencial a futuro. Ha demostrado ser una gran herramienta para la detección, predicción y estudio de diversas patologías como los gliomas (patología presente en los casos manejados en este estudio) a pesar de la brecha de conocimiento que aun presente y las necesidades clínicas que pueden interferir en su aplicación y desarrollo. (Roche, s.f.)

Se ha demostrado que la radiómica puede ser relevante para la compresión y abordaje de todas aquellas patologías en las que la imagen medica juega un papel importante en su diagnóstico y seguimiento, por ejemplo, enfermedades reumatológicas o las neurodegenerativas, siendo la oncología el campo donde más se ha avanzado en radiómica hasta el momento. Los avances computacionales y el amplio desarrollo digital actual contribuyen a que la radiómica genere grandes cantidades de datos relevantes para la práctica clínica en el marco de la medicina personalidad de precisión. (Roche, s.f.)

La radiómica es una ciencia que va muy de la mano con el análisis de imágenes médicas el cual se basa en observar un parte interior del cuerpo y de forma visual detectar, predecir y estudiar patologías presentes en todo el cuerpo, el tipo de análisis y el tipo de imagen dependerá de la parte del cuerpo que se quiere estudiar, la patología posible y la especialización del doctor; pueden ser rayos x, tomografías computarizadas, ecografías, estudios de medicina nuclear, resonancia magnética siendo esta la presente en este estudio, entre otras, siendo algunas riesgosas para el pacientes dado la leve exposición de radiación. (cancer) (Medline Plus, s.f.)

Los mencionados son estudios que a pesar de ir mejorando con base al tiempo y generando una tasa muy alta ante predicción y detección de patologías aún tiene una brecha de conocimiento muy amplia, siendo la radiómica una herramienta que está ayudando a llenar esa brecha de conocimiento y de igual manera el análisis de imágenes siendo una herramienta para llenar la brecha de conocimiento en la radiómica arrojando datos prometedores. (cancer) (Medline Plus, s.f.)

Las fases para desde el inicio del análisis de imágenes hasta el final del procedimiento radiómico son semejantes y se pueden realizar en paralelo:
Adquisición de una base de datos: se debe obtener teniendo en cuenta ciertas restricciones o teniendo en cuenta ciertos procedimientos que se deberían realizar en algún punto del estudio, como lo son que los casos estos corregistrados, que sean del mismo tipo de imagen, modalidades presentes.

Pretratamiento de los datos: se deben realizar ciertos procesos para obtener información del caso para su procesamiento, como lo son espacio dimensional, tamaño de la matriz, datos del examen tomado (tipo de corte y cuantos cortes), volumen, intensidad en los voxels, entre otros. (Valente, 2018)

Visualización de la imagen: se visualiza utilizando el software que mejor se adapte al tipo de imagen y a la necesidad del caso.

Segmentación de la imagen: por medio de distintas técnicas o algoritmos se busca extraer el segmento del caso donde está presente el área de interés o la patología que se está estudiando. (Valente, 2018)

Extracción de características: posterior a obtener el segmento se sacan las características del área y se discute.
Post procesamiento de análisis de imágenes: en esta parte se pasa ya a otras áreas como impresión 3D, ámbito quirúrgico, entre otras.

Selección de características: continuando con la parte radiómica, se analizan las características obtenidas por la segmentación y se seleccionan las de mayor relevancia omitiendo así aquellas que sean redundantes.

Diseño de algoritmo o análisis de los resultados: con los resultados finales de la radiómica se genera un algoritmo para clasificación de patologías o se determina en que porcentaje el algoritmo usado es viable para el estudio. (Roche I. )

Cabe tener en cuenta que para poder logran conjeturas sobre patologías en base a un análisis radiómico con un análisis de imágenes médicas, se debe informar a los profesionales del área destacada de la patología sobre el potencial clínico y su interpretación, también se debe tener en cuenta el posible manejo de información sensible de los pacientes y tomar las medidas necesarias para conservar la confidencialidad. (Roche, s.f.)

La patología mencionada (glioma), como se podrá observar en los casos presentes son muy variables en localización, características celulares, forma y severidad, permitiendo arrojar más información ante este estudio, se debe tener en cuenta que, así como estos hay un gran número de patologías que pueden no presentar algún síntoma, siendo de gran dificultad una detección temprana para su tratamiento. (Medicine, s.f.)

Este es el tumor primario más presente en la región cerebral, además de que cuenta con unas características histopatológicas que le confieren un carácter muy agresivo (heterogeneidad y capacidad para infiltrar la sustancia blanca adyacente). (Grossmann P, 2021)

Puede presentarse en todas las edades, pero se presenta principalmente en adultos desde los 40 años has los 70, se ubica generalmente en los hemisferios cerebrales, genera síntomas cuando alcanza un tamaño determinado y los síntomas dependen de la región del cerebro sobre la cual hace presión, pueden ser no cancerosos o presentar células cancerígenas, siendo estos últimos los que aumentan rápidamente de tamaño; el tratamiento, los síntomas y severidad van relacionados con el tipo de glioma presente. (persona de Mayo Clinic, 2023)
Estado del arte

En el 2021 Manuel Garcia Galindo realizo ‘análisis de las características radiómicas de la resonancia magnética en glioblastomas (gliomas) y su relación con la progresión tumoral y supervivencia.

Con el objetivo de aplicar la radiómica para obtener datos cuantitativos de la resonancia magnética prequirúrgica con el fin de encontrar asociaciones entre las características de textura y la progresión tumoral y supervivencia global de los pacientes de la muestra del estudio.

Concluyendo que los resultados apoyan que las características de textura obtenidas de la resonancia magnética son útiles para predecir y clasificar a los pacientes de acuerdo con su supervivencia, así como anticiparse a una nueva progresión tumoral. De ese modo se puede plantear un tratamiento más apropiado a la presencia de glioblastomas y garantizar una asistencia de calidad.

Adicionalmente de que la radiómica puede abrir muchas puertas para su empleo en medicina. No hay duda de que el avance en computadora y machine learning proporciona una cantidad de datos objetivos que pueden ser utilizados para realizar un mejor manejo diagnóstico, terapéutico y pronostico del cáncer. (Galindo, 2021)

Metodología

Con el presente se precisa determinar qué características o ventajas puede aportar un desarrollo de un análisis radiómico sobre la resonancia magnética en 4 modalidades (Flair, t1, t2 y t1 con contraste).

Se coge una base de datos de gliomas presentes en distintas zonas del cerebro, se le hace un análisis de componentes principales y a estas se le aplica radiómica. Se compara el análisis radiómico y el análisis de imágenes a las modalidades y a las componentes para determinar qué características pueden aportar más información al estudio, tratamiento, detección o prevención.

Métodos

1. Se obtiene la base de datos.

2. Se realizan varios códigos mediante Matlab.

3. Se realiza una base de lectura de los archivos.

4. Se realiza una fase de visualización:
a. Se visualiza las 4 modalidades en cortes por medio del Slicer de Matlab; así obtenemos una visualización por cortes en los 3 planos: axial, sagital y coronal.
b. Se visualiza el caso y la segmentación en 3D.
c. Se visualiza el caso y la segmentación en mapeo.

5. Se realiza una fase de verificación de corregistro para verificar que manejan el mismo espacio dimensional y se encuentran en la misma posición:
a. Se realiza la comparación uno a uno.
b. Se realiza en 2D y en 3D.

6. Se procede a obtener las características radiómicas de las 4 modalidades con una ROI definida (región de la patología) y se guarda en Excel.
La ROI vendría a ser la verdad fundamental: el área segmentada por medio del consenso del BrainTs.

7. Se procede a realizar el proceso para obtener las componentes principales:
a. Se determinan los niveles digitales para cada modalidad.
b. Se establecen los valores medios de niveles digitales para cada modalidad.
c. Se obtienen las componentes principales.
d. Se guardan como archivos NifTi.

8. Procedemos a realizar la gráfica representativa de las componentes principales:
a. Se grafica en 2D.
b. Se grafica en 3D.
c. Se grafica la dispersión de puntos.

9. Se realiza otra fase de visualización: Se visualiza las 4 componentes en cortes por medio del Slicer de Matlab; así obtenemos una visualización por cortes en los 3 planos: axial, sagital y coronal.

10. Se procede a obtener las características radiómicas de las 4 componentes principales teniendo en cuenta una ROI (región de la patología) y se guarda en Excel.

11. Se comparan visualmente 
12. Se reducen datos redundantes de la radiómica para modalidad y componente.

13. Se visualizan las características radiómicas.

14. Se comparan.

15. Se hace una concatenación de todas las características radiómicas de los 7 casos.

16. Se reducen datos redundantes.

17. Se visualiza las características radiómicas.

18. Se compara con las características radiómicas de los casos individualmente.

19. Se sacan conclusiones.

Materiales y equipo

Base de datos:
Casos de pacientes diferentes.
Son resonancias magnéticas con 4 modalidades: Flair, T1, T2 y T1 con contraste.
Tienen la misma patología, gliomas.
Tienen corregistro.
Tienen una are segmentada del tumor por medio de un consenso del BrainTs.
Son de la competencia BrainTs 2019 (Multimodal Brain Tumor Segmentation Challenge 2019): la cual se centra en la evaluación de métodos de última generación para la segmentación de tumores cerebrales en exploraciones por resonancia magnética multimodal. Utiliza exploraciones de resonancia magnética preoperatorias multinstitucionales y se centra en la segmentación de tumores cerebrales intrínsecamente heterogéneos (apariencia, forma e histología), concretamente los gliomas. También se centra en la predicción de la supervivencia general del paciente, mediante análisis integradores de características radiómicas y algoritmos de aprendizaje automático. Adicionalmente evalúa experimentalmente la incertidumbre en la segmentación de tumores. (CBICA, 2019)
Procedimiento y resultados

Código 1: visualización modalidades en Slicer

clear all
close all
% Lectura de imágenes
folderC = uigetdir('C:\my\NIFTI');
cd(folderC)
d = dir;
% obtenemos los datos de las modalidades
dataFlair = double(niftiread(d(3).name));
infoFlair = niftiinfo(d(3).name);
dataSeg = double(niftiread(d(4).name));
infoSeg = niftiinfo(d(4).name);
dataT1 = double(niftiread(d(5).name));
infoT1 = niftiinfo(d(5).name);
dataT1ce = double(niftiread(d(6).name));
infoT1C = niftiinfo(d(6).name);
dataT2 = double(niftiread(d(7).name));
infoT2 = niftiinfo(d(7).name);
[~,~,Nc] = size(dataT1);
% Se muestran las diferentes modalidades de imágenes en los 3 cortes
figure('Name','Flair','NumberTitle','off')
imshow3Dfull(dataFlair)
figure('Name','T1','NumberTitle','off')
imshow3Dfull(dataT1)
figure('Name','T1 con contraste','NumberTitle','off')
imshow3Dfull(dataT2)
figure('Name','T2','NumberTitle','off')
imshow3Dfull(dataT1ce)
figure('Name','Segmentado','NumberTitle','off')
imshow3Dfull(dataSeg)
caso 1
caso 2
caso 3
caso 4
caso 5
caso 6
caso 7
Código 2: visualización caso 3D

clear all
close all
% Lectura de imágenes
folderC = uigetdir('C:\my\NIFTI');
cd(folderC)
d = dir;
% obtenemos los datos de las modalidades
medVolT1ce = medicalVolume(d(6).name);
medVolSeg = medicalVolume(d(4).name);
% se muestra en 3D el area total y la segmentacion
viewerUnregistered = viewer3d(BackgroundColor="black",BackgroundGradient="off");
volshow(medVolT1ce, ...
Parent=viewerUnregistered, ...
RenderingStyle="Isosurface", ...
IsosurfaceValue=0.05, ...
Colormap=[1 0 1], ...
Alphamap=1);
viewerUnregistered = viewer3d(BackgroundColor="black",BackgroundGradient="off");
volshow(medVolSeg, ...
Parent=viewerUnregistered, ...
RenderingStyle="Isosurface", ...
IsosurfaceValue=0.05, ...
Colormap=[1 0 1], ...
Alphamap=1);
caso 1
caso 2
caso 3
caso 4
caso 5
caso 6
caso 7
Código 3: visualización caso en mapeo

clear all
close all
% Lectura de imágenes
folderC = uigetdir('C:\my\NIFTI');
cd(folderC)
d = dir;
% obtenemos los datos del caso y el segmento de interés
medVolSeg = medicalVolume(d(4).name);
medVolT1ce = medicalVolume(d(6).name);
% se muestra el mapeo de todos los cortes
figure('Name','Caso','NumberTitle','off')
montage(medVolT1ce)
figure('Name','Segmentado','NumberTitle','off')
montage(medVolSeg)
caso 1
caso 2
caso 3
caso 4
caso 5
caso 6
caso 7
Código 4: visualización corregistro

clear all
close all
% Lectura de imágenes
folderC = uigetdir('C:\my\NIFTI');
cd(folderC)
d = dir;
% se detecta la informacion del caso A
fixedMRIVolume = medicalVolume(d(3).name)
% Lectura de imágenes caso B
folderC = uigetdir('C:\my\NIFTI');
cd(folderC)
d = dir;
% se detecta la informacion del caso B
movingCTVolume = medicalVolume(d(3).name)
% sew obtienen los niveles de intensidad, voxels
fixedMRIVoxels = fixedMRIVolume.Voxels;
movingCTVoxels = movingCTVolume.Voxels;
% se obtiene la referencia espacial de los conjuntos
fixedVolumeSize = fixedMRIVolume.VolumeGeometry.VolumeSize;
movingVolumeSize = movingCTVolume.VolumeGeometry.VolumeSize;
centerFixed = fixedVolumeSize/2;
centerMoving = movingVolumeSize/2;
% definimos un espacio de referencia
fixedVoxelSpacing = fixedMRIVolume.VoxelSpacing;
movingVoxelSpacing = movingCTVolume.VoxelSpacing;
Rfixed2D = imref2d(fixedVolumeSize(1:2),fixedVoxelSpacing(2),fixedVoxelSpacing(1));
Rmoving2D = imref2d(movingVolumeSize(1:2),movingVoxelSpacing(2),movingVoxelSpacing(1));
% observamos en slicer
figure('Name','corregistro','NumberTitle','off')
imshowpair(movingCTVoxels(:,:,centerMoving(1)), ...
Rmoving2D, ...
fixedMRIVoxels(:,:,centerFixed(1)), ...
Rfixed2D)
% observamos en 3D
viewerUnregistered = viewer3d(BackgroundColor="black",BackgroundGradient="off");
volshow(fixedMRIVolume, ...
Parent=viewerUnregistered, ...
RenderingStyle="Isosurface", ...
IsosurfaceValue=0.05, ...
Colormap=[1 0 1], ...
Alphamap=1);
volshow(movingCTVolume, ...
Parent=viewerUnregistered, ...
RenderingStyle="Isosurface", ...
IsosurfaceValue=0.05, ...
Colormap=[0 1 0], ...
Alphamap=1);
Código 5: radiómica de modalidades

clear all
close all
% Lectura de imágenes
folderC = uigetdir('C:\my\NIFTI');
cd(folderC)
d = dir;
% creamos el archivo Excel
filename = 'radiomica_modalidades.xlsx';
% se define la ROI
roi = medicalVolume(d(4).name);
%% se le aplica radiómica a la modalidad 1
dataFlair = medicalVolume(d(3).name);
% obtenemos las propiedades radiómicas
RFlair = radiomics(dataFlair,roi);
% obtenemos las propiedades de forma
SFlair = shapeFeatures(RFlair);
% obtenemos las propiedades de intensidad
IFlair = intensityFeatures(RFlair);
% obtenemos las propiedades de textura
TFlair = textureFeatures(RFlair);
% guardamos la informacion en Excel
n = {'Flair'};
xlswrite(filename,n,1,'A1');
xlswrite(filename,n,2,'A1');
xlswrite(filename,n,3,'A1');
writetable(SFlair,filename,'Sheet',1,'Range','B1');
writetable(IFlair,filename,'Sheet',2,'Range','B1');
writetable(TFlair,filename,'Sheet',3,'Range','B1');
%% se le aplica radiomica a la modalidad 2
dataT1 = medicalVolume(d(5).name);
% obtenemos las propiedades radiómicas
RT1 = radiomics(dataT1,roi);
% obtenemos las propiedades de forma
ST1 = shapeFeatures(RT1);
% obtenemos las propiedades de intensidad
IT1 = intensityFeatures(RT1);
% obtenemos las propiedades de textura
TT1 = textureFeatures(RT1);
% guardamos la informacion en Excel
n = {'T1'};
xlswrite(filename,n,1,'A6');
xlswrite(filename,n,2,'A6');
xlswrite(filename,n,3,'A6');
writetable(ST1,filename,'Sheet',1,'Range','B6');
writetable(IT1,filename,'Sheet',2,'Range','B6');
writetable(TT1,filename,'Sheet',3,'Range','B6');
%% se le aplica radiomica a la modalidad 3
dataT1ce = medicalVolume(d(6).name);
% obtenemos las propiedades radiómicas
RT1ce = radiomics(dataT1ce,roi);
% obtenemos las propiedades de forma
ST1ce = shapeFeatures(RT1ce);
% obtenemos las propiedades de intensidad
IT1ce = intensityFeatures(RT1ce);
% obtenemos las propiedades de textura
TT1ce = textureFeatures(RT1ce);
% guardamos la informacion en Excel
n = {'T1 contraste'};
xlswrite(filename,n,1,'A11');
xlswrite(filename,n,2,'A11');
xlswrite(filename,n,3,'A11');
writetable(ST1ce,filename,'Sheet',1,'Range','B11');
writetable(IT1ce,filename,'Sheet',2,'Range','B11');
writetable(TT1ce,filename,'Sheet',3,'Range','B11');
%% se le aplica radiomica a la modalidad 4
dataT2 = medicalVolume(d(7).name);
% obtenemos las propiedades radiómicas
RT2 = radiomics(dataT2,roi);
% obtenemos las propiedades de forma
ST2 = shapeFeatures(RT2);
% obtenemos las propiedades de intensidad
IT2 = intensityFeatures(RT2);
% obtenemos las propiedades de textura
TT2 = textureFeatures(RT2);
% guardamos la informacion en Excel
n = {'T2'};
xlswrite(filename,n,1,'A16');
xlswrite(filename,n,2,'A16');
xlswrite(filename,n,3,'A16');
writetable(ST2,filename,'Sheet',1,'Range','B16');
writetable(IT2,filename,'Sheet',2,'Range','B16');
writetable(TT2,filename,'Sheet',3,'Range','B16');
%% guardamos los valores de la radiomica
save('radiomica_modalidades','SFlair','IFlair','TFlair','ST1','IT1','TT1','ST1ce','IT1ce','TT1ce','ST2','IT2','TT2'); ​​​​​​​
Código 6: quitar valores redundantes radiomica

clear all
close all
% Lectura de imágenes
folderC = uigetdir('C:\my\NIFTI');
cd(folderC)
d = dir;
% cargamos las características de radiomica
load('radiomica_componentes.mat');
load('radiomica_modalidades.mat');
% creamos los archivos
filenamem = 'radiomica_modalidades_reducido.xlsx';
filename = 'radiomica_comparacion.xlsx';
% eliminamos la variable de identificación
SFlair=removevars(SFlair,"LabelID");
ST1=removevars(ST1,"LabelID");
ST1ce=removevars(ST1ce,"LabelID");
ST2=removevars(ST2,"LabelID");
SM = [SFlair; ST1; ST1ce; ST2];
IFlair=removevars(IFlair,"LabelID");
IT1=removevars(IT1,"LabelID");
IT1ce=removevars(IT1ce,"LabelID");
IT2=removevars(IT2,"LabelID");
IM = [IFlair; IT1; IT1ce; IT2];
TFlair=removevars(TFlair,"LabelID");
TT1=removevars(TT1,"LabelID");
TT1ce=removevars(TT1ce,"LabelID");
TT2=removevars(TT2,"LabelID");
TM = [TFlair; TT1; TT1ce; TT2];
% convertimos la tabla en un tipo texto
SM = table2array(SM);
featureNamessm = SFlair.Properties.VariableNames;
IM = table2array(IM);
featureNamesim = IFlair.Properties.VariableNames;
TM = table2array(TM);
featureNamestm = TFlair.Properties.VariableNames;
% computamos el número de características
% calculamos el coeficiente de correlación
% eliminamos las características redundantes si el coeficiente es 0.95 o
% mayor
fsm = size(SM,2)
f=fsm;
featureCorrTrain = corrcoef(SM);
selectedFeaturessm = true(1,f);
for i = 1:f-1
if isnan(featureCorrTrain(i,i))
selectedFeaturessm(i) = false;
end
if selectedFeaturessm(i)
for j = i+1:f
if abs(featureCorrTrain(i,j)) >= 0.95
selectedFeaturessm(j) = false;
end
end
end
end
SM = SM(:,selectedFeaturessm);
featureNamessm = featureNamessm(selectedFeaturessm);
fsmr = size(SM,2)
fim = size(IM,2)
f=fim;
featureCorrTrain = corrcoef(IM);
selectedFeaturesim = true(1,f);
for i = 1:f-1
if isnan(featureCorrTrain(i,i))
selectedFeaturesim(i) = false;
end
if selectedFeaturesim(i)
for j = i+1:f
if abs(featureCorrTrain(i,j)) >= 0.95
selectedFeaturesim(j) = false;
end
end
end
end
IM = IM(:,selectedFeaturesim);
featureNamesim = featureNamesim(selectedFeaturesim);
fimr = size(IM,2)
ftm = size(TM,2)
f=ftm;
featureCorrTrain = corrcoef(TM);
selectedFeaturestm = true(1,f);
for i = 1:f-1
if isnan(featureCorrTrain(i,i))
selectedFeaturestm(i) = false;
end
if selectedFeaturestm(i)
for j = i+1:f
if abs(featureCorrTrain(i,j)) >= 0.95
selectedFeaturestm(j) = false;
end
end
end
end
TM = TM(:,selectedFeaturestm);
featureNamestm = featureNamestm(selectedFeaturestm);
ftmr = size(TM,2)
% guardamos las nuevas tablas
n = {'Modalidades'};
xlswrite(filenamem,n,1,'A1');
xlswrite(filenamem,n,2,'A1');
xlswrite(filenamem,n,3,'A1');
writematrix(SM,filenamem,'Sheet',1,'Range','B1');
writematrix(IM,filenamem,'Sheet',2,'Range','B1');
writematrix(TM,filenamem,'Sheet',3,'Range','B1');
% guardamos el número de caracteristicas en una tabla para comparar
n = {'Forma modalidad'};
xlswrite(filename,n,1,'D1');
writematrix(fsm,filename,'Sheet',1,'Range','D2');
n = {'reducidos'};
xlswrite(filename,n,1,'E1');
writematrix(fsmr,filename,'Sheet',1,'Range','E2');
n = {'Intensidad modalidad'};
xlswrite(filename,n,1,'D4');
writematrix(fim,filename,'Sheet',1,'Range','D5');
n = {'reducidos'};
xlswrite(filename,n,1,'E4');
writematrix(fimr,filename,'Sheet',1,'Range','E5');
n = {'Textura modalidad'};
xlswrite(filename,n,1,'D7');
writematrix(ftm,filename,'Sheet',1,'Range','D8');
n = {'reducidos'};
xlswrite(filename,n,1,'E7');
writematrix(ftmr,filename,'Sheet',1,'Range','E8');
% guardar variables
save('radiomica_rm','SM','featureNamessm','IM','featureNamesim','TM','featureNamestm')
Código 7: componentes principales

clear all
close all
% Lectura de imágenes
folderC = uigetdir('C:\my\NIFTI');
cd(folderC)
d = dir;
% obtenemos los datos de las modalidades
dataFlair = double(niftiread(d(3).name));
infoFlair = niftiinfo(d(3).name);
dataT1 = double(niftiread(d(5).name));
infoT1 = niftiinfo(d(5).name);
dataT1ce = double(niftiread(d(6).name));
infoT1ce = niftiinfo(d(6).name);
dataT2 = double(niftiread(d(7).name));
infoT2 = niftiinfo(d(7).name);
[~,~,Nc] = size(dataT1);
% Se determinan listas de los niveles digitales para cada modalidad
[M,N,P] = size(dataT1);
cont = 0;
for i=1:M
for j=1:N
for k=1:P
cont = cont + 1;
T1(cont) = dataT1(i,j,k);
T1C(cont) = dataT1ce(i,j,k);
T2(cont) = dataT2(i,j,k);
FL(cont) = dataFlair(i,j,k);
end
end
end
% Se establecen los valores medios de niveles digitales para cada modalidad
mT1 = mean(T1);
mT1C = mean(T1C);
mT2 = mean(T2);
mFL = mean(FL);
% Análisis de Componentes Principales
M1 = [T1',T1C',T2',FL'];
[coef,score,var] = pca(M1);
cont = 0;
for i=1:M
for j=1:N
for k=1:P
cont = cont + 1;
PC1(i,j,k) = coef(1,1)*(T1(cont) - mT1) + coef(2,1)*(T1C(cont) - mT1C) + coef(3,1)*(T2(cont) - mT2) + coef(4,1)*(FL(cont) - mFL);
PC2(i,j,k) = coef(1,2)*(T1(cont) - mT1) + coef(2,2)*(T1C(cont) - mT1C) + coef(3,2)*(T2(cont) - mT2) + coef(4,2)*(FL(cont) - mFL);
PC3(i,j,k) = coef(1,3)*(T1(cont) - mT1) + coef(2,3)*(T1C(cont) - mT1C) + coef(3,3)*(T2(cont) - mT2) + coef(4,3)*(FL(cont) - mFL);
PC4(i,j,k) = coef(1,4)*(T1(cont) - mT1) + coef(2,4)*(T1C(cont) - mT1C) + coef(3,4)*(T2(cont) - mT2) + coef(4,4)*(FL(cont) - mFL);
end
end
end
% guardamos las variables coeff, score y var
save('variables','coef','score','var');
% guardamos las componentes principales como ficheros nifti
niftiwrite(PC1,'Componente_1.nii');
niftiwrite(PC2,'Componente_2.nii');
niftiwrite(PC3,'Componente_3.nii');
niftiwrite(PC4,'Componente_4.nii'); ​​​​​​​
Código 8: grafica componentes principales


clear all
close all
% Lectura de imágenes
folderC = uigetdir('C:\my\NIFTI');
cd(folderC)
d = dir;
% Se carga la información de las componentes principales
load('variables.mat');
% se grafican las componentes principales en 2D
figure('Name','Componentes principales 2D','NumberTitle','off')
biplot(coef(:,1:2),'scores',score(:,1:2),'varlabels',{'v_1','v_2','v_3','v_4'});
% se grafican las componentes principales en 3D
figure('Name','Componentes principales 3D','NumberTitle','off')
biplot(coef(:,1:3),'scores',score(:,1:3),'varlabels',{'v_1','v_2','v_3','v_4'});
% se grafican la nube de puntos
figure('Name','Nube de puntos','NumberTitle','off')
scatter3(score(:,1),score(:,2),score(:,3))
axis equal ​​​​​​​
caso 1
caso 2
caso 3
caso 4
caso 5
caso 6
caso 7
Código 9: visualización componentes en Slicer

clear all
close all
% Lectura de imágenes
folderC = uigetdir('C:\my\NIFTI');
cd(folderC)
d = dir;
% obtenemos los datos de las componentes
dataC1 = double(niftiread(d(8).name));
infoC1 = niftiinfo(d(8).name);
dataC2 = double(niftiread(d(9).name));
infoC2 = niftiinfo(d(9).name);
dataC3 = double(niftiread(d(10).name));
infoC3 = niftiinfo(d(10).name);
dataC4 = double(niftiread(d(11).name));
infoC4 = niftiinfo(d(11).name);
% visualizamos las 4 componentes principales
figure('Name','PC1','NumberTitle','off')
imshow3Dfull(dataC1)
figure('Name','PC2','NumberTitle','off')
imshow3Dfull(dataC2)
figure('Name','PC3','NumberTitle','off')
imshow3Dfull(dataC3)
figure('Name','PC4','NumberTitle','off')
imshow3Dfull(dataC4) ​​​​​​​
caso 1
caso 2
caso 3
caso 4
caso 5
caso 6
caso 7
comparación visual de las componentes y las modalidades
caso 1
caso 2
caso 3
caso 4
caso 5
caso 6
caso 7
Código 10: radiómica componentes

clear all
close all
% Lectura de imágenes
folderC = uigetdir('C:\my\NIFTI');
cd(folderC)
d = dir;
% creamos el archivo Excel
filename = 'radiomica_componentes.xlsx';
% se define la ROI
roi = medicalVolume(d(4).name);
%% se le aplica radiomica a la componente 1
dataC1 = medicalVolume(d(8).name);
% obtenemos las propiedades radiómicas
RC1 = radiomics(dataC1,roi);
% obtenemos las propiedades de forma
SC1 = shapeFeatures(RC1);
% obtenemos las propiedades de intensidad
IC1 = intensityFeatures(RC1);
% obtenemos las propiedades de textura
TC1 = textureFeatures(RC1);
% guardamos la informacion en Excel
n = {'C1'};
xlswrite(filename,n,1,'A1');
xlswrite(filename,n,2,'A1');
xlswrite(filename,n,3,'A1');
writetable(SC1,filename,'Sheet',1,'Range','B1');
writetable(IC1,filename,'Sheet',2,'Range','B1');
writetable(TC1,filename,'Sheet',3,'Range','B1');
%% se le aplica radiomica a la componente 2
dataC2 = medicalVolume(d(9).name);
% obtenemos las propiedades radiómicas
RC2 = radiomics(dataC2,roi);
% obtenemos las propiedades de forma
SC2 = shapeFeatures(RC2);
% obtenemos las propiedades de intensidad
IC2 = intensityFeatures(RC2);
% obtenemos las propiedades de textura
TC2 = textureFeatures(RC2);
% guardamos la informacion en Excel
n = {'C2'};
xlswrite(filename,n,1,'A6');
xlswrite(filename,n,2,'A6');
xlswrite(filename,n,3,'A6');
writetable(SC2,filename,'Sheet',1,'Range','B6');
writetable(IC2,filename,'Sheet',2,'Range','B6');
writetable(TC2,filename,'Sheet',3,'Range','B6');
%% se le aplica radiomica a la componente 3
dataC3 = medicalVolume(d(10).name);
% obtenemos las propiedades radiómicas
RC3 = radiomics(dataC3,roi);
% obtenemos las propiedades de forma
SC3 = shapeFeatures(RC3);
% obtenemos las propiedades de intensidad
IC3 = intensityFeatures(RC3);
% obtenemos las propiedades de textura
TC3 = textureFeatures(RC3);
% guardamos la informacion en Excel
n = {'C3'};
xlswrite(filename,n,1,'A11');
xlswrite(filename,n,2,'A11');
xlswrite(filename,n,3,'A11');
writetable(SC3,filename,'Sheet',1,'Range','B11');
writetable(IC3,filename,'Sheet',2,'Range','B11');
writetable(TC3,filename,'Sheet',3,'Range','B11');
%% e le aplica radiomica a la componente 4
dataC4 = medicalVolume(d(11).name);
% obtenemos las propiedades radiómicas
RC4 = radiomics(dataC4,roi);
% obtenemos las propiedades de forma
SC4 = shapeFeatures(RC4);
% obtenemos las propiedades de intensidad
IC4 = intensityFeatures(RC4);
% obtenemos las propiedades de textura
TC4 = textureFeatures(RC4);
% guardamos la informacion en Excel
n = {'C4'};
xlswrite(filename,n,1,'A16');
xlswrite(filename,n,2,'A16');
xlswrite(filename,n,3,'A16');
writetable(SC4,filename,'Sheet',1,'Range','B16');
writetable(IC4,filename,'Sheet',2,'Range','B16');
writetable(TC4,filename,'Sheet',3,'Range','B16');
%% guardamos los valores de la radiomica
save('radiomica_componentes','SC1','IC1','TC1','SC2','IC2','TC2','SC3','IC3','TC3','SC4','IC4','TC4'); ​​​​​​​
Código 11: quitar valores redundantes radiómica


clear all
close all
% Lectura de imágenes
folderC = uigetdir('C:\my\NIFTI');
cd(folderC)
d = dir;
% cargamos las caracteristicas de radiomica
load('radiomica_componentes.mat');
load('radiomica_modalidades.mat');
% creamos los archivos
filenamec = 'radiomica_componentes_reducido.xlsx';
filename = 'radiomica_comparacion.xlsx';
% eliminamos la variable de identificación
SC1=removevars(SC1,"LabelID");
SC2=removevars(SC2,"LabelID");
SC3=removevars(SC3,"LabelID");
SC4=removevars(SC4,"LabelID");
SC = [SC1; SC2; SC3; SC4];
IC1=removevars(IC1,"LabelID");
IC2=removevars(IC2,"LabelID");
IC3=removevars(IC3,"LabelID");
IC4=removevars(IC4,"LabelID");
IC = [IC1; IC2; IC3; IC4];
TC1=removevars(TC1,"LabelID");
TC2=removevars(TC2,"LabelID");
TC3=removevars(TC3,"LabelID");
TC4=removevars(TC4,"LabelID");
TC = [TC1; TC2; TC3; TC4];
% convertimos la tabla en un tipo texto
SC = table2array(SC);
featureNamessc = SC1.Properties.VariableNames;
IC = table2array(IC);
featureNamesic = IC1.Properties.VariableNames;
TC = table2array(TC);
featureNamestc = TC1.Properties.VariableNames;
% computamos el número de caracteristicas
% calculamos el coeficiente de correlación
% eliminamos las caracteristicas redundantes si el coeficiente es 0.95 o
% mayor
fsc = size(SC,2)
f=fsc;
featureCorrTrain = corrcoef(SC);
selectedFeaturessc = true(1,f);
for i = 1:f-1
if isnan(featureCorrTrain(i,i))
selectedFeaturessc(i) = false;
end
if selectedFeaturessc(i)
for j = i+1:f
if abs(featureCorrTrain(i,j)) >= 0.95
selectedFeaturessc(j) = false;
end
end
end
end
SC = SC(:,selectedFeaturessc);
featureNamessc = featureNamessc(selectedFeaturessc);
fscr = size(SC,2)
fic = size(IC,2)
f=fic;
featureCorrTrain = corrcoef(IC);
selectedFeaturesic = true(1,f);
for i = 1:f-1
if isnan(featureCorrTrain(i,i))
selectedFeaturesic(i) = false;
end
if selectedFeaturesic(i)
for j = i+1:f
if abs(featureCorrTrain(i,j)) >= 0.95
selectedFeaturesic(j) = false;
end
end
end
end
IC = IC(:,selectedFeaturesic);
featureNamesic = featureNamesic(selectedFeaturesic);
ficr = size(IC,2)
ftc = size(TC,2)
f=ftc;
featureCorrTrain = corrcoef(TC);
selectedFeaturestc = true(1,f);
for i = 1:f-1
if isnan(featureCorrTrain(i,i))
selectedFeaturestc(i) = false;
end
if selectedFeaturestc(i)
for j = i+1:f
if abs(featureCorrTrain(i,j)) >= 0.95
selectedFeaturestc(j) = false;
end
end
end
end
TC = TC(:,selectedFeaturestc);
featureNamestc = featureNamestc(selectedFeaturestc);
ftcr = size(TC,2)
% guardamos las nuevas tablas
n = {'Componentes'};
xlswrite(filenamec,n,1,'A1');
xlswrite(filenamec,n,2,'A1');
xlswrite(filenamec,n,3,'A1');
writematrix(SC,filenamec,'Sheet',1,'Range','B1');
writematrix(IC,filenamec,'Sheet',2,'Range','B1');
writematrix(TC,filenamec,'Sheet',3,'Range','B1');
% guardamos el número de caracteristicas en una tabla para comparar
n = {'Forma componente'};
xlswrite(filename,n,1,'A1');
writematrix(fsc,filename,'Sheet',1,'Range','A2');
n = {'reducidos'};
xlswrite(filename,n,1,'B1');
writematrix(fscr,filename,'Sheet',1,'Range','B2');
n = {'Intensidad componente'};
xlswrite(filename,n,1,'A4');
writematrix(fic,filename,'Sheet',1,'Range','A5');
n = {'reducidos'};
xlswrite(filename,n,1,'B4');
writematrix(ficr,filename,'Sheet',1,'Range','B5');
n = {'Textura componente'};
xlswrite(filename,n,1,'A7');
writematrix(ftc,filename,'Sheet',1,'Range','A8');
n = {'reducidos'};
xlswrite(filename,n,1,'B7');
writematrix(ftcr,filename,'Sheet',1,'Range','B8');
% guardar variables
save('radiomica_rc','SC','featureNamessc','IC','featureNamesic','TC','featureNamestc')
comparación radiómica entre componentes y modalidades
caso 1
caso 2
caso 3
caso 4
case 5
caso 6
caso 7
Código 12: visualizar características radiómicas

clear all
close all
% Lectura de imágenes
folderC = uigetdir('C:\my\NIFTI');
cd(folderC)
d = dir;
% cargamos los datos de la radiomica
load('radiomica_rm.mat');
load('radiomica_rc.mat');
% visualizamos las caracteristicas de las modalidades
f = size(SM,2)
figure('Name','Forma modalidades','NumberTitle','off',Position=[0 0 1500 500])
tiledlayout(1,f + 1)
for i = 1:f
nexttile
imagesc(SM(:,i))
xticklabels({})
yticklabels({})
ylabel(featureNamessm{i})
end
f = size(IM,2)
figure('Name','Intensidad modalidades','NumberTitle','off',Position=[0 0 1500 500])
tiledlayout(1,f + 1)
for i = 1:f
nexttile
imagesc(IM(:,i))
xticklabels({})
yticklabels({})
ylabel(featureNamesim{i})
end
f = size(TM,2)
figure('Name','Textura modalidades','NumberTitle','off',Position=[0 0 1500 500])
tiledlayout(1,f + 1)
for i = 1:f
nexttile
imagesc(TM(:,i))
xticklabels({})
yticklabels({})
ylabel(featureNamestm{i})
end
% visualizamos las caracteristicas de las componentes
f = size(SC,2)
figure('Name','Forma componentes','NumberTitle','off',Position=[0 0 1500 500])
tiledlayout(1,f + 1)
for i = 1:f
nexttile
imagesc(SC(:,i))
xticklabels({})
yticklabels({})
ylabel(featureNamessc{i})
end
f = size(IC,2)
figure('Name','Intensidad componentes','NumberTitle','off',Position=[0 0 1500 500])
tiledlayout(1,f + 1)
for i = 1:f
nexttile
imagesc(IC(:,i))
xticklabels({})
yticklabels({})
ylabel(featureNamesic{i})
end
f = size(TC,2)
figure('Name','Textura componentes','NumberTitle','off',Position=[0 0 1500 500])
tiledlayout(1,f + 1)
for i = 1:f
nexttile
imagesc(TC(:,i))
xticklabels({})
yticklabels({})
ylabel(featureNamestc{i})
end ​​​​​​​
caso 1
caso 2
caso 3
caso 4
caso 5
caso 6
caso 7
Código 13: concatenación de las caracteristicas radiómicas

clear all
close all
folderC = uigetdir('C:\my\NIFTI');
cd(folderC)
d = dir;
% creamos los archivos
filenamect = 'radiomicatotal_componentes_reducido.xlsx';
filenamemt = 'radiomicatotal_modalidades_reducido.xlsx';
filenamecc ='radiomicatotal_comparacion_reducido.xlsx';
%creamos las tablas
SC = table;
IC = table;
TC = table;
SM = table;
IM = table;
TM = table;
% Lectura de imágenes de los archivos en un loop
for i=1:7
folderC = uigetdir('C:\my\NIFTI');
cd(folderC)
d = dir;
% cargamos las caracteristicas de radiomica
load('radiomica_componentes.mat');
load('radiomica_modalidades.mat');
% concatenamos las de las componentes principales
SC1=removevars(SC1,"LabelID");
SC2=removevars(SC2,"LabelID");
SC3=removevars(SC3,"LabelID");
SC4=removevars(SC4,"LabelID");
SC = [SC; SC1; SC2; SC3; SC4];
IC1=removevars(IC1,"LabelID");
IC2=removevars(IC2,"LabelID");
IC3=removevars(IC3,"LabelID");
IC4=removevars(IC4,"LabelID");
IC = [IC; IC1; IC2; IC3; IC4];
TC1=removevars(TC1,"LabelID");
TC2=removevars(TC2,"LabelID");
TC3=removevars(TC3,"LabelID");
TC4=removevars(TC4,"LabelID");
TC = [TC; TC1; TC2; TC3; TC4];
% concatenamos las de las modalidades
SFlair=removevars(SFlair,"LabelID");
ST1=removevars(ST1,"LabelID");
ST1ce=removevars(ST1ce,"LabelID");
ST2=removevars(ST2,"LabelID");
SM = [SM; SFlair; ST1; ST1ce; ST2];
IFlair=removevars(IFlair,"LabelID");
IT1=removevars(IT1,"LabelID");
IT1ce=removevars(IT1ce,"LabelID");
IT2=removevars(IT2,"LabelID");
IM = [IM; IFlair; IT1; IT1ce; IT2];
TFlair=removevars(TFlair,"LabelID");
TT1=removevars(TT1,"LabelID");
TT1ce=removevars(TT1ce,"LabelID");
TT2=removevars(TT2,"LabelID");
TM = [TM; TFlair; TT1; TT1ce; TT2];
end
% convertimos la tabla en un tipo texto
SC = table2array(SC);
featureNamessc = SC1.Properties.VariableNames;
IC = table2array(IC);
featureNamesic = IC1.Properties.VariableNames;
TC = table2array(TC);
featureNamestc = TC1.Properties.VariableNames;
SM = table2array(SM);
featureNamessm = SFlair.Properties.VariableNames;
IM = table2array(IM);
featureNamesim = IFlair.Properties.VariableNames;
TM = table2array(TM);
featureNamestm = TFlair.Properties.VariableNames;
% computamos el número de características, calculamos el coeficiente de correlación
% eliminamos las características redundantes si el coeficiente es 0.95 o mayor
fsc = size(SC,2)
f=fsc;
featureCorrTrain = corrcoef(SC);
selectedFeaturessc = true(1,f);
for i = 1:f-1
if isnan(featureCorrTrain(i,i))
selectedFeaturessc(i) = false;
end
if selectedFeaturessc(i)
for j = i+1:f
if abs(featureCorrTrain(i,j)) >= 0.95
selectedFeaturessc(j) = false;
end
end
end
end
SC = SC(:,selectedFeaturessc);
featureNamessc = featureNamessc(selectedFeaturessc);
fscr = size(SC,2)
fic = size(IC,2)
f=fic;
featureCorrTrain = corrcoef(IC);
selectedFeaturesic = true(1,f);
for i = 1:f-1
if isnan(featureCorrTrain(i,i))
selectedFeaturesic(i) = false;
end
if selectedFeaturesic(i)
for j = i+1:f
if abs(featureCorrTrain(i,j)) >= 0.95
selectedFeaturesic(j) = false;
end
end
end
end
IC = IC(:,selectedFeaturesic);
featureNamesic = featureNamesic(selectedFeaturesic);
ficr = size(IC,2)
ftc = size(TC,2)
f=ftc;
featureCorrTrain = corrcoef(TC);
selectedFeaturestc = true(1,f);
for i = 1:f-1
if isnan(featureCorrTrain(i,i))
selectedFeaturestc(i) = false;
end
if selectedFeaturestc(i)
for j = i+1:f
if abs(featureCorrTrain(i,j)) >= 0.95
selectedFeaturestc(j) = false;
end
end
end
end
TC = TC(:,selectedFeaturestc);
featureNamestc = featureNamestc(selectedFeaturestc);
ftcr = size(TC,2)
fsm = size(SM,2)
f=fsm;
featureCorrTrain = corrcoef(SM);
selectedFeaturessm = true(1,f);
for i = 1:f-1
if isnan(featureCorrTrain(i,i))
selectedFeaturessm(i) = false;
end
if selectedFeaturessm(i)
for j = i+1:f
if abs(featureCorrTrain(i,j)) >= 0.95
selectedFeaturessm(j) = false;
end
end
end
end
SM = SM(:,selectedFeaturessm);
featureNamessm = featureNamessm(selectedFeaturessm);
fsmr = size(SM,2)
fim = size(IM,2)
f=fim;
featureCorrTrain = corrcoef(IM);
selectedFeaturesim = true(1,f);
for i = 1:f-1
if isnan(featureCorrTrain(i,i))
selectedFeaturesim(i) = false;
end
if selectedFeaturesim(i)
for j = i+1:f
if abs(featureCorrTrain(i,j)) >= 0.95
selectedFeaturesim(j) = false;
end
end
end
end
IM = IM(:,selectedFeaturesim);
featureNamesim = featureNamesim(selectedFeaturesim);
fimr = size(IM,2)
ftm = size(TM,2)
f=ftm;
featureCorrTrain = corrcoef(TM);
selectedFeaturestm = true(1,f);
for i = 1:f-1
if isnan(featureCorrTrain(i,i))
selectedFeaturestm(i) = false;
end
if selectedFeaturestm(i)
for j = i+1:f
if abs(featureCorrTrain(i,j)) >= 0.95
selectedFeaturestm(j) = false;
end
end
end
end
TM = TM(:,selectedFeaturestm);
featureNamestm = featureNamestm(selectedFeaturestm);
ftmr = size(TM,2)
% guardamos las nuevas tablas
n = {'Componentes principales'};
xlswrite(filenamect,n,1,'A1');
xlswrite(filenamect,n,2,'A1');
xlswrite(filenamect,n,3,'A1');
writematrix(SC,filenamect,'Sheet',1,'Range','B1');
writematrix(IC,filenamect,'Sheet',2,'Range','B1');
writematrix(TC,filenamect,'Sheet',3,'Range','B1');
n = {'Modalidades'};
xlswrite(filenamemt,n,1,'A1');
xlswrite(filenamemt,n,2,'A1');
xlswrite(filenamemt,n,3,'A1');
writematrix(SM,filenamemt,'Sheet',1,'Range','B1');
writematrix(IM,filenamemt,'Sheet',2,'Range','B1');
writematrix(TM,filenamemt,'Sheet',3,'Range','B1');
% guardamos el número de caracteristicas en una tabla para comparar
n = {'Forma componente'};
xlswrite(filenamecc,n,1,'A1');
writematrix(fsc,filenamecc,'Sheet',1,'Range','A2');
n = {'reducidos'};
xlswrite(filenamecc,n,1,'B1');
writematrix(fscr,filenamecc,'Sheet',1,'Range','B2');
n = {'Intensidad componente'};
xlswrite(filenamecc,n,1,'A4');
writematrix(fic,filenamecc,'Sheet',1,'Range','A5');
n = {'reducidos'};
xlswrite(filenamecc,n,1,'B4');
writematrix(ficr,filenamecc,'Sheet',1,'Range','B5');
n = {'Textura componente'};
xlswrite(filenamecc,n,1,'A7');
writematrix(ftc,filenamecc,'Sheet',1,'Range','A8');
n = {'reducidos'};
xlswrite(filenamecc,n,1,'B7');
writematrix(ftcr,filenamecc,'Sheet',1,'Range','B8');
% guardamos el número de características en una tabla para comparar
n = {'Forma modalidad'};
xlswrite(filenamecc,n,1,'D1');
writematrix(fsm,filenamecc,'Sheet',1,'Range','D2');
n = {'reducidos'};
xlswrite(filenamecc,n,1,'E1');
writematrix(fsmr,filenamecc,'Sheet',1,'Range','E2');
n = {'Intensidad modalidad'};
xlswrite(filenamecc,n,1,'D4');
writematrix(fim,filenamecc,'Sheet',1,'Range','D5');
n = {'reducidos'};
xlswrite(filenamecc,n,1,'E4');
writematrix(fimr,filenamecc,'Sheet',1,'Range','E5');
n = {'Textura modalidad'};
xlswrite(filenamecc,n,1,'D7');
writematrix(ftm,filenamecc,'Sheet',1,'Range','D8');
n = {'reducidos'};
xlswrite(filenamecc,n,1,'E7');
writematrix(ftmr,filenamecc,'Sheet',1,'Range','E8');
% guardar variables
save('radiomica_cc','SM','featureNamessm','IM','featureNamesim','TM','featureNamestm','SC','featureNamessc','IC','featureNamesic','TC','featureNamestc')
todos los casos concatenados
Código 14: visualizar concatenación caracteristicas radiómicas

clear all
close all
% Lectura de imágenes
folderC = uigetdir('C:\my\NIFTI');
cd(folderC)
d = dir;
% cargamos los datos de la radiomica
load('radiomica_cc.mat');
% visualizamos las caracteristicas de las modalidades
f = size(SM,2)
figure('Name','Forma modalidades','NumberTitle','off',Position=[0 0 1500 500])
tiledlayout(1,f + 1)
for i = 1:f
nexttile
imagesc(SM(:,i))
xticklabels({})
yticklabels({})
ylabel(featureNamessm{i})
end
f = size(IM,2)
figure('Name','Intensidad modalidades','NumberTitle','off',Position=[0 0 1500 500])
tiledlayout(1,f + 1)
for i = 1:f
nexttile
imagesc(IM(:,i))
xticklabels({})
yticklabels({})
ylabel(featureNamesim{i})
end
f = size(TM,2)
figure('Name','Textura modalidades','NumberTitle','off',Position=[0 0 1500 500])
tiledlayout(1,f + 1)
for i = 1:f
nexttile
imagesc(TM(:,i))
xticklabels({})
yticklabels({})
ylabel(featureNamestm{i})
end
% visualizamos las caracteristicas de las componentes
f = size(SC,2)
figure('Name','Forma componentes','NumberTitle','off',Position=[0 0 1500 500])
tiledlayout(1,f + 1)
for i = 1:f
nexttile
imagesc(SC(:,i))
xticklabels({})
yticklabels({})
ylabel(featureNamessc{i})
end
f = size(IC,2)
figure('Name','Intensidad componentes','NumberTitle','off',Position=[0 0 1500 500])
tiledlayout(1,f + 1)
for i = 1:f
nexttile
imagesc(IC(:,i))
xticklabels({})
yticklabels({})
ylabel(featureNamesic{i})
end
f = size(TC,2)
figure('Name','Textura componentes','NumberTitle','off',Position=[0 0 1500 500])
tiledlayout(1,f + 1)
for i = 1:f
nexttile
imagesc(TC(:,i))
xticklabels({})
yticklabels({})
ylabel(featureNamestc{i})
end
todos los casos concatenados
Discusión

Caso 1
· Podemos determinar que en las características radiómicas indica que hay más informacion relevante en las modalidades en las caracteristicas de intensidad y mayor informacion relevante en las componentes en las caracteristicas de textura.
· En la representación de las componentes principales en el corte coronal se puede observar que visualmente presentan más informacion las componentes que las modalidades.
· La informacion visual del glioma es muy diferente dependiendo de la imagen
· Las componentes presentan mayor informacion visual que el segmento.
caso 1
Caso 2
• Podemos determinar que en las características radiómicas indica que hay más informacion relevante en las componentes en las caracteristicas de intensidad y de textura.
• En la representación de las componentes principales visualmente presentan la misma información que las modalidades
caso 2
Caso 3
· Podemos determinar que en las características radiómicas indica que hay más informacion relevante en las modalidades en las caracteristicas de forma y de textura.
· Visualmente la informacion visual del glioma es diferente dependiendo de la imagen.
· Tiene más informacion las imágenes que la segmentacion.
caso 3
Caso 4
· Podemos determinar que en las características radiómicas indica que hay más informacion relevante en las componentes en las caracteristicas de intensidad y de textura.
· En la representación de las componentes principales visualmente presentan la misma información que las modalidades.
caso 4
Caso 5
· Podemos determinar que en las características radiómicas indica que hay más informacion relevante en las componentes en las caracteristicas de intensidad y de textura.
· En la representación de las componentes principales visualmente presentan la misma información que las modalidades.
caso 5
Caso 6
· Podemos determinar que en las características radiómicas indica que hay más informacion relevante en las componentes en las caracteristicas de intensidad y de textura.
· En la representación de las componentes principales visualmente presentan la misma información que las modalidades.
caso 6
Caso 7
· Podemos determinar que en las características radiómicas indica que hay más informacion relevante en las modalidades en las caracteristicas de intensidad y mayor informacion relevante en las componentes en las caracteristicas de textura.
· En la representación de las componentes principales en el corte coronal se puede observar que visualmente presentan más informacion las componentes que las modalidades.
· La informacion visual del glioma es muy diferente dependiendo de la imagen.
· Las modalidades presentan mayor informacion visual que el segmento.
case 7
En general
· Se determina que en general hay más informacion relevante en las componentes que en las modalidades, según las caracteristicas radiómicas.
· Se puede observar que en los casos en que las caracteristicas radiómicas de las componentes principales presentaban mayor informacion redundante, hay una homogeneidad entre las imágenes.
· En los casos en que las caracteristicas radiómicas de las modalidades presentaban mayor informacion relevante, se nota que hay una incongruencia en la visualización del glioma, indicando requerimiento de mayor estudio a la forma del glioma y también una nueva segmentacion del glioma.
· Se tiene en cuenta que sería idóneo tener un mayor tamaño muestral para verificar y sacar conclusiones más concretas, teniendo en cuenta que se presenta un gran número de caracteristicas radiómicas.
todas concatenadas
CONCLUSIONES Y RECOMENDACIONES

· En este trabajo se deja un precedente de la informacion adicional que puede aportar las componentes principales visualmente y realizando un análisis radiómico, generalmente obteniendo mayor informacion relevante que con las modalidades de imagen.
· Teniendo en cuenta que la radiomica es una ciencia con una brecha de conocimiento muy grande, se nota que hay una posibilidad de reducir la brecha al aumentar el tamaño muestral del estudio
· Se puede observar que al tratar con tumores cerebrales hay muchos desafíos aun en el momento de detectar, predecir o estudiar.
REFERENCIAS

Abad, G. G. (2023). Varianza: Qué es y cómo se calcula. sage, 1.
Barnett, T. P., & Preisendorfer, R. (1987). Orígenes y niveles de habilidad de previsión mensual y estacional para las temperaturas del aire en superficie de los Estados Unidos determinados por el análisis de correlación canónica. Estados Unidos: Monthly Weather Review.
Bibiloni, P. (2019). Corregistro de imagen: definición y tipos.
Braggio, D. (s.f.). Técnicas de análisis y cuantificación en imagen médica en el estudio de enfermedades neuronales. Buenos Aires: Universidad Nacional del Centro de la Provincia de Buenos Aires. Facultad de Ciencias Exactas.
cancer, I. n. (s.f.). Medline Plus. Obtenido de https://medlineplus.gov/spanish/braintumors.html
cardiaca, S. e. (s.f.). Sociedad española de imagen cardiaca. Obtenido de https://ecocardio.com/documentos/biblioteca-preguntas-basicas/preguntas-al-radiologo/914-que-es-t1-y-t2.html
CBICA. (2019). Multimodal Brain Tumor Segmentation Challenge 2019. Pennsylvania: Perelman School of Medicine.
Dra. Nora La Serna Palomino, L. U. (2009). Técnicas de Segmentación en Procesamiento Digital de. San Marcos.
eddm. (16 de Febrero de 2023). Obtenido de FUNCIONAMIENTO DE SLICERS: https://eddm.es/blog-ingenius/funcionamiento-slicers/
enago. (s.f.). Obtenido de ¿Cómo elegir la mejor metodología de investigación para su estudio?: https://www.enago.com/es/academy/choose-best-research-methodology/#respond
Española, R. A. (s.f.). Diccionario de la lengua española. España: RAE.
Fairchild, M. (2013). Color Appearance Models. pag 87. John Wiley & Sons.
Fournier, L. (2021). European Society Of Radiology. European Radiology.
Galindo, M. G. (2021). Análisis de las características. Valladolid.
Goering, R. (2007). Matlab edges closer to electronic design automation world. Wayback machine.
González, R. W. (1996). Procesamiento digital de imágenes. Addison-Wesley.
Grossmann P, N. V. (2021). Quantitative imaging biomarkers.
Jason Levy, D. C. (07 de Mayo de 2022). Medline plus. Obtenido de https://medlineplus.gov/spanish/ency/article/003335.htm
Lumivero. (s.f.). ANÁLISIS DE COMPONENTES PRINCIPALES (ACP). Obtenido de Xlstat: https://www.xlstat.com/es/soluciones/funciones/analisis-de-componentes-principales-acp
Martinez, U. A. (2015). PLANOS ANATÓMICOS.
MathWorks. (s.f.). Obtenido de Procesamiento basado en RO: https://la.mathworks.com/help/images/roi-based-processing.html
Medicine, J. H. (s.f.). Johns Hopkins Medicine. Obtenido de https://www.hopkinsmedicine.org/international/espanol/conditions-treatments/neurosurgery/gliomas.html#:~:text=Un%20glioma%20es%20un%20tipo,se%20encuentran%20en%20el%20cerebro.
Medline Plus. (s.f.). Obtenido de Diagnóstico por imágenes: https://medlineplus.gov/spanish/diagnosticimaging.html
Niknejad, M. (16 de Febrero de 2103). Fluid attenuated inversion recovery. Radiopaedia. Obtenido de https://radiopaedia.org/articles/fluid-attenuated-inversion-recovery?lang=us
Ortega, C. (s.f.). Question Pro. Obtenido de ¿Qué es la media, la mediana y la moda?: https://www.questionpro.com/blog/es/la-media-la-mediana-y-la-moda/#:~:text=La%20media%2C%20tambi%C3%A9n%20conocida%20como,influida%20por%20los%20valores%20extremos.
persona de Mayo Clinic. (21 de Marzo de 2023). Mayo CLinic. Obtenido de https://www.mayoclinic.org/es/diseases-conditions/glioma/symptoms-causes/syc-20350251
Philippe Lambin, E. R.-V. (2012). Radiomics: Extracting more information from medical images using advanced feature analysis. PMC PubMedCentral. Obtenido de wikipedia.
Real Academia Nacional de Medicina de España. (s.f.). Obtenido de https://www.ranm.es/terminolog%C3%ADa-m%C3%A9dica/recomendaciones-de-la-ranm/3610-patologia-no-es-sinonimo-de-enfermedad.html#:~:text=Patolog%C3%ADa%20significa%20'parte%20de%20la,en%20un%20uso%20no%20especializado.
Roche, F. I. (s.f.). Fundacion Instituto Roche. Obtenido de Observatorio de tendencias en la medicina del futuro: https://www.institutoroche.es/observatorio/radiomica
Roche, I. (s.f.). diariofarma. Obtenido de Radiómica, una herramienta clave en la medicina del futuro: https://diariofarma.com/2022/07/18/radiomica-una-herramienta-clave-en-la-medicina-del-futuro/
RSTI training. (s.f.). Obtenido de Radiological service training institute: https://rsti-training.com/
Salinas, J. (s.f.). Estadisticos de dispersion. Universidad de Granada.
Sony. (s.f.). SOny. Obtenido de ¿Qué es el contraste y cómo puedo aprovecharlo en mis fotos?: https://www.sony.com.bo/alphauniverse/stories/que-es-el-contraste-y-como-puedo-aprovecharlo-en-mis-fotos#:~:text=El%20contraste%20no%20es%20otra,o%20cualquier%20otro%20elemento%20visual.
Valente, P. P. (2018). Fundamentos básicos del procesamiento de imágenes.
Visualcube. (2008). Obtenido de http://visualcube.org/1e3/
Wikipedia. (12 de Julio de 2023). Wikipedia. Obtenido de Segmentación: https://es.wikipedia.org/wiki/Segmentaci%C3%B3n_(procesamiento_de_im%C3%A1genes)
Agus, M., et al. (2009). An interactive 3D medical visualization system based on a light field display. The Visual Computer, 25(9), 883-893.
Baumgart, B. G. (mayo, 1975). A polyhedron representation for computer visión. En National computer conference and exposition, AFIPS ’75. New York.
Borland, D., y Taylor, R. M. (2007). Rainbow color map (still) considered harmful. IEEE Computer Graphics and Applications, 27(2), 14-17.
Carr, H., Snoeyink, J., y Axen, U. (enero, 2000). Computing contour trees in all dimensions. En ACM-SIAM symposium on discrete algorithms, SODA ’00. Portland, Oregon
Fedorov, A, et al. (2012). 3D Slicer as an image computing platform for the Quantitative Imaging Network. Magn Reson Imaging, 30(9), 1.323-1.341.
Ackerman, M. J. (1998). Visible human project. Proceedings of the IEEE, 86, 504-511.
Chen, C. W., Lai, W., Fang, F. Y., y Chen, L. (1995). Portal image feature extraction by hierarchical region processing technique. En Proceedings of 1995 IEEE International Conference on Systems, Man and Cybernetics. Intelligent Systems for the 21st Century, 4, 3561-3566.
Análisis radiómico de las componentes principales
Published:

Análisis radiómico de las componentes principales

Published:

Tools

Creative Fields