tengo un problema en la conversión de una matriz de tipo double a la imagen.iam usando imwrite para esto, pero cada vez, el error es demasiado muchos de los argumentos de entrada. la matriz tiene valores de 0 a 255, pero el tipo es doble. he utilizado imread para abrir la imagen, luego se convierte a binario y, a continuación, utilizar el comando doble y trató de convertir de nuevo en la imagen. necesito la forma binaria en mi fyp y, a continuación, volver a convertir la imagen. ¿cómo es posible?
si alguien tiene una solución, la amabilidad de ayudarme.
gracias!

InformationsquelleAutor user1398405 | 2012-05-16

3 Comentarios

  1. 1

    Utilizar este código:

    I = imread('test.jpg');
    b = dec2bin(I); % b becomes vector
    % some actions with binary vector
    du = bin2dec(b);
    du = reshape(du,size(I)); % converting vector du to 3d Image array 
    imwrite(uint8(du), 'du.jpg'); %save our du to file du.jpg
    
    I = imread('du.jpg'); %test if it saved correctly
    imshow(du) 
    • Muchas gracias. realmente me ayudó. La única cosa que cambió fue el último comando.Si yo uso imshow(du), da una imagen en blanco debido a que du es de tipo char,por lo que he usado G = imread(‘du.jpg’); imshow(G). da una imagen precisa.
  2. 2

    Puede utilizar im2double para convertir de uint8 valores a double valores. Por la inversa, puede utilizar im2uint8.

    • necesito hacer la inversa de doble imagen.
    • He modificado la respuesta en consecuencia.
    • Necesito convertir de un tipo de datos de imagen, no de la imagen a la doble o unint8. cuando leí la imagen utilizando imread, me sale el tipo de unint8 pero necesito volver a convertir a imagen de doble.
    • Lamentablemente, eso es bastante confuso de entender para mí. Podría dar un par de líneas de código de ejemplo en tu pregunta?
    • info=imfinfo(‘map.jpg’) I=imread(‘map.jpg’); b=dec2bin(I); du=doble(b); a=imwrite(‘du.jpg’) imshow(a) Ahora se da el error demasiados argumentos de entrada en imwrite. mi proyecto es el audio de la esteganografía, pero quiero incrustar una imagen en el audio.No he trabajado con archivos de imagen, así como un principiante no tengo ninguna idea. Voy a ser la incrustación de la forma binaria en mi archivo de audio. en la decodificación final después de la extracción necesito para escribir el archivo de imagen y para que este tipo de datos es necesaria la conversión.
  3. 0

    Si el uso de java para llamar a la función de matlab(java envía byte de la matriz como de la imagen de entrada), en primer lugar convertir la matriz sin signo de 8 bits entero:

    m1 = typecast(arr, 'uint8');

    Después de la entrada como entero sin signo, puede utilizar los valores de píxel RGB en el intervalo (0, 255). Si desea utilizar algún filtro como conv2, debe convertir unsigned matriz de la imagen de doble precisión. que puede ser así:

    m2 = im2double(m1);

    La aplicación de convolución genera una salida de doble precisión(entre 0-1). Después de ese punto, si usted desea conseguir valores sin signo, debe usar:

    m3 = im2uint8(m2);

    Especialmente cuando usted llame a matlab de java, el encasillamiento de entrada de la matriz a uint8 es muy importante, debido a que matlab recibe java matriz de bytes como signed int inicialmente. Resolución que fue muy doloroso, por lo que el seguimiento que la conversión de los pasos pueden ser útiles!

Dejar respuesta

Please enter your comment!
Please enter your name here