Matlab - Como encontrar los pixeles saturados en una imagen??

   
Vista:

Como encontrar los pixeles saturados en una imagen??

Publicado por Montse Goja (5 intervenciones) el 29/05/2014 16:36:01
Hola...estoy tratando de crear un pequeño script en Maltab que muestre el histograma de una imagen y me resalte los pixeles saturados dentro de la imagen, hasta el momento hago dos ciclos para recorrer las filas y columnas de la imagen pero no se como establecer la condición para que encuentre los pixeles mas saturados y los resalte.

Este es el código que tengo hasta el momento
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
img=imread('1blanco.png');
subplot(3,1,1),subimage(img),title('Imagen original');
subplot(3,1,2),imhist(img),title('Histograma');
[m n]=size(img);
f=m;
c=n;
for i=1:m
    for j=1:n
         if???????  no se que colocar aqui
 
         end
     end
end
 
subplot(3,1,3),imshow(???????));title('Saturacion');

Ayuda plis!!
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

Como encontrar los pixeles saturados en una imagen??

Publicado por Joaquín (50 intervenciones) el 30/05/2014 17:27:25
Hola, a que te refieres con saturados? A que esos pixeles son los predominantes en la imagen? Si es así el histograma lo muestra...

Supón que tienes la imagen en escala de grises, para matlab son 256 tonos, osea de 0 a 255, siendo el valor 0 negro y el 255 blanco.

Si obtienes el histograma de una imagen en esta escala de grises, lo que obtendrás será un vector con 256 columnas y una fila, y cada valor del vector indicará CUANTOS pixeles de esa ubicación están presentes con el mismo valor en la imagen.

Supón que tienes una imagen completamente negra, y obtienes su histograma, obtendrás un vector el cual su primer posición (que representa la 0) tendrá como valor tantos pixeles como tenga la imagen, y todos los demás valores del vector serán 0. De esta manera la suma total de los valor del histograma, es igual a la cantidad de pixeles de la imagen

Ahora bien, quieres UBICAR o resaltar los pixeles saturados? Si tu histograma tiene un valor dominante o un máximo, quiere decir que todos los pixeles están en ese valor. Puedes sacar el máximo del histograma, ubicas su coordenada Y, o su columna, y en tu condicionante IF colocas si el pixel de tu imagen es igual a la # de columa (-1, por que las coordenadas no empiezan en 0, sino en 1) de tu pixel máximo en el histograma, sí son iguales, pues puedes crear otra matriz, donde los pixeles deseados los mantengas IGUAL, y los demás pixeles los mandes a negros o blancos, y tu imagen contendrá solo los pixeles deseados.

Espero haberte ayudado.

Si conociera mejor tu objetivo te podría ayudar de mejor manera

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

Como encontrar los pixeles saturados en una imagen??

Publicado por Montse Goja (5 intervenciones) el 30/05/2014 23:01:30
Hola Joaquín muchas gracias por tus comentarios, como mencionas lo que yo quiero hacer es resaltar los pixeles que están saturados en un imagen que esta a escala de grises, es decir, en el script que estoy tratando de crear debe mostrar la imagen original, el histograma correspondiente y una tercer imagen donde se puedan observar aquellos pixeles saturados y los demás pixeles estén en otro color, como por ejemplo negro. Te agradeceria mucho si me ayudas a entender como puedo crear esa otra matriz con los pixeles saturados.

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

Como encontrar los pixeles saturados en una imagen??

Publicado por Joaquín (50 intervenciones) el 30/05/2014 23:51:03
Pues algo así mas o menos...

El programa DEJA EN SU RESPECTIVA ESCALA DE GRIS, LOS PIXELES QUE MAYOR FRECUENCIA O CANTIDAD HAY EN LA IMAGEN.... los demás los manda a negro o blanco (lo que esté mas lejos del valor del pixel a mantener)

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
%Pixeles Saturados
 
A=imread('C:\Users\Public\Pictures\Sample Pictures\Jellyfish.jpg');
A2=rgb2gray(A);
[i j]=size(A2);
 
A3=A2;
 
histograma=imhist(A2);
maximo=max(histograma);
[n m]=find(histograma==maximo);
 
pixel=n-1;
blanco=255-pixel;
mapa=0;
if blanco>pixel
    mapa=255;
end
 
 
for j=1:j
    for i=1:i
        if A2(i,j)==pixel
            A3(i,j)=A2(i,j);
        else
            A3(i,j)=mapa;
        end
    end
end

No sé si es lo mismo de tu interés....

A eso yo entiendo como pixeles saturados....

Pixel saturado= el valor de pixel con mayor frecuencia en la imagen (en escala de gris).


Ahora el programa SOLO ESCOGE UN VALOR... el maximo, puedes hacer que sean varios valores, y tendrás mayor cantidad de imagen presente...

Puedes hacer que los 10 tonos MAS predominantes sean los que quieres mostrar y as{i al final tendrás mayor cantidad de imagen visible al final

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

Como encontrar los pixeles saturados en una imagen??

Publicado por Montse Goja (5 intervenciones) el 31/05/2014 06:36:29
Muchas gracias por tu ayuda, con tu explicación ya puede completar mi script, 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