Frage

new_img = convert(img, text);
(img, text) = convert_back(new_img);

Kann jemand zeigen, mit einem eingebauten Bild von MATALB?

War es hilfreich?

Lösung

Ich glaube, Sie suchen Steganographie . Sie können mit dieser MATLAB Implementierung von LSB Steganographie starten.

Ein einfacher Weg, LSB Steganographie zu tun, ist ein lossless-komprimiertes Bild zu nehmen und das LSB von jeder Komponente (R, G, B) einzustellen. Dann gilt für eine m x n Bild, das Sie bekommen 3mn Bits zu speichern Informationen in. Da Sie die LSB sind modifiziert, wird der Unterschied nicht sein wahrnehmbar im Bild.

Aktualisieren

SO ich Code entschied sich für einen kleinen, ineffizienten, aber anschauliches Beispiel:

function LSBStega    
        %%// Image and text
        I = imread('coins.png');
        text = 'Hello World etc';
        assert(numel(I) > numel(text)*8,'Insufficient number of pixels');

        %%// Encode
        %// The end character signifies the end of the hidden text
        end_char = '.';
        %// Append it
        text = [text end_char];
        %// Convert each character into binary form with atleast 8 bits
        %// We transpose it before calling (:) since the binary representation
        %// is stores each character in binary per row and the (:) operations
        %// vectorizes the matrix by column.
        b = transpose(dec2bin(text,8));
        %// Find which bits should be set to 1 or 0
        ind_0 = find(b == '0');
        ind_1 = find(b == '1');
        %// Set the appropriate bits to 1 and 0 and leave the rest alone
        I(ind_0) = bitset(I(ind_0),1,0);
        I(ind_1) = bitset(I(ind_1),1,1);

        %%// Faster decode
        text_back = [];        
        for i = 1:8:numel(I)
            %// Extract the LSB from a set of 8 bytes in the image
            C = bitget(I(i:i+7),1);
            %// Convert from binary to decimal
            C = bin2dec(num2str(C));
            %// Check if it's the end character; break if so, store if not
            if(C == end_char) 
                break;
            else
                text_back(end+1) = C;
            end
        end
        %// Convert to text
        text_back = char(text_back);

        %%// Display
        subplot(1,2,1);
        title('Original');
        imshow(imread('coins.png'));
        subplot(1,2,2);
        title('Steganography Result');
        imshow(I);
        disp(text_back);    
end
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top