IFD : Image Forgery Detection

هیستوگرام

هیستوگرام چیست؟

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


هیستوگرام یک ابزار بسیار کارآمد است که بسیاری از دوربین ها آن را در اختیار کاربران خود می گذارند تا به آنها کمک کند و خلاصه ای از وضعیت نوری عکس را در اختیار کاربران بگذارد و آنها بتوانند با یک نگاه متوجه  میزان نور و کمیت آن در عکس خود بشوند. هیستوگرام تون های نوری در عکس شما را از رنگ سیاه (در سمت چپ)  به سمت رنگ سفید (در سمت راست) به نمایش در می آورد. در هر قسمت از هیستوگرام که ارتفاع بیشتری داشته باشد به این معناست که پیکسل هایی که آن تون رنگی در عکس شما دارند بیشتر از بقیه رنگ ها هستند. بنابراین هیستوگرام عکسی که نقاط تاریک بسیاری دارد به سمت چپ نامتوازن خواهد بود هیستوگرام عکسی که نقاط روشن بسیاری دارد به سمت راست نامتوازن خواهد بود. همانطور که می دانید دوربی ن شما به دلیل اندازه ی کوچکش نمی تواند وسیله ی خوبی برای سنجش عکس شما باشد و معمولا عکاس ها پس از مراجعه به منزل و بازبینی عکس ها در کامپیوتر شخصی متوجه می شوند که اشتباهاتو نقص هایی در عکس های آنها موجود بوده که در دوربین غیرقابل رویت بود. زیبایی کار هیستوگرام این است که شما می توانید در lcd به راحتی متوجه وضعیت نوری عکس خود بشوید و بدانید که عکس شما زیاد نوردهی شده، کم نوردهی شده، و یا متعادل است.
کوچک و یا بزرگ بودن صفحه نمایش هیچ تاثیری در عملکرد هیستوگرام ندارد و شما را به اشتباه نمی اندازد. در همان محل عکاسی اگر با مشاهده هیستوگرام عکس متوجه اشتباهی در نوردهی شدید می توانید با گرفتن یک عکس جدید با تنظیمات بهتر اشتباهتان را جبران کنید.
هر پیکسل از هر عکسی، دارای رنگیست که از تلفیق سه رنگ اصلی قرمز، سبز و آبی تشکیل شده است. هر کدام از این رنگها می توانند درخشندگی و روشنایی (RGB) به میزان 0 تا 255 داشته باشند. البته این میزان درخشندگی مربوط به عکس های 8بیتی می باشد.همانطور که در عکس زیر می بینید هیستوگرام رنگها را در عکس نشان می دهد.


نمودار هیستوگرام تصویر نموداری است که توسط آن تعداد پیکسل های هرسطح روشنایی در تصویر ورودی مشخص می شود. فرض کنید تصویر ورودی یک تصویر Grayscale با 252 سطح روشنایی باشد ، بنابراین هریک از پیکسل های تصویر مقداری در بازه ی 0 تا 255 می  توانند داشته باشند.برای به دست آوردن هیستوگرام تصویر ،کافی است با پیمایش کل پیکسل های تصویر ، تعداد پیکسل های هر سطح روشنایی رامحاسبه می کنیم .
هیستوگرام نرمال نیز از تقسیم کردن مقادیرهیستوگرام به تعداد کل پیکسل های تصویر به دست می آید. نرمالسازی هیستوگرام موجب می شود که مقادیر هیستوگرام در بازه 0 و 1  قرار گیرند. شکل زیر تصویری را به همراه هیستوگرام نرمال آن نشان می دهد .
                                               
یکی از کاربردهای هیستوگرام در فوکوس خودکار دوربین های دیجیتالی است. بدین صورتکه لنز دوربین از ابتدا تا انتها حرکت کرده و در هر گام از حرکت خود تصویری از صحنه می گیرد. سپس کنتراست تصویر گرفته شده را با استفاده از هیستوگرام آن محاسبه می کند. پس از آن که لنز به انتهای حرکتی خود رسید، محلی از حرکت لنز که در آن تصویر دارای بیشترین کنتراست خود بوده است، به عنوان محل لنز تعیین می گردد. روش مذکور یکی از ساده ترین روش های فوکوس خودکار دوربین می باشد و همانطور که می توان حدس زد این الگوریتم در صحنه هایی که رنگ تیره و روشن باهم  وجود داشته باشد، دچار اشکالاتی خواهد بود و باید تغییراتی در آن اعمال کرد مفهوم کنتراست درادامه بیان شده است.
تعدیل هیستوگرام:
یکی دیگر از کاربردهای هیستورگرام در افزایش کنتراست تصاویر با کنتراست پایین است. زمانی که میگوییم کنتراست تصویری کم است این بدان معنا است که اختلاف بین کمترین و بیشتری شدت روشنایی تصویر کم است. هم تعدیل سازی هیستوگرام موجب می شود که کنتراست تصویر ورودی تا حد ممکنافزایش یابد. به عنوان مثال شکل زیر تصویری را قبل(تصویر سمت چپ) و بعد(تصویر سمت راست) از تعدیل سازی هیستوگرام نشان می دهد:
الگوریتم زیر روش تعدیل سازی هیستوگرام را نشان می دهد :
1 )  هیستوگرام تصویر را محاسبه می کنیم. فرض کنید مقادیر هیستوگرام در آرایه hist قرار گیرد.
2 ) با استفاده از فرمول زیر فراوانی هیستوگرام را محاسبه می کنیم :
histCum[ i ] = histCum[ i-1 ] + hist[ i ]
3 ) از فرمول زیر استفاده کرده و هیستوگرام تعدیل شده را محاسبه می کنیم :
eqHist[i] = Truncate( [(L * histCum[i]) – N]/N )
4 ) در مرحله نهایی مقادیر جدید پیکسل ها را به صورت زیر مقدار دهی می کنیم :
Result[ i , j ] = eqHist[ input[ i , j ] ]
که در این فرمول L تعداد سطوح خاکستری و N تعداد کل پیکسل ها، Result تصویر خروجی و input تصویر ورودی را نشان می دهند.
چند مثال از هیستوگرام و کارکرد آن:
حالا به عکس های زیر و هیستوگرام آنها توجه کنید تا بهتر متوجه نوع عملکرد آن بشوید.