
Guardar variables de un bucle for
Publicado por Félix (4 intervenciones) el 14/05/2015 21:17:05
Buenas tardes a todos,
Soy iniciado en MAtlab y quería pediros ayuda puesto que necesito hacer un programilla que sea capaz de leer las imágenes RGB contenidas en una carpeta, hacer 3 segmentaciones por cada una de las imágenes (visualizarlas) y crear las variables que contengan esas imágenes binarias. El código que tengo hecho hasta ahora es el siguiente:
El problema es que este código me muestra las imágenes bien para todas las fotos pero solo me guarda las variables BW_hueso, BW_tot y BW_lim de la última. No se como podría hacer en un for para ir guardando los valores de estas variables (son matrices) cada vez que lee una imagen para al final poder tener todos los valores (BW_hueso, BW_tot y BW_lim ) de todas las imágenes.
Espero haberme explicado
Muchas gracias por adelantado
Soy iniciado en MAtlab y quería pediros ayuda puesto que necesito hacer un programilla que sea capaz de leer las imágenes RGB contenidas en una carpeta, hacer 3 segmentaciones por cada una de las imágenes (visualizarlas) y crear las variables que contengan esas imágenes binarias. El código que tengo hecho hasta ahora es el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
function prueba
clear all;
close all;
S= dir('*JPG');
numero_muestras = size(S,1);
length(S);
for n=1:length(S);
n
nomefile=S(n).name;
I=imread(nomefile);
I_red=imresize(I,0.25);
B = rgb2ycbcr(I_red);
channel1Min = 0.000;
channel1Max = 79.000;
channel2Min = 48.000;
channel2Max = 183.000;
channel3Min = 144.000;
channel3Max = 155.000;
BW_hueso = (B(:,:,1) >= channel1Min ) & (B(:,:,1) <= channel1Max) & ...
(B(:,:,2) >= channel2Min ) & (B(:,:,2) <= channel2Max) & ...
(B(:,:,3) >= channel3Min ) & (B(:,:,3) <= channel3Max);
BW_hueso = ~BW_hueso;
BW_hueso=BW_hueso==0;
BW_hueso = imfill(BW_hueso,'holes');
maskedRGB_hueso = I_red;
C = rgb2ycbcr(I_red);
channel1Min = 0.000;
channel1Max = 249.000;
channel2Min = 116.000;
channel2Max = 255.000;
channel3Min = 0.000;
channel3Max = 141.000;
BW_tot = (C(:,:,1) >= channel1Min ) & (C(:,:,1) <= channel1Max) & ...
(C(:,:,2) >= channel2Min ) & (C(:,:,2) <= channel2Max) & ...
(C(:,:,3) >= channel3Min ) & (C(:,:,3) <= channel3Max);
maskedRGB_tot = I_red;
BW_tot=BW_tot==0;
BW_tot = imfill(BW_tot,'holes');
D=rgb2ycbcr(I_red);
channel1Min = 31.000;
channel1Max = 216.000;
channel2Min = 101.000;
channel2Max = 119.000;
channel3Min = 132.000;
channel3Max = 178.000;
BW_lim = (D(:,:,1) >= channel1Min ) & (D(:,:,1) <= channel1Max) & ...
(D(:,:,2) >= channel2Min ) & (D(:,:,2) <= channel2Max) & ...
(D(:,:,3) >= channel3Min ) & (D(:,:,3) <= channel3Max);
maskedRGB_lim=I_red;
BW_lim = imfill(BW_lim,'holes');
BW_lim = bwareaopen(BW_lim, 300);
figure,subplot(2,2,1),imagesc(I_red),title(nomefile);
subplot(2,2,2),imagesc(BW_hueso),title('Hueso');
subplot(2,2,3),imagesc(BW_tot),title('Total');
subplot(2,2,4),imagesc(BW_lim),title('Limite');
end
save prueba_felix BW_hueso BW_tot BW_lim;
load ('prueba_felix.mat');
El problema es que este código me muestra las imágenes bien para todas las fotos pero solo me guarda las variables BW_hueso, BW_tot y BW_lim de la última. No se como podría hacer en un for para ir guardando los valores de estas variables (son matrices) cada vez que lee una imagen para al final poder tener todos los valores (BW_hueso, BW_tot y BW_lim ) de todas las imágenes.
Espero haberme explicado
Muchas gracias por adelantado
Valora esta pregunta


0