هیستوگرام تصویر هیستوگرام تصویر نموداری است که توسط آن تعداد پیکسل های هر سطح روشنایی در تصویر ورودی مشخص می شود. فرض کنید تصویر ورودی یک تصویر Grayscale با 256 سطح روشنایی باشد ، بنابراین هریک از پیکسل های تصویر مقداری در بازه [255...0] می توانند داشته باشند.
برای به دست آوردن هیستوگرام تصویر ،کافی است با پیمایش کل پیکسل های تصویر ، تعداد پیکسل های هر سطح روشنایی را محاسبه می کنیم . هیستوگرام نرمال نیز از تقسیم کردن مقادیر هیستوگرام به تعداد کل پیکسل های تصویر به دست می آید. نرمال سازی هیستوگرام موجب می شود که مقادیر هیستوگرام در بازه [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 تصویر ورودی را نشان می دهند.
پردازش تصویر در MATLAB
تعدیل سازی هیستوگرام در MATLAB با استفاده از تابع histeq و به شکل زیر انجام می پذیرد :
کد:
>> I = imread('tire.tif');
>> J = histeq(I);
>> figure, imshow(I), figure, imshow(J);
هیستوگرام تصویر هیستوگرام تصویر نموداری است که توسط آن تعداد پیکسل های هر سطح روشنایی در تصویر ورودی مشخص می شود. فرض کنید تصویر ورودی یک تصویر Grayscale با 256 سطح روشنایی باشد ، بنابراین هریک از پیکسل های تصویر مقداری در بازه [255...0] می توانند داشته باشند.
برای به دست آوردن هیستوگرام تصویر ،کافی است با پیمایش کل پیکسل های تصویر ، تعداد پیکسل های هر سطح روشنایی را محاسبه می کنیم . هیستوگرام نرمال نیز از تقسیم کردن مقادیر هیستوگرام به تعداد کل پیکسل های تصویر به دست می آید. نرمال سازی هیستوگرام موجب می شود که مقادیر هیستوگرام در بازه [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 تصویر ورودی را نشان می دهند.
پردازش تصویر در MATLAB
تعدیل سازی هیستوگرام در MATLAB با استفاده از تابع histeq و به شکل زیر انجام می پذیرد :
کد:
>> I = imread('tire.tif');
>> J = histeq(I);
>> figure, imshow(I), figure, imshow(J);
منبع : zhyner