Matlab - Crear una imagen en matlab a partir de una original pero destacando algunos elementos con rectángulo

 
Vista:
sin imagen de perfil

Crear una imagen en matlab a partir de una original pero destacando algunos elementos con rectángulo

Publicado por esther (2 intervenciones) el 29/11/2015 10:46:54
Buenas, estoy haciendo un algoritmo en matlab que me recorre una imagen en escala de grises (fondo blanco con manchas negras). He hecho un algoritmo que me divide la imagen en submatrices del mismo tamaño para poder ir recorriendo la imagen. En cada subimagen, debemos de calcular la cantidad de elementos negros que hay y además quedarnos con el elemento de mayor área. Esto se cómo lo puedo hacer mediante la función regionprops. El problema está en que finalmente tengo que crear una imagen que sea igual a la original, pero destacando con rectángulos los elementos negros de mayor área que seleccioné en las subimágenes.
He probado con la función rectangle, pero no sé como costruir la nueva imagen a partir de la original.
Por favor si me pueden ayudar se lo agradecería muchísimo.
Gracias y 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
Imágen de perfil de Royeth
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Crear una imagen en matlab a partir de una original pero destacando algunos elementos con rectángulo

Publicado por Royeth (1818 intervenciones) el 30/11/2015 01:24:59
para esto debes usar horzcat y vertcat y así de esta manera puedes unir tu imágen si es que has guardado en otras variables las subimágenes porque de lo contrario la imágen anterior sufrirá los cambios que le hagas y no es necesario crear la nueva imágen pues ya la vas a tener modificada .. , es decir que si la recorres por ciclos y no guardas en ninguna variable adicional es para que las funciones que emplees las guardes en otra variable o coloques el for de tal manera que afecte directamente a la imágen , si qieres adjunta el código y puedo instruirte en ese aspecto y siendo así no sería necesario usar horzcat ni vertcat


saludos
https://www.facebook.com/royethmatlab/
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

Crear una imagen en matlab a partir de una original pero destacando algunos elementos con rectángulo

Publicado por esther (2 intervenciones) el 01/12/2015 23:58:29
Mira el codigo es el siguiente:

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
%EL objetivo es que el algoritmo lea la imagen de dimensiones (201,300), la
%divida en tres subimagenes d edimensiones(67,100), y calcule el numero de
%elementos en negro de la subimagen, calcular el area de dichos elementos,
%y quedarse con el elemento/objeto de mayor area. Una vez hecho esto, si
%se cumple la condicion de que el area del objeto elegido es mayor que la
%cuarta parte de la dimension de la subimagen, dicha subimagen cumplira la
%condicion estrella, y nuestro programa (que nos da como salida la imagen
%original ) además deberá de destacar dicha subimagen (pues cumplía la
%condición como se vio), y así con las demas subimagenes.
 
%Leer la imagen
I=imread('pruebas.jpg');
 
%pasarla a grises
Im=rgb2gray(I);
 
%dividirla en subimagenes (en este caso la dividiremos en 3 subimangenes de
%tamaños x1,y1
x1=67;
y1=100;
ancho=1; %variable intermedia
for i=1:3
    largo=1;%variable intermedia
    for k=1:3
        A=Im(largo:x1+largo-1,ancho:y1+ancho-1);
        [Et,Nelem]=bwlabel(B,8);
        b=regionprops(Et,'Area','BoundingBox');
         for i=1:Nelem
            for j=1:4
              limit(i,j)=b(i).BoundingBox(j);
            end
         end
        %Calculo area de calda elemento
        for g=1:Nelem
           area(g)=abs(limit(g,1)-limit(g,3))*abs(limit(g,2)-limit(g,4));
        end
 
        %Me quedo con la zona de mayor area
        max_area=area(1);
        if(Area_tejido>= (x1*y1)/4)
            %Deberemos de señalar dicha subimagen en la imagen inicila con
            %un rectángulo, de manera que el programa nos de como salida la
            %imagen original con los rectangulos de las subimagenes que si
            %cumplen dicha condiciom
        end
 
        largo=largo+x1;
 
    end
    ciclo=ciclo+y1;
end
 
 
%Gracias y un saludo
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