¿Cómo seleccionar los pixeles de un objeto con MATLAB?

Hace unos dias recibi un correo de un lector que queria obtener los valores de los pixeles en RGB de la figura que se muestra a la derecha. El planteamiento del problema, si no me equivoco, es el siguiente. Se obtiene este tipo de imagen a traves de un objeto que ejerce una presion sobre una pelicula especial. Las distintas tonalidades de colores que se obtienen expresan diferentes cantidades de presion. La empresa que produce este tipo de peliculas, tiene su tabla de conversion. En fin, para obtener una buena medicion de esta imagen se requiere de un algoritmo que sea capaz de identificar el objeto y de tomar las coordenadas de cada uno de los pixeles que conforman a este objeto, para que el usuario pueda accesar cada uno de ellos y leer los valores o modificar lo que sea necesario, segun el problema que se tenga en las manos.

Pendiente....
En estos dias pongo el archivo M. Por lo pronto aqui cuentan con el contenido del mismo.

Solucion en Matlab


function [row,col]=Density()
ID_RGB=imread('C:\Users\moises\Desktop\6kN.bmp');
ID=ID_RGB;
ID_hsv=rgb2hsv(ID);
height=size(ID,1);
width=size(ID,2);
for r=1:height
for c=1:width

if(ID_hsv(r,c,2)>.05)&&((ID_hsv(r,c,1)>.6)||((ID_hsv(r,c,1)<.1)))
ID(r,c,1)=0;
ID(r,c,2)=0;
ID(r,c,3)=0;
else
ID(r,c,1)=255;
ID(r,c,2)=255;
ID(r,c,3)=255;
end

end
end

image=im2bw(ID,0.5);
[imlabels, numObjects]=bwlabel(image, 8);
graindata=regionprops(imlabels,'basic');
objects=size(graindata,1);

for i=1:objects
if(graindata(i).Area>50000)
label = i;
i=objects;
end
end
[row, col] = find(bwlabel(imlabels)==label);


Saludos,

Moi.

Dudas, quejas, moises.pacheco@gmail.com