How to encode characters of my text message into bytes of an image (Byte Watermarking)

2 views (last 30 days)
Hello everyone!
I want to write a code to watermark my image using Byte Watermarking by which I encode each character of my text string into a single byte of my image.
I would be appreciative if anyone can help me.

Answers (1)

Sameer
Sameer on 17 Sep 2024
Edited: Sameer on 17 Sep 2024
Hi
From my understanding, you want to embed a text string into an image by encoding each character of the text into a single byte of the image.
The idea is to replace the least significant byte of the image's pixel data with the "ASCII" values of the characters in the given text. This method allows embedding text into an image without significantly altering its appearance.
Here's how you can implement it:
function watermarked_image = byte_watermarking(original_image, text)
% Read the original image
img = imread(original_image);
% Convert the image to grayscale if it is not already
if size(img, 3) == 3
img = rgb2gray(img);
end
% Convert the text to its ASCII values
ascii_values = uint8(text);
% Ensure the image is large enough to hold the text
[rows, cols] = size(img);
if length(ascii_values) > rows * cols
error('Text is too long to be encoded in the image.');
end
% Flatten the image matrix to a vector for easier processing
img_vector = img(:);
% Embed the ASCII values into the image
img_vector(1:length(ascii_values)) = ascii_values;
% Reshape the vector back to the original image size
watermarked_image = reshape(img_vector, [rows, cols]);
% Display the watermarked image
imshow(watermarked_image);
title('Watermarked Image');
% save the image
imwrite(watermarked_image, 'watermarked_image.png');
end
Hope this helps!

Products


Release

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!