watermarking

can anyone please tell me how to code the following algorithm:
1) Select a set of P pixels from I where L is to be embedded, and call p as a watermarking area.
2) Denote the set of pixels corresponding to P in w by Q.
3) For each pixel X with value p in P , denote the corresponding pixel in Q as and the value of the corresponding pixel Y in L as , and conduct the following steps.
a) Apply an estimation technique to derive to be a value close to P , using the values of the neighboring pixels of X(excluding itself).
b) Set b to be the value l.
c) Map p to a new value q=Fb-1(Fa(p).
d) Set the value of Z to be q.
4) Set the value of each remaining pixel in W, which is outside the region P, to be equal to that of the corresponding pixel in I.

6 Comments

Walter Roberson
Walter Roberson on 29 Jan 2012
What is "w" in 2) ? What are Fa and Fb in 3(c) ?
Image Analyst
Image Analyst on 29 Jan 2012
The whole thing is an alphabet soup of random letters. Continuing on, what is (capital) W? What is Z? What is b in step 3b? Why are you changing the values of BOTH the Z image (in step 3d) AND the W image (in step 4)? Are there two output images?
Sneha
Sneha on 29 Jan 2012
w is the watermarked image that i need as output after embedding watermark L on Image I. Fa=(p-a)mod 256 and Fb inverse = Fa(p)+b, where b are the pixel values of watermark image or L(here) |Z is the value,that is denoted to the region of image after the transformation,like d watermaked area. and no there are no 2 outputs..
Image Analyst
Image Analyst on 29 Jan 2012
Doesn't look like it should be that hard at all. Did you try anything at all? Let's see your code/homework answer. I can give you a masking demo if you want, but you should be able to do the simple image arithmetic yourself, shouldn't you?
Sneha
Sneha on 30 Jan 2012
Actually im new to matlab,so still in the process of learning it.It will be really helpful if u can provide me the masking demo of the code.
Image Analyst
Image Analyst on 30 Jan 2012
See demo below.

Sign in to comment.

Answers (2)

Image Analyst
Image Analyst on 29 Jan 2012
Are you looking for help as to how to select the area? How about rbbox, roipoly, roipolyold, imfreehand, imrect, or imellipse? Get a binary image representing the region you drew, then say
I(binaryImage) = I(binaryImage) - L(binaryImage);
if I'm interpreting your "q" formula correctly, or something like that.
Image Analyst
Image Analyst on 30 Jan 2012
% Demo to have the user freehand draw an irregular shape over
% a gray scale image, have it extract only that part to a new image,
% and to calculate the mean intensity value of the image within that shape.
% By ImageAnalyst
%
% Change the current folder to the folder of this m-file.
if(~isdeployed)
cd(fileparts(which(mfilename)));
end
clc; % Clear command window.
clear; % Delete all variables.
close all; % Close all figure windows except those created by imtool.
imtool close all; % Close all figure windows created by imtool.
workspace; % Make sure the workspace panel is showing.
fontSize = 16;
% Read in standard MATLAB gray scale demo image.
grayImage = imread('cameraman.tif');
subplot(2, 3, 1);
imshow(grayImage, []);
title('Original Grayscale Image', 'FontSize', fontSize);
set(gcf, 'Position', get(0,'Screensize')); % Maximize figure.
message = sprintf('Left click and hold to begin drawing.\nSimply lift the mouse button to finish');
uiwait(msgbox(message));
hFH = imfreehand();
% Create a binary image ("mask") from the ROI object.
binaryImage = hFH.createMask();
% Display the freehand mask.
subplot(2, 3, 2);
imshow(binaryImage);
title('Binary mask of the region', 'FontSize', fontSize);
% Calculate the area, in pixels, that they drew.
numberOfPixels1 = sum(binaryImage(:))
% Another way to calculate it that takes fractional pixels into account.
numberOfPixels2 = bwarea(binaryImage)
% Get coordinates of the boundary of the freehand drawn region.
structBoundaries = bwboundaries(binaryImage);
xy=structBoundaries{1}; % Get n by 2 array of x,y coordinates.
x = xy(:, 2); % Columns.
y = xy(:, 1); % Rows.
subplot(2, 3, 1); % Plot over original image.
hold on; % Don't blow away the image.
plot(x, y, 'LineWidth', 2);
drawnow; % Force it to draw immediately.
% Burn line into image by setting it to 255 wherever the mask is true.
burnedImage = grayImage;
burnedImage(binaryImage) = 255;
% Display the image with the mask "burned in."
subplot(2, 3, 3);
imshow(burnedImage);
caption = sprintf('New image with\nmask burned into image');
title(caption, 'FontSize', fontSize);
% Mask the image and display it.
% Will keep only the part of the image that's inside the mask, zero outside mask.
blackMaskedImage = grayImage;
blackMaskedImage(~binaryImage) = 0;
subplot(2, 3, 4);
imshow(blackMaskedImage);
title('Masked Outside Region', 'FontSize', fontSize);
% Calculate the mean
meanGL = mean(blackMaskedImage(binaryImage));
% Report results.
message = sprintf('Mean value within drawn area = %.3f\nNumber of pixels = %d\nArea in pixels = %.2f', ...
meanGL, numberOfPixels1, numberOfPixels2);
msgbox(message);
% Now do the same but blacken inside the region.
insideMasked = grayImage;
insideMasked(binaryImage) = 0;
subplot(2, 3, 5);
imshow(insideMasked);
title('Masked Inside Region', 'FontSize', fontSize);
% Now crop the image.
topLine = min(x);
bottomLine = max(x);
leftColumn = min(y);
rightColumn = max(y);
width = bottomLine - topLine + 1;
height = rightColumn - leftColumn + 1;
croppedImage = imcrop(blackMaskedImage, [topLine, leftColumn, width, height]);
% Display cropped image.
subplot(2, 3, 6);
imshow(croppedImage);
title('Cropped Image', 'FontSize', fontSize);

Asked:

on 29 Jan 2012

Community Treasure Hunt

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

Start Hunting!