Matlab - Creacion de apertura circular

 
Vista:

Creacion de apertura circular

Publicado por Paco (7 intervenciones) el 02/06/2005 01:02:05
Hola, tengo una nueva duda en el desarrollo de mi GUI. A ver si consigo explicarme:

Quiero generar una imagen de 256x256 pixels con una apertura circular de diametro variable en su interior. La apertura vendra representada con el pixel=1 y el resto (exterior del circulo) con el pixel=0. Se trata de simular una "cartulina" sobre la cual aplicamos luz. Por la parte de la apertura (unos), pasa la luz y por el resto (ceros) no pasa.

La apertura estará centrada en el centro de la figura de 256x256 y con esto podremos ver el efecto de la luz sobre esta figura dependiendo del radio de la apertura. Para aclarar las cosas os pongo como sería una apertura cuadrada en una figura de 12x20:

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0
0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0
0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0
0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0
0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0
0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Pues algo parececido quiero, solo que la figura sea de 256x256 y la apertura de unos sea circular.

Si alguien conoce como solucionar esto me haría un gran favor. Un saludo.
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:Creacion de apertura circular

Publicado por oloranube (10 intervenciones) el 02/06/2005 16:14:43
A ver si te funciona esto:

%%%%%%%%%%%%%%%%%%%%%%%%%%%

function a = apertura(n,d)

mj=repmat(1:n,n,1);
mi=mj';

centro = (n+1)/2;

distanciasCentro = sqrt( (mi-centro).^2 + (mj-centro).^2 );

a = distanciasCentro <= (d/2);

%%%%%%%%%%%%%%%%%%%%%%%%%%%

Explicación:

La función recibe dos parámetros 'n' y 'd'. 'n' es el tamaño de la imagen y 'd' el diámetro del círculo. Si le pasas n=256 y d=256 te devuelve una imagen 256x256 con un círculo inscrito en la imagen cuadrada.

'mj' es una matriz de tamaño n x n cuyos elementos toman el valor de la columna que ocupan.

'mi' es una matriz de tamaño n x n cuyos elementos toman el valor de la fila que ocupan.

'centro' se refiere a la coordena del centro de la imagen.

'distanciasCentro' es una matriz de tamaño n x n en la que sus elementos toman el valor de su distancia al centro.

'a' es la apertura, como tu la llamas. Matriz nxn cuyos elementos son 1 si su distancia al centro es menor o igual al radio ( d/2); es decir, si se encuentran dentro de la circunferencia.

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