Размещено на http://www.allbest.ru Введение На сегодняшний день изображения занимают значительное место в обмене информацией. В связи с необходимостью защиты авторских прав данных файлов и другой мультимедийной информации были разработаны цифровые водяные знаки (watermarks). Цифровой водяной знак должен отвечать следующим требованиям: – незаметность для пользователей; – индивидуальность алгоритма нанесения; – возможность для автора обнаружить несанкционированное использование файла; – невозможность удаления неуполномоченными лицами; – устойчивость к изменениям носителя-контейнера (к изменению его формата и размеров, к масштабированию, сжатию, повороту, фильтрации, введению спецэффектов, монтажу, аналоговым и цифровым преобразованиям). Поиск алгоритма создания цифрового водяного знака в большей степени отвечающего всем предложенным критериям является первоочередной задачей инженеров для защиты авторских прав в сети Интернет. Целью данной работы является рассмотрение метода внедрение цифрового водяного знака в изображение, путём деления ЦВЗ и изображения на равное количество частей, и встраивания в каждую часть изображения соответствующей части ЦВЗ. Размещено на http://www.allbest.ru 1. Алгоритм внедрения цифрового водяного знака Рис. 1 Изображение Цифровой водяной знак Сегментация Инициализация интенсивности пикселей Выбор параметра α Устанавливается взаимнооднозначное соответствие между пикселями водяного знака и блоками изображения Оператор-встраивания Объединение блоков в маркированное изображение Ключ Размещено на http://www.allbest.ru 2. Инициализация начальных параметров 2.1 Изображение Изображение, в которое будет встраиваться цифровой водяной знак, представим как , с размерами MxN. I= (1) – пиксели изображения; горизонтали; – положение пикселя по – положение пикселя по вертикали; – ширина и высота изображения в пикселях соответственно; 2.2 Цифровой водяной знак В качестве цифрового водяного знака возьмём изображение, c размерами KxL: (2) – пиксели изображения; – положение пикселя по горизонтали; – положение пикселя по вертикали; – ширина и высота водяного знака в пикселях соответственно; 2.3 Параметры необходимые знать для внедрения водяного знака: – интенсивность пикселя водяного знака; определяющая степень (силу) встраивания водяного знака. – константа, Размещено на http://www.allbest.ru 3. Внедрение цифрового знака в изображение Разбиение изображения на блоки, количество которых равно количеству пикселей водяного знака. При разбиении изображения получается KL блоков с размерами U = M/K, V = N/ L. Устанавливается взаимно-однозначное соответствие между пикселями водяного знака и полученными блоками, используя ключ. Встраивание пикселя водяного знака в блок изображения. Рассмотрим случай, когда K = L = 1, т.е. изображение состоит из одного блока, а водяной знак состоит из одного пикселя с интенсивностью b11. Пусть M,N > 1, тогда имеем некоторую избыточную возможность помещения водяного знака в пиксели изображения, и при разумном подборе оператора встраивания можно повысить устойчивость всей процедуры защиты информации в целом. Предлагается оператор встраивания, основанный на следующей формуле: Iw(m,n) = (1-б) * I(m,n) + бb11 (3) Iw(m,n) – маркированное изображение; b11 – интенсивность пикселя водяного знака; I(m,n) – исходное изображение; α > 0 – константа, определяющая степень (силу) встраивания водяного знака; Выбор параметра б. При отсутствии случайных атак, степень (среднеквадратического) искажения изображения определяется по формуле: вследствие встраивания водяного знака Размещено на http://www.allbest.ru (4) (5) MSE2 – степень искажения изображения; α > 0 – константа, определяющая степень (силу) встраивания водяного знака; высота водяного знака в пикселях соответственно; – ширина и – ширина и высота изображения в пикселях соответственно; µ - средняя интенсивность пикселей изображения; – интенсивность пикселей водяного знака; что показывает степень искажений, вносимых самой процедурой встраивания водяного знака. Выражение (4) позволяет ещё до встраивания водяного знака определить степень ожидаемых искажений и контролировать ее путем надлежащего выбора параметра б. Объединение блоков в маркированное изображение. Размещено на http://www.allbest.ru 4. Алгоритм извлечения цифрового водяного знака из изображения Используя ключ, определяем взаимнооднозначное соответствие между байтами водяного знака и блоками изображения. Разбиваем изображение на блоки. Извлечение ЦВЗ из блока в отсутствии каких-либо атак производится по формуле: (6) где: (7) b11 – интенсивность пикселя водяного знака; µ - средняя интенсивность пикселей изображения; α > 0 – константа, определяющая степень (силу) встраивания водяного знака; – ширина и высота водяного знака в пикселях соответственно; – ширина и высота изображения в пикселях соответственно. Задача извлечения ЦВЗ сводится к оцениванию параметра b11 по выборке: Iw(m,n) = (1-б) * I(m,n) + бb11. цифровой байт несанкционированный Восстанавливаем водяной знак. Восстанавливаем исходное изображение. Размещено на http://www.allbest.ru 5. Алгоритм извлечения водяного знака из изображения, подверженного атаке Аддитивная модель изменения значений пикселей после атаки: (8) Предполагается, накладываются на что значения пикселы x(m,n) независимо случайной и с величины одинаковой X функцией распределения. Тогда: (9) и задача извлечения ЦВЗ сводится к оцениванию параметра b11 по выборке aw,x(m,n) , m = 0,1,...,M-1; n = 0,1,...,N -1. Можно показать, что оценка наименьших квадратов при этом имеет вид: (10) Если принять, что случайная величина X распределена со средним ноль и с дисперсией , то дисперсия оценки (10) будет равна: (11) Размещено на http://www.allbest.ru Формула (11) характеризует помехоустойчивость предложенного метода встраивания ЦВЗ к атакам со случайными характеристиками. Представляет интерес исследование степени искажения изображения вследствие встраивания в него ЦВЗ и воздействия атаки X. Для этого вычислим среднеквадратическое отклонение интенсивностей пикселов изображений I и Iw,x. Можно показать, что: (12) где: (13) Первое слагаемое выражения (12) является показателем рассеяния интенсивностей пикселов изображения I относительно средней интенсивности. Чем больше этот показатель, тем больше различаются атакованное изображение со встроенным ЦВЗ и изображение-контейнер. Этот факт показывает принципиальное различие предложенного алгоритма от адаптивного алгоритма, в котором высокие значения этого же показателя позволяют более успешно встраивать ЦВЗ. Второе слагаемое в (12) является мерой отклонения интенсивности встраиваемого ЦВЗ от средней интенсивности пикселов изображения. Естественно, большие отклонения приведут к соответственно большим отклонениям между изображениями I и Iw,x . При этом большое значение имеет также параметр a. Третье слагаемое показывает непосредственное влияние рассеяния самой случайной величины X на процедуру встраивания. Размещено на http://www.allbest.ru 6. Результаты моделирования и численных расчетов Рассмотрим численные примеры встраивания и извлечения ЦВЗ в изображение и оценивания помехоустойчивости предложенной процедуры. Расчеты удобно проводить в логарифмическом масштабе на основе расчета PSNR. Для эксперимента выбрано изображение маммограммы пациента N, имеющее размеры 256 x 256 пикселов и ЦВЗ с фотографией пациента c размерами 64 x 64. Защита информации состоит во встраивании фотографии пациента в изображение маммограммы. Встраивание ЦВЗ проведено при a = 0,07. Визуальный анализ изображения-оригинала I и изображения со встроенным ЦВЗ W I никаких заметных различий в них не обнаружил. Значение PSNR = 31,6 дБ также свидетельствует о достаточной близости этих изображений по среднеквадратическому критерию. Исследование устойчивости предложенного алгоритма проведено для двух типов атак. 1. Устойчивость к случайным атакам, проявляемым в соответствии с моделью (10) с использованием численного моделирования в предположении, что случайная величина X распределена как для различных значений дисперсии . PSNR (дБ) между изображениями I и Iw,x , извлеченные ЦВЗ и PSNR между встроенным и извлеченным ЦВЗ при различных значениях Размещено на http://www.allbest.ru Таблица 1 В табл. 1 приведены полученные результаты для одной реализации случайной величины X . Видно, что с увеличением ухудшается качество извлеченного ЦВЗ, оставаясь, впрочем, на уровне, достаточном для узнавания образа пациента вплоть до значения =6. Качество же изображения со встроенным ЦВЗ остается в районе 30 дБ, что никак не отражается на диагностической ценности деталей данной маммограммы. 2. Устойчивость к сжатию по стандарту JPEG. В табл. 2 приведены результаты по исследованию устойчивости предложенной процедуры к атакам в виде сжатия при помощи стандарта JPEG для различных значений параметра качества Q. Эксперименты проводились на тех же изображенииконтейнере и ЦВЗ. Выводы, которые можно сделать из данных табл. 2, во многом схожи с выводами, сделанными относительно табл. 1. Отметим, однако, неожиданно высокую устойчивость предложенной процедуры к достаточно сильному сжатию изображений: ведь при параметре качества, равном всего 40, размер сжатого JPEG-файла для рассматриваемого изображения составляет около 6% от исходного при сохранении качества на уровне около 31 дБ и вполне различимом образе пациента по извлеченному ЦВЗ. PSNR (дБ) между изображениями I и I(w,x) , извлеченные ЦВЗ и PSNR между встроенным и извлеченным ЦВЗ при различных значениях параметра качества Q. Размещено на http://www.allbest.ru Таблица 2 Размещено на http://www.allbest.ru 7. Пример реализации алгоритма в среде Matlab Исходный код программы в приложении А В данном алгоритме мы производим операции с изображением. Внедряем в исходное изображение водяной знак. Извлекаем из маркированного изображения водяной знак, и рассчитываем качество внедрения (PSNR). PSNR полученного изображения, при выборе коэффициента б = 0.07, составляет 28dB. PSNR извлеченного водяного знака, при коэффициенте б = 0.07, составляет 70dB. Гистограмма оригинального изображения имеет небольшие отличия от гистограммы маркированного изображения (б = 0.07), что говорит о хорошем качестве встраивания, но при б = 0.1, гистограммы сильно различаются. PSNR полученного изображения, при выборе коэффициента б = 0.1, составляет 25dB. PSNR извлеченного водяного знака, при коэффициенте б = 0.1, составляет 73dB. При увеличении коэффициента б, снижается качество маркированного изображение, но повышается качество извлеченного водяного знака. Поэтому перед началом внедрения ЦВЗ в изображение необходимо рассчитать оптимальный коэффициент встраивания б. Размещено на http://www.allbest.ru 8. Пример внедрения водяного знака (qr-кода) в изображение Исходный код программы в приложении B. В данном алгоритме мы производим операции с изображением. Внедряем в исходное изображение qr код. Извлекаем из маркированного изображения водяной знак, и рассчитываем качество внедрения (PSNR). PSNR полученного изображения, при выборе коэффициента б = 0.07, составляет 28dB. PSNR извлеченного водяного знака, при коэффициенте б = 0.07, составляет 277dB. Гистограмма оригинального изображения имеет небольшие отличия от гистограммы маркированного изображения (б = 0.07), что говорит о хорошем качестве встраивания, но при б = 0.1, гистограммы сильно различаются. PSNR полученного изображения, при выборе коэффициента б = 0.1, составляет 26dB. PSNR извлеченного водяного знака, при коэффициенте б = 0.1, составляет 282dB. При увеличении коэффициента б, снижается качество маркированного изображение, но повышается качество извлеченного водяного знака. Поэтому перед началом внедрения ЦВЗ в изображение необходимо рассчитать оптимальный коэффициент встраивания б. Размещено на http://www.allbest.ru Заключение Предложен алгоритм, основанный на встраивании цифровых водяных знаков (ЦВЗ) в пространственную область изображения и извлечения из него ЦВЗ. Получены аналитические выражения для среднеквадратической ошибки, вызываемой процедурой встраивания при наличии случайной атаки, зависящие от характеристик изображений, процедуры встраивания и атаки. Методом моделирования исследовалась устойчивость предложенного алгоритма к случайной атаке, а также к сжатию изображения по стандарту JPEG. Размещено на http://www.allbest.ru Список использованной литературы 1. Cox J., Miller M. L. and Bloom J.A. Digital Watermarking. - Morgan Kaufmann, 2001. 2. Hartung M., Kutter M. Multimedia Watermarking Techniques //Proceedings of the IEEE. – July, 1999. - Vol. 87, № 7. - P. 1079-1086. 3. Anand D., Niranjan U.C. Watermarking Medical Images with Patient Information //Proc. IEEE/EMSB Conference. - Hong Kong, China, Oct. 1998. – P. 703-706. 4. Асатрян Д.Г., Ланина Н.С. Адаптивный алгоритм встраивания цифровых водяных знаков в изображение //Труды научной годичной конференции Российско-Армянского (Славянского) государственного университета. Ереван, 2006. - Т.1. - C. 87-90. 5. Podilchuk C I., Zeng W. Image-adaptive watermarking using visual models //IEEE Journal of Selected Areas in Communication. – 1998. - 16(4). – P. 525– 539. 6. Chang-Hsing Lee, Yeuan-Kuen Lee. An Adaptive Digital Image Watermarking Technique for Copyright Protection // IEEE Transactions on Consumer Electronics. – 1999. - V. 45, № 4. - P. 1005-1015. 7. Asatryan D.G., Lanina N.S., Shahverdyan H.S. Adaptive Robust Algorithm for Digital Watermarking of Medical Images //Proc. of 6th Int. Conf. on Computer Science and Information Technologies - CSIT'2007. - Yerevan, 2007. - P. 161-164. Размещено на http://www.allbest.ru Приложения Приложение А clear; clc img=imread('F:\works\kursa4\lena.png'); img=imresize(img,[512,512]); img=rgb2gray(img); [M,N]=size(img); img=double(img); [Uimg,Simg,Vimg]=svd(img); Simg_temp=Simg; img_wat=imread('F:\works\kursa4\shevel.png'); img_wat=imresize(img_wat,[512,512]); img_wat=rgb2gray(img_wat); alfa= input('The alfa Value = '); [x,y]=size(img_wat); img_wat=double(img_wat); for i=1:x for j=1:y Simg(i,j)=(1-alfa)*Simg(i,j) + alfa * img_wat(i,j); end end % SVD for Simg (SM) [U_SHL_w,S_SHL_w,V_SHL_w]=svd(Simg); Wimg =Uimg* S_SHL_w * Vimg'; figure(1) imhist(uint8(img)); title('Histogramma of original image') Размещено на http://www.allbest.ru figure(2) imshow(uint8(img)); title('The Original Image') figure(3) imshow(uint8(img_wat)); title('The Watermark ') figure(4) imshow(uint8(Wimg)); title('The Watermarked Image') figure(5) imhist(uint8(Wimg)); title('Histogramma of watermarking image') %%%%%%%%%%%%%%%%%%%%%%%%%%% %calculate image quality degradation after inserting watermark %%%%%%%%%%%%%%%%%%%%%%%%%%% mse=mean(squeeze(sum(sum((double(img)-double(Wimg)).2))/(M*N))); PSNR=10*log10(2552./mse); msg=sprintf('\n\n-------------------------\nWatermark by SVD PSNR=%fdB\n----------------------------\n\n', PSNR); disp(msg); %-------------------------------------------------------------------------% %% Extraction Part % ------------------------------------------------------------------------[UWimg,SWimg,VWimg]=svd(Wimg); D_1=U_SHL_w * SWimg * V_SHL_w'; for i=1:x for j=1:y Watermark(i,j)= (D_1(i,j) - Simg_temp(i,j)*(1-alfa))/alfa; end end Размещено на http://www.allbest.ru figure(6) imshow(uint8(Watermark)); title('The Extracted Watermark ') mse=mean(squeeze(sum(sum((double(img_wat)-(Watermark)).2))/(M*N))); PSNR=10*log10(2552./mse); msg=sprintf('\n\n-------------------------\nWatermark by SVD PSNR=%fdB\n----------------------------\n\n', PSNR); Приложение B clear; clc img=imread('F:\works\kursa4\lena.png'); img=imresize(img,[512,512]); img=rgb2gray(img); [M,N]=size(img); img=double(img); [Uimg,Simg,Vimg]=svd(img); Simg_temp=Simg; % read watermark img_wat=imread('F:qrkod.png'); img_wat=imresize(~img_wat,[512,512]); alfa= input('The alfa Value = '); [x,y]=size(img_wat); img_wat=double(img_wat); for i=1:x for j=1:y Simg(i,j)=(1-alfa)*Simg(i,j) + alfa * img_wat(i,j); end end Размещено на http://www.allbest.ru % SVD for Simg (SM) [U_SHL_w,S_SHL_w,V_SHL_w]=svd(Simg); Wimg =Uimg* S_SHL_w * Vimg'; figure(1) imhist(uint8(img)); title('Histogramma of original image') figure(2) imshow(uint8(img)); title('The Original Image') figure(3) imshow(img_wat); title('The Watermark ') figure(4) imshow(uint8(Wimg)); title('The Watermarked Image') figure(5) imhist(uint8(Wimg)); title('Histogramma of watermarking image') %%%%%%%%%%%%%%%%%%%%%%%%%%% %calculate image quality degradation after inserting watermark %%%%%%%%%%%%%%%%%%%%%%%%%%% mse=mean(squeeze(sum(sum((double(img)-double(Wimg)).2))/(M*N))); PSNR=10*log10(2552./mse); msg=sprintf('\n\n-------------------------\nWatermark by SVD PSNR=%fdB\n----------------------------\n\n', PSNR); disp(msg); %-------------------------------------------------------------------------% %% Extraction Part % ------------------------------------------------------------------------[UWimg,SWimg,VWimg]=svd(Wimg); Размещено на http://www.allbest.ru D_1=U_SHL_w * SWimg * V_SHL_w'; for i=1:x for j=1:y Watermark(i,j)= (D_1(i,j) - Simg_temp(i,j)*(1-alfa))/alfa; end end figure(6) imshow(Watermark); title('The Extracted Watermark ') mse=mean(squeeze(sum(sum((double(img_wat)-(Watermark)).2))/(M*N))); PSNR=10*log10(2552./mse); msg=sprintf('\n\n-------------------------\nWatermark by SVD PSNR=%fdB\n----------------------------\n\n', PSNR) Размещено на Allbest.ru