مقاله ارائه الگوریتمی به منظور پنهان سازی اطلاعات درون تصویر


در حال بارگذاری
11 سپتامبر 2024
فایل ورد و پاورپوینت
2120
4 بازدید
۷۹,۷۰۰ تومان
خرید

توجه : به همراه فایل word این محصول فایل پاورپوینت (PowerPoint) و اسلاید های آن به صورت هدیه ارائه خواهد شد

  مقاله ارائه الگوریتمی به منظور پنهان سازی اطلاعات درون تصویر دارای ۶ صفحه می باشد و دارای تنظیمات در microsoft word می باشد و آماده پرینت یا چاپ است

فایل ورد مقاله ارائه الگوریتمی به منظور پنهان سازی اطلاعات درون تصویر  کاملا فرمت بندی و تنظیم شده در استاندارد دانشگاه  و مراکز دولتی می باشد.

توجه : در صورت  مشاهده  بهم ریختگی احتمالی در متون زیر ،دلیل ان کپی کردن این مطالب از داخل فایل ورد می باشد و در فایل اصلی مقاله ارائه الگوریتمی به منظور پنهان سازی اطلاعات درون تصویر،به هیچ وجه بهم ریختگی وجود ندارد


بخشی از متن مقاله ارائه الگوریتمی به منظور پنهان سازی اطلاعات درون تصویر :

چکیده :
در دنیای حقیقی و مجازی امروز، هیچ گاه همه چیز آن طور که به نظر می آید نیست. این مسئله در زندگی روزمره ما بارها و بارها اتفاق می افتد. به عنوان مثال تصویری را در نظر بگیرید که در نگاه اول توجه شما را به خود جلب نمی کند درحالی که این تصویر در بطن خود حاوی اطلاعات محرمانه ای است. موضوعی با عنوان پنهان سازی متن درون یک تصویر از سالیان دور در علم برنامه نویسی و پردازش تصویر وجود داشته است. در این مقاله روشی ارائه شده است که قادر است متنی را با توجه به تعداد پیکسل های تصویر اصلی به گونه ای درون آن پنهان سازد که تغییر محسوسی در تصویر اصلی رخ نمی دهد. این روش شامل دو الگوریتم اصلی است که الگوریتم اول را فرستنده اجرا می کند و کار اصلی آن مخفی سازی متن درون تصویر است و گیرنده می تواند با اجرای الگوریتم دوم متن پنهان شده در تصویر را استخراج کند.

کلید واژه: برنامه نویسی، پردازش تصویر، الگوریتم، پیکسل

-۱ مقدمه

موضوعی با عنوان پنهان سازی متن درون یک تصویر از سالیان دور در علم برنامه نویسی و پردازش تصویر وجود داشته است. Steganography، هنر مخفی کردن یک متن در متن دیگر، یکی از هم خانواده های Cryptography یا رمزنگاری است که امروزه بدلیل در خواست صنعت در به جا گذاشتن آثاری در فیلم های ویدئویی و صدا برای اعمال copyright استفاده فراوانی پیدا کرده است. هدف steganography این است که پیغامی را در یک پیغام دیگر به روشی ذخیره کند که دشمن پی به وجود پیغام اول در پیغام دوم نبرد. اولین استفاده های steganography توسط Herodotus یک مورخ یونانی به ثبت رسیده و ماجرای آن به یونان باستان باز می گردد. وقتی حاکم یونان Histiaeus به دست داریوش در شوش در قرن پنجم پیش از میلاد زندانی شده بود می بایست پیغامی مخفیانه به برادر خوانده اش در Miletus بفرستد. برای همین منظور موی سر غلامش را تراشید و پیغامی را روی فرق سرش خال کوبی کرد وقتی موهای غلام به اندازه کافی رشد کرد او را عازم مقصد کرد.[۱]

وقتی نشانه تجاری یا مشخصه ای در یک اثر مانند عکس، ویدئو یا صدا به شکل مخفیانه ذخیره می شود به آن watermarking می گویند که یکی از شاخه های Steganography به حساب می آید. برای این هدف تاکنون

الگوریتم های مختلفی ارائه شده است که نمونه های آن در [۲]،[۳]و [۴] بیان شده است.

روشی که در این مقاله ارائه شده است به منظور پنهان سازی متن درون تصویر به صورت بیتی است برای این منظور دو الگوریتم اصلی ارائه شده است؛ الگوریتم اول که در طرف فرستنده اجرا می شود و متن را درون تصویر مخفی می کند، الگوریتم دوم که در طرف گیرنده بر روی تصویر دریافتی اجرا شده و اطلاعات موجود در آن را استخراج می کند. در الگوریتم فرستنده باید ابتدا کاراکترهای موجود در متن را به شکل باینری آن تبدیل کرده و سپس بیت های موجود در هر کاراکتر را در کم ارزش ترین بیت پیکسل های موجود در تصویر قرار دهیم. مکان اولین پیکسل بستگی به کمترین و بیشترین مقدار شدت پیکسل های موجود در تصویر دارد. بعد از تعیین مکان اولیه، بیت های مربوط به کاراکترها پشت سرهم درون کم ارزش ترین بیت موجود در پیکسل ها (با توجه به مکان اولیه) قرار می گیرد و این فرایند تا آخرین بیت از آخرین کاراکتر ادامه می یابد.

در ادامه طرح اولیه الگوریتم با فرض داشتن تصویری با mn پیکسل و رشته ای از حروف که همان متن مورد نظر ما را تشکیل می دهد و پس از آن الگوریتم های مربوط به طرف فرستنده و طرف گیرنده با جزئیات کامل بیان می شود و سپس نتایج حاصل از پیاده سازی الگوریتم بررسی خواهد شد.

۱

چهاردهمین کنفرانس دانشجویی مهندسی برق ایران دانشگاه صنعتی کرمانشاه، ۱۷ -۱۵ شهریور ۱۳۹۰

-۲ طرح اولیه

در ابتدا فرض کنید تصویری با سایز mn موجود است. می خواهیم متنی را با تعداد مشخصی کاراکتر درون این عکس مخفی کنیم، برای این منظور کاراکترهای موجود در متن را به شکل باینری آن تبدیل کرده در نتیجه به ازای هر کاراکتر تعداد مشخصی ۶) یا (۷ بیت خواهیم داشت. با توجه به روش بیتی برای قرار دادن هر بیت از کاراکتر درون یک پیکسل باید ابتدا مکان اولین پیکسل را تعیین کرد. برای این منظور سطر و ستون L را به عنوان مکان اولین بیت از اولین کاراکتر انتخاب می کنیم که L به شکل زیر بیان می شود:

(۱) /۲] L [
(k r)
در معادله بالا k برابر است با حداکثر مقدار شدت پیکسل
های موجود در تصویر و r برابر است با حداقل مقدار شدت پیکسل های موجود در تصویر. پس از آن بیت دوم از کاراکتر اول در خانه (L,L+1) قرار می گیرد و این عمل تا پایان قرار دادن همه بیت های متن موجود ادامه می یابد. چنانچه در موقعیتی قرار گرفتیم که می بایست بیت بعدی در مکانی بعد از مکان (L,n) قرار بگیرد آنگاه یکی به سطر اضافه می کنیم و ستون را ۱ قرار می دهیم یعنی بیت مورد نظر باید در کم ارزش ترین بیت پیکسل (L+1,1) قرار گیرد.

از آنجایی که تصویر اولیه پس از رمزگذاری متن در آن باید برای گیرنده ارسال شود، گیرنده باید بتواند مکان اولین بیت را تشخیص دهد. درنتیجه، مکان اولین بیت را در جایی از تصویر به صورت رمز شده نگه می داریم تا گیرنده بتواند آن را به راحتی پیدا کند. بدین منظور براساس فرمول زیر یکی از ۳ سطر انتهایی، برای قرار دادن اطلاعات مربوط به متن (سطر و ستون اولین و آخرین بیت) انتخاب می شود.
(۲) p n ([mn]%3)
در رابطه بالا m برابر است با تعداد پیکسل های موجود در
طول تصویر و n برابر با تعداد پیکسل های موجود در عرض تصویر است.

بعد از آنکه تمام بیت های مربوط به متن در پیکسل های تصویر قرار گرفت باید سطر و ستون آخرین بیت را در همان سطری که جهت ذخیره سازی اطلاعات مربوط به متن رزرو شده است قرار داد. البته باید توجه داشت که این اطلاعات بعد از اطلاعات مربوط به سطر اولین بیت قرار می گیرد.

در طرف گیرنده پس از دریافت تصویر ابتدا باید با توجه به فرمول ۲ اطلاعات مربوط به متن یعنی سطر و ستون اولین بیت

سطر و ستون آخرین بیت استخراج شود. پس از آن با توجه به اطلاعات مربوط به مکان بیت اول از کاراکتر اول و با توجه به کم ارزش ترین بیت پیکسل که همان مقدار بیت مورد نظر است اطلاعات از تصویر استخراج می شود. در ادامه الگوریتم فرستنده

گیرنده با جزئیات کامل بیان می شود.

۱-۲ الگوریتم فرستنده:

الگوریتم اصلی که در طرف فرستنده اعمال می شود encode_bit نام دارد که خود شامل دو تابع کمکی است. مطابق آنچه که در طرح اولیه بیان شد، الگوریتم اصلی یک تصویر را به عنوان پارامتر ورودی دریافت می کند. پس از آن رشته ای که متن مورد نظر را جهت مخفی سازی در تصویر دربردارد با نام str1 باید درون تصویر رمزنگاری شود و در طرف گیرنده از تصویر استخراج گردد. برای این منظور کاراکترهای رشته str1 را با استفاده از تابع uint8 به عدد دهدهی معادل تبدیل کردیم. پس از آن با استفاده از تابع size(img) اندازه سطر و ستون تصویر استخراج می شود و درون متغیرهایی قرار می گیرد. در مرحله بعد مطابق فرمول ۲ یکی از سه سطر انتهایی به منظور رزروسازی برای اطلاعات مربوط به تصویر انتخاب شد و مکان اولیه را برای ذخیره سازی اولین بیت مشخص کردیم. در این الگوریتم دو تابع کمکی نیز تعریف شد که در ادامه بیان می شود.

اولین تابع کمکی که در الگوریتم فرستنده تعریف شد، تابع str2bin بود که کار اصلی این تابع قرار دادن رشته عددی مثلا رشته ‘۱۵’ درون خانه ای با سطر و ستون مشخص شده از تصویر است (که در این الگوریتم همان سطر رزروشده است). برای ذخیره رشته ‘۱۵’ ابتدا با استفاده از تابع length طول رشته که در اینجا ۲ است را بدست می آوریم و عدد ۲ را با استفاده از تابع int2str به رشته ۲ تبدیل می کنیم و با استفاده از تابع convert_in (دومین تابع کمکی که در ادامه با جزئیات کامل بیان خواهد شد) ابتدا رشته ۲ به صورت بیتی درون ۶ پیکسل از تصویر قرار می گیرد. بعد از آن با استفاده از یک حلقه for که به تعداد طول رشته مورد نظر که در این مثال دو مرتبه است تکرار می شود؛ در تکرار اول عدد دهدهی معادل رقم دهگان (چون عدد دو رقمی است) و در تکرار دوم عدد دهدهی معادل رقم یکان را ذخیره می کند. خروجی این تابع یک عدد

۲

چهاردهمین کنفرانس دانشجویی مهندسی برق ایران دانشگاه صنعتی کرمانشاه، ۱۷ -۱۵ شهریور ۱۳۹۰

(که ستون آخرین بیت را مشخص می کند) و تصویر تغییر یافته است.

بعد از آن می بایست با یک حلقه for که به تعداد کاراکترهای موجود در متن اولیه تکرار می شود تمام کاراکترهای موجود در متن اولیه (str1) را به همان روشی که در طرح اولیه بیان شد درون تصویر قرار داد. در این حلقه ابتدا کاراکترهای متن را که حال به صورت عدد دهدهی درآمده اند به عدد باینری تبدیل می شود اما از آنجایی که برخی از این اعداد باینری، ۶ بیتی و برخی دیگر ۷ بیتی اند جهت سادگی، بزرگترین مقدار یعنی ۷ را به عنوان تعداد بیت های کاراکتر در نظر می گیریم و کاراکترهایی را که ۶ بیتی اند به کاراکترهای ۷ بیتی تبدیل می کنیم.
دومین تابع کمکی که در الگوریتم فرستنده استفاده شد، تابع convert-in بود که کار اصلی این تابع قرار دادن یک کاراکتر درون ۷ پیکسل از خانه های تصویر است (باید توجه داشت که تعداد پیکسل ها جهت ذخیره سازی یک کاراکتر به عنوان پارامتر ورودی به تابع ارسال می شود). برای درک بیشتر، عملکرد تابع را با یک مثال نشان می دهیم. فرض کنید می خواهیم عدد باینری ۱۰۱۱۰۰۱ را در یک تصویر که مکان اولین بیت آن به عنوان پارامتر ورودی به تابع ارسال شده است، قرار دهیم، برای این منظور از یک حلقه for استفاده می شود که به تعداد ۷ مرتبه (تعداد بیت های عدد باینری) تکرار خواهد شد. برای این عمل، تابع سطر و ستون مکان بیت اول از ۷ بیت یک کاراکتر و تصویر را می گیرد و خروجی آن سطر و ستون مکان هفتمین بیت و تصویر تغیر یافته است.

عمل قرار دادن یک بیت از ۷ بیت در کم ارزش ترین بیت یک پیکسل بدین صورت انجام می شود: فرض کنید مقدار پیکسل (a,b) که اولین بیت باید با کم ارزش ترین بیت این مکان تعوض گردد عدد زوج است (کم ارزش ترین بیت آن صفر است) در این حالت برای قرار دادن یک عدد باینری ۰) یا (۱ کافی است مقدار این پیکسل با عدد باینری xor شود. در حالتی که مقدار پیکسل (a,b) عدد فرد است (کم ارزش ترین بیت آن ۱ است) در این شرایط دو حالت برای بیت جایگزین داریم: حالت اول) اگر بیت جایگزین ۰ باشد کافی است مقدار پیکسل را از ۱ کم می کنیم که باعث می شود مقدار پیکسل زوج شود، حالت دوم) اگر بیت جایگزین ۱ باشد، چون مقدار پیکسل نیز عدد فردی است نیازی به تغییر ندارد.

پس از جایگزینی بیت، برای قرار دادن بیت بعدی یک ستون به جلو حرکت کنیم. درنتیجه باید عدد ستون را با ۱ جمع کنیم اما چنانچه عدد ستون برابر با طول ستون تصویر بود باید یکی به سطر اضافه و ستون برابر ۱ شود. پس از پایان ۷ مرتبه تکرار، مقدار سطر و ستون آخرین بیت به همراه خود تصویر برگردانده می شود.

بعد از قرار دادن همه کاراکترهای متن درون تصویر، حلقه for پایان می یابد. در انتهای الگوریتم نیز باید سطر و ستون مکان آخرین بیت را مشابه ذخیره سازی مکان اولین بیت، ذخیره کرد که تابع str2bin دو مرتبه فراخوانی می شود، که در مرتبه اول سطر آخرین بیت از آخرین کاراکتر را در سطر رزروشده قرار می دهد و در مرتبه دوم ستون آخرین بیت از آخرین کاراکتر را درون سطر رزرو شده قرار می دهد. در انتها باید تصویر مورد نظر که اکنون حاوی اطلاعات مربوط به متن است با فرمت bmp ذخیره کرد.

۲-۲ الگوریتم گیرنده

تصویر مورد نظر پس از اینکه اطلاعات مربوطه درون آن قرار گرفت قابل ارسال می باشد که در طرف گیرنده نیز باید الگوریتم دیگری جهت استخراج اطلاعات موجود در تصویر بر روی آن اعمال شود که این الگوریتم decode_bit نامیده شد که به منظور استخراج اطلاعات موجود در آن روش زیر اعمال می شود. در این الگوریتم نیز مشابه الگوریتم قبل از ۲ تابع کمکی دیگر استفاده می شود. پارامتر الگوریتم اصلی تصویری است که متنی درون آن رمزگذاری شده است. برای استخراج متن مورد نظر تنها کافی است اطلاعات موجود در سطر رزرو شده استخراج شود (اطلاعات مربوط به سطر و ستون اولین بیت از اولین کاراکتر و سطر و ستون آخرین بیت از آخرین کاراکتر). پس مجداد مطابق فرمول ۲ سطر رزروشده پیدا میشود.

اولین تابع کمکی طرف گیرنده تابع cntt است که هدف این تابع استخراج ۳ عدد مربوط به سطر و ستون مکان اولین بیت (با توجه به اینکه اولین بیت بر روی قطر اصلی واقع شده است در نتیجه مقدار سطر و ستون آن با یکدیگر برابر است)، سطر و ستون آخرین بیت است. پارامتر های ورودی این تابع شماره سطری است که برای اطلاعات متن رزرو شده اند و تصویری که متن در آن پنهان شده است. برای درک بیشتر تابع را با یک مثال توضیح می دهیم:

  راهنمای خرید:
  • در صورتی که به هر دلیلی موفق به دانلود فایل مورد نظر نشدید با ما تماس بگیرید.