كيف اعمل watermark على الصور الرمادية

السلام عليكم و رحمة الله وبركاته اعضاء المنتدى الكرام

لدي سؤال وهو كيفية عمل صورة مائية بتطبيق DCT و تقسيمها ل 8*8 blocks وتطبيقها على صورة رمادية ومن ثم استخراج هذه العلامة المائية

لدي الخوارزمية لكن اريد اتعلم كيف اعملها بالماتلاب

الخوارزمية :

Embedding Watermark:

1- Step 1: scaling down process of an image, which mean transfer a colored image into gray scale image.
2- Step 2: Block depended on DCT algorithm will takes the basic image and divides it into 8*8 blocks
3- Step 3: makes block address by take row value of basic image then take column value of that image.

4- Step 4 : For the embedding watermark image , with this formula

If binary value of secret image is 0
kx(i,j)=kx(i,j)+32;
If binary value of secret image is 1
kx(i,j)=kx(i,j)-32;
Where, kx= Respected Blocks, i= represents the index of row 1,2, 3… and j= represents the index of column 1,2, 3….

5- Step 5 : find out PSNR value of watermarked image :
PSNR = 20log(max(max(I)))/((MSE)^0.5)
Where MSE = (1/(m
n)) *sum(sum((I-g). ^2))
Where PSNR is referring to Peak Signal to Noise Ratio and MSE is Mean Square Error, I represent the matrix data of our original image, g represents the matrix data of our degraded image in question, m represents the numbers of rows of pixels of the images and n represents the number of columns of pixels of the image.

Extracting Watermark :
1- Step 1: take the watermarked image, finding size of image, and convert into row column matrices.
2- Step 2: Get image block from row and column wise and divide this all block into 8*8 block.
3- Step 3: Extract each block and apply DCT algorithm on each of this blocks.
4- Step 4: Form all column in 32 *32 array and find difference between Blocks.
5- Step 5: If Difference >= 0 then, set watermark block value as 0 and
If Difference < 0 then, set watermark block value as 1

ياليت تعلموني الكود و تشرحوه لي

ولكم جزيل الشكر و العرفان

هذا الموضوع تم مناقشته كثيرا بالمنتدى
يمكنك الاطلاع على المواضيع الاتية وان شاء الله ستكون مفيدة لك

الف شكر استاذ الفاضل على تفاعلك معي

حسنا فهمت ان DCT تعمل على تحويل الصورة المراد عملها كتوثيق الى صورة اخرى , يحولها لباينري 0و1
طيب بالنسبة في الخوارزمية اعلاه ليش حطينا kx(i,j)=kx(i,j)+32; اذا كان الباينري 0 و اذا كان 1 kx(i,j)=kx(i,j)-32;

مالمقصود من هالسطر ؟

ايضاً مالحكمة من استخدام الخطوة الخامسة

العلامة المائية هي التي على هيئة صورة Binary اما الصورة فهي gray image

في البداية يمكنك تحويل الصورة الاصلية الي صورة رمادية gray scale
https://www.mathworks.com/help/matlab/ref/rgb2gray.html

ثم تحويلها الي مصفوفة معاملات باستخدام دالة DCT وبعد التحويل ستكون هناك قيم سالبة وموجبة فى المصفوفة

والان ستقوم بتحويل صورة العلامة المائية الي binary وتمريرها على كل بلوك من مصفوفة المعاملات فاذا كانت القيمة فى صورة العلامة المائية تساوي صفر سيتم اضافة ٣٢ على مصفوفة المعاملات وبالمثل اذا كانت القيمة ١ سيتم طرح ٣٢ وفى النهاية يمكنك تحويل مصفوفة المعاملات الي صورة مرة اخرى وهذه الصورة تحتوي على علامة مائية

والغرض PSNR معرفة الفرق بين الصورة الاصلية والصورة التي تم زرع العلامة المائية بها

وبالعكس اذا اردنا استخراج العلامة المائية من الصورة فسنقوم بتحويل الصورة الاصلية الي معاملات DCT وكذلك صورة العلامة المائية وايجاد الفرق بينهم فاذا كان الفرق موجب فستكون قيمة العلامة المائية صفر واذا كان الفرق سالب فان قيمة العلامة المائية ١ وهكذا

يمكنك ايضا الاطلاع على البحث الاتي
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.519.599&rep=rep1&type=pdf

The watermark should be imperceptible to human observation while the host
image is embedded with secret data. How to get a method to measure the host image imperceptible is important. In this paper we employee the PSNR to indicate the transparency degree. The PSNR describe below

وهذه الصور توضح كيفية استخدام الالجورثيم

يمكنك ايضا الاطلاع على الرابط الاتي

يحتوي على الالجورثيم جاهز يمكنك محاولة فهمه جيدا ومن ثم التطبيق كما هو مطلوب لديك

الف شكر استاذي الفاضل و كتب الله اجرك عملت مثل الكود , والان احاول اعمل مجموعة Attacks عملت كذا واحد لكن عند استخراج العلامة المائية بعد Attack يظهر لي خطأ يفيد بوجود خلل في الدايمنشن عند حالة الاقتصاص ! ايضا compression للصورة لم يضبط معي !؟ هل يوجد كود معين يعمل ذلك

ايضا كيف اعمل مقارنة بين الPSNR للعلامة المائية و بعد استخراج العلامة المائية ؟

هذا هو كودي General.rar (751.2% u)

ملف الكود المرفق لا يعمل

للأسف ليس لدي برنامج الماتلاب حاليا
ان شاء الله سيكون الاخ احمد @DzArticles جزاه الله خيرا قادرا على المساعدة

تقصدون ككود برمجي او تحميل ؟

General_2.rar (785.2% u)

الملف المضغوط خاسر، لا يفتح بعد التحميل

لقد قمت بفتح الملف بدون اي مشاكل
ممكن صورة لرسالة الخطأ ربما يمكننا المساعدة

عفوا …ممكن اعرف العلامة المائية المستخدمة هنا هي visible watermark ولا invisible robust watermark ولا invisible fragile watermark ولا dual watermark

على حسب ما اتذكر غالبا تكون العلامة المائية غير مرئية

ممكن اسم الخوارزمية ومن صاحبها
Embedding Watermark:

1- Step 1: scaling down process of an image, which mean transfer a colored image into gray scale image.
2- Step 2: Block depended on DCT algorithm will takes the basic image and divides it into 8*8 blocks
3- Step 3: makes block address by take row value of basic image then take column value of that image.

4- Step 4 : For the embedding watermark image , with this formula

If binary value of secret image is 0
kx(i,j)=kx(i,j)+32;
If binary value of secret image is 1
kx(i,j)=kx(i,j)-32;
Where, kx= Respected Blocks, i= represents the index of row 1,2, 3… and j= represents the index of column 1,2, 3….

5- Step 5 : find out PSNR value of watermarked image :