Me ha importado una imagen en matlab y antes de que me muestre cómo puedo hacer que el fondo de la imagen sea transparente? Por ejemplo yo tengo una bola roja en un fondo blanco, ¿cómo puedo hacer que el blanco de los píxeles de la imagen tranparent de modo que sólo la bola roja es visible y el blanco son los píxeles transparentes?

OriginalEl autor omegaFlame | 2012-04-18

2 Comentarios

  1. 15

    Usted necesita para asegurarse de que la imagen se guarda en la ‘png’ formato. A continuación, puede utilizar el ‘Alfa’ parámetro de un archivo png, que es una matriz que especifica la transparencia de cada píxel de forma individual. Es esencialmente una matriz booleana que es 1 si el pixel es transparente, y 0 si no. Esto se puede hacer fácilmente con un bucle for como largo como el color que usted quiere ser transparente es siempre el mismo valor (es decir, 255 para uint8). Si no es siempre el mismo valor, entonces usted podría definir un umbral, o un rango de valores, donde ese píxel transparente.

    Actualización :

    Primera generar el alfa de la matriz por iteración a través de la imagen y, suponiendo que se establece blanco transparente) siempre que el pixel es blanco, configurar el alfa de la matriz en la que los píxeles como 1.

    # X is your image
    [M,N] = size(X);
    # Assign A as zero
    A = zeros(M,N);
    # Iterate through X, to assign A
    for i=1:M
       for j=1:N
          if(X(i,j) == 255)   # Assuming uint8, 255 would be white
             A(i,j) = 1;      # Assign 1 to transparent color(white)
          end
       end
    end

    A continuación, utilizar este recién creado alfa de la matriz (A) para guardar la imagen como «.png»

    imwrite(X,'your_image.png','Alpha',A);
    Gracias @ademing2. ¿Tienes un breve ejemplo?
    He editado mi respuesta original con un ejemplo.
    Gracias. Pero, la imagen de salida es de 1×1 y 87 bytes. Alguna idea?

    OriginalEl autor Aaron Deming

  2. 11

    Nota para los bucles en MATLAB debe ser evitado a toda costa porque son lentos. La reescritura de código para eliminar los bucles es comúnmente referido como «vectorizar» de código. En el caso de ademing2 la respuesta, se podría hacer de la siguiente manera:

    A = zeros(size(X));
    A(X == 255) = 1;

    OriginalEl autor darda

Dejar respuesta

Please enter your comment!
Please enter your name here