IFD : Image Forgery Detection

کد متلب هیستوگرام تصویر

 هیستوگرام تصویر نموداری است که توسط آن تعداد پیکسل های هرسطح روشنایی در تصویر ورودی مشخص می شود یا به زبانی دیگر هیستوگرام تصویر نمایشی گرافیکی از تعداد تکرار پیکسل‌های با شدت رنگ مشابه در یک تصویر است. فرض کنید تصویر ورودی یک تصویر Grayscale با 252 سطح روشنایی باشد ، بنابراین هریک از پیکسل های تصویر مقداری در بازه ی 0 تا 255 می  توانند داشته باشند. برای به دست آوردن هیستوگرام تصویر ،کافی است با پیمایش کل پیکسل های تصویر ، تعداد پیکسل های هر سطح روشنایی رامحاسبه می کنیم .

ورودی ما تصویر زیر است:

نمودار هیستوگرام تصویر بالا خروجی زیر می باشد:

کدهای نوشته شده به ترتیب زیر می باشد. ابتدا تصویر ورودی خوانده و بارگذاری می شود:
img = imread('peppers.png');
if size(img,3) == 3
    img = rgb2gray(img);
end
figure(1)
imshow(img)
title('Input Image')
از دستور زیر برای اعمال هیستوگرام رو ی تصویر استفاده می کنیم:
bin = 1:256;
hist = zeros(1,256);
for i = 0 : 255
    hist(i+1) = sum(sum(img == i));
end
و در نهایت برای نمایش نمودار هیستوگرام از دستور زیر استفاده می کنیم:
figure(2)
bar(bin, hist, 'cy')
grid on
ylabel('No. of pixels with such intensity levels')
xlabel('Intensity levels'), xlim([0 255])
title('HISTOGRAM OF THE IMAGE', 'fontsize', 14)
برای دریافت فایل آماده ی این پروژه به لینک زیر مراجعه کنید.
منبع
دانلود پروژه هیستوگرام

وارد کردن تصویر در Matlab و تبدیل تصاویر

Matlab میتواند فایلهای گرافیکی با فرمتهای JPEG, TIFF, GIF, BMP, PNG, HDF, PCX، XWD, ICO, CUR  را به عنوان فایل گرافیکی بخواند.

مثلاً برای وارد کردن تصویری به نام cameraman.tif به فضای Matlab کافی است از دستور imread استفاده کنیم:

MyImage=imread(‘cameraman.tif’);

توجه داشته باشید که فایلی که دستور خواندنش را میدهید باید برای برنامه قابل دسترس باشد. یعنی یا باید در مسیر (Path) Matlab باشد یا اینکه در پرونده های (folder) قرار داشته باشد که در حال حاضر برنامه به آن دسترسی دارد.

خب تا اینجا یک فایل تصویر را در محیط Matlab وارد کرده ایم. همانطور که میدانیم یک تصویر دیجیتال بر روی کامپیوتر در قالب یک ماتریس ذخیره میشود. پس MyImage مثل همه متغیرهای Matlab یک ماتریس است.

برای اینکه بدانیم فایل خوانده شده از چه فرمتی است(سیاه سفید، یا Gray Scale یا رنگی  ) و اینکه اطلاعاتی کلی راجع به تصویر بدست آوریم می نویسیم:

imfinfo(‘cameraman.tif’)

می توان به اطلاعاتی مانند اطلاعات زیر دسترسی پیدا کرد:

Filename، FileModDate، FileSize، Format، FormatVersion، Width، Height، BitDepth، ColorType،FormatSignature، ByteOrder، NewSubFileType، XResolution، YResolution، Colormap، GrayResponseUnit.

حال برای دیدن تصویر وارد شده نیز می توان از دستور زیر استفاده کرد:

imshow(MyImage)

تبدیل تصاویر:

در گام بعدی برای این که بتوانیم رنگ های موجود در تصویر را به منظور خوشه بندی از هم تفکیک کنیم باید فضای رنگ تصویر را از RGB  به سیاه سفید یا Gray Scale تبدیل نمود.

  • برای تبدیل تصویر رنگی به سیاه سفید(باینری)  از کد im2bw  استفاده می کنیم. به صورت زیر:

bw=im2bw(X,map,0.4);

imshow(bw)

bw ماتریسی است که تصویر تبدیل شده  در آن ذخیره میشود، عددی که در آن وارد کردیم درجه ی سفیدی و سیاهی را میتواند تنظیم کند و سپس دوباره از دستور imshow برای نمایش تصویر سیاه سفید استفاده می کنیم. نتیجه ی اجرای کد بالا مانند تصویر زیر است:

  • برای تبدیل تصویر رنگی به Gray Scale از دستور rgb2gray استفاده می کنیم.در تمامی این دستورات ابتدا فراخوانی تصویر را داریم سپس از این قطعه کدها استفاده می کنیم.

MyImage=imread(‘cameraman.tif’);

MyImage2 = rgb2gray(MyImage);

imshow(MyImage),imshow(MyImage2)

ابتدا تصویر را فراخوانی کردیم سپس تصویر رنگی را به Gray Scale تبدیل نموده و در ماتریس MyImage2 ذخیره کرده و در نهایت هر دو تصویر مشاهده میکنیم. نتیجه ی کد بالا به صورت زیر است: