Matlab - estadísticas en imagen

 
Vista:

estadísticas en imagen

Publicado por Vir (20 intervenciones) el 11/09/2007 13:32:17
Hola, me gustaría saber cómo calcular la media, moda, mediana, máximo, mínimo y rango de una imagen. Lo primero que hago es cargar la imagen mediante imread, ahí ya tendría guardada en forma de matriz los valores de la imagen, pero no puedo calcular directamente los valores de la moda, el máximo, mínimo ni el rango, o al menos no sé. He intentado hacerlo sobre el tamaño de la imagen, es decir, t=size(imagen), calculando la media, moda.... de t, pero tampoco me sale.
Espero que podáis ayudarme. Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:estadísticas en imagen

Publicado por Fátima (32 intervenciones) el 11/09/2007 16:26:47
Hola Vir, la media la puedes hallar con mean(x) y el máximo y el mínimo con
max(x) y min(x) respectívamente. Mírate la documentación de matlab porque utilizar estas funciones con vectores es muy sencillo pero con matrices cambia un poco y tienes que saber interpetrar el resultado (pero no es difícil, sólo es para que lo tengas en cuenta). Para la mediana y la moda no sé si matlab tendrá funciones directas, si no las encuentras puedes hacer lo siguiente (sólo es una idea):
Si no recuerdo mal la mediana es el valor central en una distribución ordenada de números o algo así, entonces primero tendremos que ordenar todos los valores de tu matriz, eso lo puedes hacer con sort(x), yo haría:

>>m = imread('imagen.extension'); % Como tú dijiste, ya tendríamos la matriz
>>mcol = m(:); % Y tendríamos todos los valores seguidos en una sólo columna
>>mcol_ord = sort(mcol); % Obtendríamos la columna ordenada (en orden ascendiente por defecto)
Y ya sólo tendríamos que tomar el valor central.

En cuanto a la moda (valor que más se repite) yo haría un programita para obtener los valores distintos que contiene la matriz y el número de veces que aparece cada uno de ellos (su frecuencia). (Entiendo que esto puede ser un pequeño coñazo, pero como te he dicho sólo es una idea, seguro que hay mejores formas). Cuando tengas estos datos, los guardas en dos vectores o una matriz del siguiente modo:

v1 = [n1 n2 n3 n4 n5 n6...] (los distintos números)
v2 = [f1 f2 f3 f4 f5 f6...] (las frecuencias en el mismo orden que los números)

>>[maximo indice] = max(v2)
En máximo tendrás la frecuencia del que más se repite y en índice, el lugar que ocupa dentro del vector v2. Entonces haces:

>>moda = v1(indice)

Y ya tienes la moda.

Por cierto, supongo que a rango te refieres a la diferencia entre el valor máximo y mínimo de la matriz. Si es así, cuando halles estos valores tendrás tb el rango.

No sabía que me iba a quedar tan largo. Espero que te sirva de ayuda, sino habré conseguido al menos entretenerte unos minutos. jeje
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:estadísticas en imagen

Publicado por Fátima (32 intervenciones) el 11/09/2007 16:54:37
Olvidé decirte arriba, que en el cálculo de la moda, la función max te devolverá la máxima frecuencia que haya encontrado primero, es decir, si tienes más de una moda en tu matriz, del modo que te comenté sólo obtendrás la primera que aparezca.

Ejemplo de cómo funciona max:
x = [2 6 3 5 6 1 1 6] (un vector cualquiera)
[maxi indi] = max(x)
maxi = 6
indi = 2 --> índice del primer máximo encontrado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:estadísticas en imagen

Publicado por Vir (20 intervenciones) el 11/09/2007 16:54:53
Hola Fátima. La solución que das es buena, pero sigo teniendo el problema de la matriz de la imagen. Mira, te cuento como he hecho esto para que sepas más o menos a lo que me refiero, aunque tu solución también me vale.

El código que he utilizado es el siguiente, lo he sacado de la toolbox, de la parte de wavelet, es de ahí de donde he sacado la idea:

1
2
3
4
5
6
7
8
9
10
img=imread('imagen.extensión');
t=size(img);                                             %calculo el tamaño de la imagen
his=wgethist(t(:),60);                             %hallo el histograma
[xx,imod]=max(his(2,:));  %esto es para la moda, que es parecido a lo q tú decías
mode_val=(his(1,imod)+his(1,imod+1))/2;     %aquí calcula la moda
mean_val   = mean(t);                            %calcula la media
max_val    = max(t);                                 %calcula el máximo
min_val    = min(t);                                   %mínimo
range_val  = max_val-min_val;             %rango
med_val    = median(t);                           %mediana

El problema que tengo que esto me da la solución para el tamaño, es decir, si el tamaño es de 493 x 600, estos valores me saldrán entre 493 y 600, y no entre 0 y 256 como es el caso de una imagen en escala de grises, porque lo que me interesa es dar los datos estadísticos de los niveles de la imagen, no del tamaño.

Bueno, no sé si me he explicado muy bien, de todas formas lo voy a intentar como has propuesto.

Muchas gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:estadísticas en imagen

Publicado por Fátima (32 intervenciones) el 11/09/2007 17:47:52
No te compliques con lo del tamaño. Haciendo imread ya tienes una matriz con los valores de nivel de gris de cada pixel. Utilizando las funciones mean, max, min, median (por cierto no me acordaba de esta función) sobre la matriz ya estás trabajando directamente con los valores que quieres (valores que varían entre 0 y 255). Y para la moda puedes usar imhist (no había caído, al ver tu respuesta, la recordé). h = imhist (matriz) --> en h se guardan el número de píxeles de cada nivel de gris.

Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:estadísticas en imagen

Publicado por Vir (20 intervenciones) el 11/09/2007 18:14:18
Muchas gracias Fátima, lo he hecho como dices en el último post, utilizando imread, pero sigue sin salir, no sé si será porque la variable imagen es una global que me viene de otro GUI precedente (en otras funciones en este mismo GUI no me da fallo), pero aquí me da el erro en eso, al hacer el imread(imagen). De todas maneras seguiré intentándolo, a ver si lo saco. Muchas gracias de nuevo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:estadísticas en imagen

Publicado por job rodriguez (10 intervenciones) el 01/09/2011 04:30:55
nesecito alguien que sepa programar en matlab que me haga favor de pasarme el programa de la moda para poder pasar mi materia
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

RE:estadísticas en imagen

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 02/09/2011 05:09:41
hola JOB.
yo se programar en matlab.
Pero no se que será la moda?.
Seria bueno que pusieras mas informacion.
De que sepa programar en matlab, no indica que conozca la cuestion teorica de moda.

saludos
JOSE JEREMIAS CABALLERO
ASESOR DE PROYECTOS CON MATLAB
PROFESOR DE METODOS NUMERICOS CON MATLAB
PROGRAMADOR MATLAB
[email protected]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:estadísticas en imagen

Publicado por job rodriguez (10 intervenciones) el 21/09/2011 16:11:43
la moda es el valor ke se repite mas veses en una serie de numeros
por ejemplo
11112589746249865865861154565012952
el numero que se repite ,as veses en esta serie es el 1
entonses esa es la moda algo asi debo de aser en matlab
geacias i espero tu respuesta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

RE:estadísticas en imagen

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 21/09/2011 16:23:41
hola Job.
la funcion moda en matlab es mode
para mayor informacion digita en la ventana de comandos, la sentencia
>>help mode
entra a la opcion de doc mode.
%========================================
>> A=[1,1, 1, 1, 2, 5, 8, 9, 7, 4, 6, 2, 4, 9, 8, 6,5,8,6,5,8,6,1,1,5,4,5,6,5,0,1,2,9,5,2];
>> mode(A)
ans =

1
%===================
Posdata: Si sabia que la funcion mode sacaba la modaen matlab, pero no sabia exactamente que es lo sacaba, gracias por tu informacion.

Ademas se puede hacer un programa para hallar esta moda, pero para hay que programar matlab.


saludos
JOSE JEREMIAS CABALLERO
ASESOR DE PROYECTOS CON MATLAB
PROFESOR DE METODOS NUMERICOS CON MATLAB
PROGRAMADOR MATLAB
[email protected]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:estadísticas en imagen

Publicado por job rodriguez (10 intervenciones) el 21/09/2011 17:01:37
si eso si lo se pero lo ke enrealidad kiero es un programa ke realise el kalkulo da la modo sin utilisar funciones un programa kreado por algien
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:estadísticas en imagen

Publicado por job rodriguez (10 intervenciones) el 21/09/2011 17:03:54
mira: como bien sabemos la moda es el numerop que mas se repite, pero el ´problema es que matlab entienda eso, por eso despues de tantas investigaciones "eureka" que me salio y es asi:
su formula es asi:
1
m=[(vmax*n+1)+sumatoria(vmin/n+1)]/(n)

ahora en matlab:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
clc, clear
suma=0; suma=1;
while dat=(1;n)
n= input('¿cuantos datos escribiras?')
d=input('dame un dato')
end
if rem (dat,n)
else
if dat= (dat-1)/n
end
m==dat+1
wile moda==0
if mo=(moda:~)==1
end
end
end
disp('la moda es')
disp(moda)
disp('se repite)
disp(mo 'veces')
% termine


algo asi pero al korrerlo me marka error i no lo puedo enkontrar si lo puees enkontrar te agradeseria demasiado

att job
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

RE:estadísticas en imagen

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 21/09/2011 17:20:29
Hola Diego.

"si eso si lo se pero lo ke enrealidad kiero es un programa ke realise el kalkulo da la modo sin utilisar funciones un programa kreado por algien".
Dices: " sin utilizar funciones un programa creado por alguien", no entiendo. Me parece que te contradices, deberias poner punto y coma o coma, en tus oraciones.
Intuyo que quieres algo asi.

Supongo que sabes programar en matlab.

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
%===================================
%Halla la moda de un vector
clear all;
clc
Datos=[1,1, 1, 1, 2, 5, 8, 9, 7, 4, 6, 2, 4, 9, 8, 6,5,8,6,5,8,6,1,1,5,4,5,6,5,0,1,2,9,5,2];
N=length(Datos);
AnteriorModa=0;
antcont=0;
for t=1:1:N
    md= Datos(t);
    cont=1;
    for w=t+1:N
        if md==Datos(w)
        cont=cont+1;
        end
            if(cont > antcont)
                AnteriorModa = md;
                antcont = cont;
            end
    end
end
moda=AnteriorModa;
display(moda);
 
%==================================

EJECUCION

>> fmoda
moda =
1


saludos
JOSE JEREMIAS CABALLERO
ASESOR DE PROYECTOS CON MATLAB
PROFESOR DE METODOS NUMERICOS CON MATLAB
PROGRAMADOR MATLAB
[email protected]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

RE:estadísticas en imagen

Publicado por job rodriguez (10 intervenciones) el 22/09/2011 02:39:52
oye si esta muy bien pero supongamos ke sea kualkier serie ke el programa me pida la serie yo se la de y ke solo me de la moda yo pienso ke debe ser algo parecido si me lo puedes mostrar de esa manera te la agradeceria


att: job

grACIAS DE ANTEMANO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

RE:estadísticas en imagen

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 22/09/2011 02:46:49
HOLA JOB.

Ahorita estas haciendo tus preguntas, encima de otro usuario principal vir.
Haz tu propia pregunta, que seas tu el usuario principal y te contesto.

Ve a la opcion de agregar nota y haces tu propias preguntas.
y yo te contestaré con mucho gusto.


saludos
JOSE JEREMIAS CABALLERO
ASESOR DE PROYECTOS CON MATLAB
PROFESOR DE METODOS NUMERICOS CON MATLAB
PROGRAMADOR MATLAB
[email protected]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:estadísticas en imagen

Publicado por job rodriguez (10 intervenciones) el 23/09/2011 05:40:19
hola jose

mi pregunta es:
que necesito un programa que me diga cual es la moda en una serie de números, que el programa me pida la serie yo le de los números y que ella solo me arroje el resultado que es la moda
puede ser cualquier serie puede haber una moda o mas todo eso debe haser el programa algo así
haber si me di a entender
gracias
ate job
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

RE:estadísticas en imagen

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 23/09/2011 05:47:08
YO SI ENTIENDO LO QUIERES.
pERO TU ENTIENDES, CUANDO TE DIGO QUE HAGAS TUS PROPIAS PREGUNTAS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:estadísticas en imagen

Publicado por job rodriguez (10 intervenciones) el 25/09/2011 03:51:28
no no entiendo es komo de ke yo haga mis propias preguntas donde se ase eso o ke me kieres desir kon eso
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:estadísticas en imagen

Publicado por job rodriguez (10 intervenciones) el 25/09/2011 23:44:52
oye pero si me puedes ayudar kon el programa beda
kon la de las preguntas eske yo no tengo para manda mensage solo por komentarioos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:estadísticas en imagen

Publicado por job rodriguez (10 intervenciones) el 28/09/2011 16:37:07
oye tu programa solo kalkula una moda y si kiero kaskukular 2 o mas komo le ago
porfa alludame
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

RE:estadísticas en imagen

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 28/09/2011 16:48:59
Entra a esta direccion haz tu pregunta.

http://www.lawebdelprogramador.com/foros/agregar.php?id=132

saludos
JOSE JEREMIAS CABALLERO
ASESOR DE PROYECTOS CON MATLAB
PROFESOR DE METODOS NUMERICOS CON MATLAB
PROGRAMADOR MATLAB
[email protected]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:estadísticas en imagen

Publicado por job rodriguez (10 intervenciones) el 05/10/2011 04:51:03
ya lo ise y aora ke ago mmmmmmmmmm
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:estadísticas en imagen

Publicado por job rodriguez (1 intervención) el 10/10/2011 15:46:11
oye ya lo hise aora ke ago porfa ayudame eske es mui urgente
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:estadísticas en imagen

Publicado por Ronald (1 intervención) el 26/01/2014 23:00:27
Buenas Tarde gracias : encontrar la moda mediante este programa...le escribo hacerle una observación en la moda puede dos o 3... como hacer cuando se encuentra en estos casos...el programa que hizo solo vota el menor de ellos gracias por su repuesta
...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:estadísticas en imagen

Publicado por c_principe (1 intervención) el 08/05/2014 20:45:20
pueden pasar algun link para conocer el tema de programacion.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

estadistica

Publicado por maximino Pablo Lopez (1 intervención) el 01/11/2015 04:52:59
tengo dudas de como calcular la moda en datos no agrupados
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

estadistica

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 01/11/2015 13:49:38
1
2
3
4
5
6
7
8
9
10
11
12
13
clear all
clc
datos=[ 6 7 8 10 7 6  8 9 6 7 7 5 8 10 5 6 7 5 8 8]
Datos=unique(datos);
for i=1:length(Datos)
    [f, posicion]=find(datos==Datos(i) );
    Datos1(i,:)=[Datos(i) sum(f)];
end
Datos1
[maximo,posicion]=max(Datos1(:,2));
[numero, repitencia]=find(Datos1(:,2)==maximo);
Dat=Datos1(numero,:)
Moda=Dat(:,1)



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
>> moda_datos_no_agrupados
datos =
     6     7     8    10     7     6     8     9     6     7     7     5     8    10     5     6     7     5     8     8
 
Datos1 =
     5     3
     6     4
     7     5
     8     5
     9     1
    10     2
 
Dat =
     7     5
     8     5
 
Moda =
     7
     8


Saludos
JOSE JEREMÍAS CABALLERO
Asesoría online en Matlab
Servicios de programación matlab
[email protected]
Estimado Usuario, el correo es para servicios de cursos, asesoría y programación. Toda ayuda gratuita es vía foro


http://matlabcaballero.blogspot.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:estadísticas en imagen

Publicado por Oscar (1 intervención) el 11/12/2015 02:54:03
Excelente aporte e interpretación de lo que le pedían. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar