reversible contrast mapping based watermarking on dicom image

1 次查看(过去 30 天)
i have written a code for watermarking on a dicom image based on reversible contrast mapping algorithm.
trouble shooted many times but didnt get the correct embedding and extraction. kindly help me to correct the same. the code is as follows
clc;
%code for separating the ROI and RONI of a DCM file
clear all;
close all;
[RONI,MAP]=dicomread('189.dcm');
InputImg1 = uint8(255*mat2gray(RONI));
% Display the Image
figure,imshow(InputImg1,[]);title('Select the region of interest(ROI)');
% Get Inputs from Mouse,Select 4 Seed Points in Image
[Col Row]=ginput(4);
c =Col;
r =Row;
% Select polygonal region of interest
BinaryMask = roipoly(InputImg1,c,r);
%figure,imshow(BinaryMask,[]); title('Selected Region of Interest')
%Create Buffer for ROI
ROI=zeros(512,512);
%Create Buffer for NONROI
RONI=zeros(512,512);
for i=1:512
for j=1:512
if BinaryMask(i,j)==1
ROI(i,j)=InputImg1(i,j);
else
RONI(i,j)=InputImg1(i,j);
end
end
end
%Display ROI and Non ROI
figure,imshow(ROI,[]);title('ROI');
impixelinfo
figure,imshow(RONI,[]);title('NON ROI');
img=uint8(ROI);
%img=imread('cameraman.tif');
%figure,imshow(img);
impixelinfo
%grouping the pixel pairs
[rows,cols]=size(img);
x1=img(:);
x2=buffer(x1,2);
pixels=x2';
p=pixels;
[row1,cols1]=size(pixels);
%watermark bit generation
wm=randsrc(row1,1,[0 1]);
for i=1:length(pixels)
if (0<(2*pixels(i,1)-pixels(i,2)<=511)&& (bitget(pixels(i,1),1)==0)) && (0<(2*pixels(i,2)-pixels(i,1)<=511)&& (bitget(pixels(i,2),1)==0))
a=pixels(i,1);
b=pixels(i,2);
pixels(i,1)=2*a-b;
c(i,1)=2*a-b;
pixels(i,2)=2*b-a;
c(i,2)=2*b-a;
pixels(i,1)=bitset(pixels(i,1),1,1);
pixels(i,2)=bitset(pixels(i,1),1,wm(i));
wmnew(i)=wm(i);
else if (0<(2*pixels(i,1)-pixels(i,2)<=511)&& (bitget(pixels(i,1),1)==1)) && (0<(2*pixels(i,2)-pixels(i,1)<=511)&& (bitget(pixels(i,2),1)==1))
pixels(i,1)=bitset(pixels(i,1),1,0);
pixels(i,2)=bitset(pixels(i,1),1,wm(i));
wmnew(i)=wm(i);
else
pixels(i,1)=bitset(pixels(i,1),1,0);
wmnew(i)=bitget(pixels(i,2),1);
end
end
end
x3=pixels';
x4=x3(:);
x5=buffer(x4,512);
figure,imshow(x5)
title('embedded image');
impixelinfo
%1.grouping the pixel pairs
[rows,cols]=size(img);
y1=x5(:);
y2=buffer(y1,2);
expixels=y2';
for i=1:length(expixels)
if (bitget(expixels(i,1),1)==1)
extractedwm(i)=bitget(expixels(i,2),1);
expixels(i,1)=bitset(expixels(i,1),1,0);
expixels(i,2)=bitset(expixels(i,2),1,0);
expixels(i,1)=ceil(((2*expixels(i,1))+expixels(i,2))/3);
expixels(i,2)=ceil(((2*expixels(i,2))+expixels(i,1))/3);
else
if (bitget(expixels(i,1),1)==1) && (0<(2*expixels(i,1))-expixels(i,2)<+ 511 && 0<(2*expixels(i,2))-expixels(i,1) <=511)
expixels(i,1)=bitset(expixels(i,1),1,1);
expixels(i,2)=bitset(expixels(i,2),1,1);
else
expixels(i,1)=bitset(expixels(i,1),1,wmnew(i));
end
end
end
y3=expixels';
y4=y3(:);
y5=buffer(y4,512);
figure,imshow(y5)
title('extracted image');
impixelinfo
  2 个评论
Sivakumaran Chandrasekaran
you are not getting extraction part or embedded part? please mail us to siva@photontech.net . we will assist you
uthara ravi
uthara ravi 2016-1-13
didnt get the extraction part.and i hav no idea whether the embedded part is correct or not.

请先登录,再进行评论。

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Neuroimaging 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by