Matlab - Embedded Matlab function

 
Vista:

Embedded Matlab function

Publicado por Roberto (9 intervenciones) el 27/02/2007 04:20:00
Hola amigos bueno es a primera vez que pregunto algo en un foro y decidi hacerlo en este por la seriedad que se ve en las preguntas y respuestas correspondientes.
Bueno la cosa es que deseo colocar este pequeño codigo con sentencias de matlab en un bloque de simulink

imgAdq=getsnapshot(canalVideo);
b=rgb2gray(imgAdq);
result=b>225;
imageR=bwlabel(result,8);
s=imfeature(imageR,'Centroid')

Lo que hace es adquirir una imagen de un plano negro donde se mueve una bola blanca, encontrando el centroide de la bola sobre el plano.
Probe con el Embedded Matlab Function pero me tira errores con :

b --->Expected a numeric value. Found a mxArray........
result , imageR--------->Undefined function or variable 'result'.
The first assignment to a local variable determines its class. Inputs, Outputs, and and parameters inherit their class from the model explorer.

Bueno si alguien puede ayudarme con esta funcion o alguna forma de hacerlo con otro bloque seria fenomenal.
Desde ya muchas gracias atentamente
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
sin imagen de perfil

RE:Embedded Matlab function

Publicado por Raúl Santiago (211 intervenciones) el 27/02/2007 10:16:25
Hazlo primero fuera de simulink, en un .m. y luego lo pones como funcion, un embebido en simulink es igual a una función .m solo que se escribe dentro de ese bloque.

Lo que te esta pasando es que result no está definida, ya qeu b es una matriz y lo estás comparando con un numero, esto no tiene sentido. y luego le estas pidiendo que etiquete, pero que vas a etiquetar si no tienes que etiquetar. Haz la comparación pixel a pixel y ahi si puedes tratar de qeu funcione
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
sin imagen de perfil

RE:Embedded Matlab function

Publicado por Raúl Santiago (211 intervenciones) el 27/02/2007 10:16:25
Hazlo primero fuera de simulink, en un .m. y luego lo pones como funcion, un embebido en simulink es igual a una función .m solo que se escribe dentro de ese bloque.

Lo que te esta pasando es que result no está definida, ya qeu b es una matriz y lo estás comparando con un numero, esto no tiene sentido. y luego le estas pidiendo que etiquete, pero que vas a etiquetar si no tienes que etiquetar. Haz la comparación pixel a pixel y ahi si puedes tratar de qeu funcione
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:Embedded Matlab function

Publicado por Roberto (9 intervenciones) el 27/02/2007 13:48:24
Gracias por responder Raúl, pero dicho programa lo he probado antes en matlab y ha respondido como debia, la cosa es que en el embedded me trae estos errores.
Con respecto a "result=b>225;" esta es la forma mas común de generar imágenes binarias mediante la utilización del valor umbral de una imagen a escala de grises(b).
A mi entender todo el problema lo trae "b". Al parecer no se representa por una matriz quizas deba definirla como tal. Si alguien sabe como hacerlo le estare muy agradecido.
Ademas si alguien da otra solucion a como hacer este bloque no habria problema ya que solo necesito meter esta funcion en un bloque para simular en simulink.
De antemano 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
sin imagen de perfil

RE:Embedded Matlab function

Publicado por Raúl Santiago (211 intervenciones) el 28/02/2007 13:58:02
Hay otra manera, en si es lo mismo pero esta el bloque: "matlab function", hay llamas el punto .m
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