رتبه موضوع:
  • 3 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
هیستوگرام تصویر چیست و همه چیز در رابطه با هیستوگرام(Histogram)
#1

بافت‌نگار(هیستوگرام)
در علم آمار بافت‌نگار (هیستوگرام) یک نمودار ستونی و پله‌ای برای نشان دادن داده‌ها است.

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



درعکاسی
بافت‌نگار (هیستوگرام) در عکاسی، به عنوان یک عملگر کاربردی مصطلح است و یکی از ابزارهای مفید و کارآمد در دوربین‌های عکاسی دیجیتال به شمار می‌رود.[sup][۲][/sup] که با این نام(برای این عملگر) چنین در بین کاربران مصطلح شده‌است و ارتباطی با کارکرد علمی آن ندارد. بافت‌نگار به نموداری گفته می‌شود که فراوانی عناصری که در محور افقی آن قرار دارند را در محور عمودی نشان می‌دهد. بافت‌نگار عکس، شدت نور را، از کمترین مقدار تا بیشترین مقدار، در محور افقی و تعداد پیکسل‌های هرکدام از آن‌ها را در محور عمودی نشان می‌دهد.
توجه به بافت‌نگار، راه بسیار خوبی برای کنترل نوردهی دوربین و تصویر بوجود آمده‌است.

منبع
[عکس: matlabOpencv.gif]

« کلاس های آموزش پردازش تصویر با نرم افزار متلب »

جهت کسب اطلاعات بیشتر با شماره تلفن 09130130252 تماس حاصل فرمائید.


«جهت مشاهده سرفصل این دوره کلیک نمایید»
پاسخ
سپاس شده توسط
#2
هیستوگرام تصویر
هیستوگرام تصویر نموداری است که توسط آن تعداد پیکسل های هر سطح روشنایی در تصویر ورودی مشخص می شود. فرض کنید تصویر ورودی یک تصویر Grayscale با 256 سطح روشنایی باشد ، بنابراین هریک از پیکسل های تصویر مقداری در بازه [255...0] می توانند داشته باشند.
[عکس: rice.jpg]

[عکس: histograme.jpg]
برای به دست آوردن هیستوگرام تصویر ،کافی است با پیمایش کل پیکسل های تصویر ، تعداد پیکسل های هر سطح روشنایی را محاسبه می کنیم . هیستوگرام نرمال نیز از تقسیم کردن مقادیر هیستوگرام به تعداد کل پیکسل های تصویر به دست می آید. نرمال سازی هیستوگرام موجب می شود که مقادیر هیستوگرام در بازه [0,1] قرار گیرند. شکل روبرو تصویری را به همراه هیستوگرام نرمال آن نشان می دهد .

یکی از کاربـردهـای هیستوگرام در فوکوس خودکـار دوربین های دیجیتالی است. بـدین صورت
که لنز دوربین از ابتدا تا انتها حرکت کرده و در هر گام از حرکت خود تصویری از صحنه می گیرد. سپس کنتراست تصویر گرفته شده را با استفاده از هیستوگرام آن محاسبه می کند. پس از آن که لنز به انتهای حرکتی خود رسید، محلی از حرکت لنز که در آن تصویر دارای بیشترین کنتراست خود بوده است، به عنوان محل لنز تعیین می گردد.
روش مذکور یکی از ساده ترین روش های فوکوس خودکار دوربین می باشد و همانطور که می توان حدس زد این الگوریتم در صحنه هایی که رنگ تیره و روشن باهم وجود داشته باشد، دچار اشکالاتی خواهد بود و باید تغییراتی در آن اعمال کرد (مفهوم کنتراست در ادامه بیان شده است).

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


[عکس: lowContrast.jpg]

[عکس: histContrast.jpg]


[عکس: histeq.jpg]
[عکس: histEqual.jpg]
تصویر خروجی پس از تعدیل هیستوگرام تصویر ورودی و هیستوگرام آن
الگوریتم زیر روش تعدیل سازی هیستوگرام را نشان می دهد : 1 ) هیستوگرام تصویر را محاسبه می کنیم. فرض کنید مقادیر هیستوگرام در آرایه hist قرار گیرد.
2 ) با استفاده از فرمول زیر فراوانی هیستوگرام را محاسبه می کنیم :
کد پی‌اچ‌پی:
histCum] = histCumi-] + hist
3 ) از فرمول زیر استفاده کرده و هیستوگرام تعدیل شده را محاسبه می کنیم :
کد پی‌اچ‌پی:
eqHist[i] = Truncate( [(histCum– N]/
4 ) در مرحله نهایی مقادیر جدید پیکسل ها را به صورت زیر مقدار دهی می کنیم :
کد پی‌اچ‌پی:
Result] = eqHistinput] ] 

که در این فرمول L تعداد سطوح خاکستری و N تعداد کل پیکسل ها، Result تصویر خروجی و input تصویر ورودی را نشان می دهند.


پردازش تصویر در MATLAB
تعدیل سازی هیستوگرام در MATLAB با استفاده از تابع histeq و به شکل زیر انجام می پذیرد :

کد پی‌اچ‌پی:
>> imread('tire.tif');                        
                        >> 
histeq(I);                        
                        >> 
figureimshow(I), figureimshow(J); 

منبع
[عکس: matlabOpencv.gif]

« کلاس های آموزش پردازش تصویر با نرم افزار متلب »

جهت کسب اطلاعات بیشتر با شماره تلفن 09130130252 تماس حاصل فرمائید.


«جهت مشاهده سرفصل این دوره کلیک نمایید»
پاسخ
سپاس شده توسط
#3
پردازش هیستوگرام یکی از پردازشهای نقطه ای (point processing) است. اما به دلیل اهمیت زیادی که در مباحث پردازش تصویر دارد جداگانه به آن میپردازیم.

هیستوگرام تصویر:
هیستوگرام تصویر نموداری است که توسط آن تعداد پیکسل های هر سطح روشنایی در تصویر ورودی مشخص می شود. فرض کنید تصویر ورودی یک تصویر Grayscale با 256 سطح روشنایی باشد ، بنابراین هریک از پیکسل های تصویر مقداری در بازه [255...0] می توانند داشته باشند.
برای به دست آوردن هیستوگرام تصویر، کافی است با پیمایش کل پیکسل های تصویر ، تعداد پیکسل های هر سطح روشنایی را محاسبه می کنیم. هیستوگرام نرمال نیز از تقسیم کردن مقادیر هیستوگرام به تعداد کل پیکسل های تصویر به دست می آید. نرمال سازی هیستوگرام موجب می شود که مقادیر هیستوگرام در بازه [0,1] قرار گیرند.

نمودار هیستوگرام دارای دو مولفه افقی و عمودی است. مولفه افقی سطوح خاکستری را نشان می دهد که معمولا بین 0(تاریکی مطلق) و 255(روشنائی مطلق) میباشد. مولفه عمودی نیز تعداد پیکسلهای دارای سطح خاکستری مشخص در تصویر است.

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

نمونه ای از کد c نوشته شده:
کد پی‌اچ‌پی:
[align=LEFT]void histogram_processing(const unsigned short *buff)
{
   
UINT16 gray_value;

   for(
col=0;col<240;col++){
     
= (*(buff+col) & 0x1F) << 3;
     
= (*(buff+col) >>3) & 0xFC;
     
= (*(buff+col) >>) & 0xF8;
     
gray_value G;     //in gray-level image R=G=B=gray_value
     
hist_val[gray_value]++;
//hist_val
   
{
{[/
align

منبع
[عکس: matlabOpencv.gif]

« کلاس های آموزش پردازش تصویر با نرم افزار متلب »

جهت کسب اطلاعات بیشتر با شماره تلفن 09130130252 تماس حاصل فرمائید.


«جهت مشاهده سرفصل این دوره کلیک نمایید»
پاسخ
سپاس شده توسط
#4
یکی از کاربردهای پردازش هیستوگرام در افزایش کنتراست تصاویر با کنتراست پایین است. زمانی که می گوییم کنتراست تصویری کم است این بدان معنا است که اختلاف بین کمترین و بیشترین شدت روشنایی تصویر کم است. تعدیل سازی هیستوگرام موجب می شود که کنتراست تصویر ورودی تا حد ممکن افزایش یابد و این به معنای بهبود کیفیت تصویر و نیز افزایش دقت پردازشهای بعدی است. روشهای متنوعی برای تعدیل هیستوگرام تعریف شده اند که همگی کلیت یکسانی دارند.

نمونه ای از کد c نوشته شده:
کد پی‌اچ‌پی:
DRESULT histogram_equalization()
{
   
UINT32 sum_temp=0;

    for (
i=0i<256i++){
     if(
hist_val[i]){
        
gray_num[gray_counter] = hist_val[i];
        
gray_level[gray_counter] = i;
        
gray_counter++;
     }
    }

    for (
i=0i<gray_counteri++){
      
sum_temp=0;
       for (
j=0j<=ij++)
         
sum_temp += gray_num[j];
        
cdf[i] = sum_temp;
    }

    
res process_frame(7);
    if(
res != RES_OK)   return 1;   //file write failed

    
return RES_OK;
}

void histogram_equalization_result(const unsigned short *buff)
{
   
unsigned short *post_buff_ptr post_buff;
   
UINT16 gray_value;

   for(
col=0;col<240;col++){
     
= (*(buff+col) & 0x1F) << 3;
     
= (*(buff+col) >>3) & 0xFC;
     
= (*(buff+col) >>) & 0xF8;
     
gray_value =  G;

     
i=0;
     while(
gray_value != gray_level[i])i++;

     
gray_value = ((float)(cdf[i] - cdf[0]) / (76800 cdf[0])) * 255;

     
gray_value &= 0xFC;
     *(
post_buff_ptr+col) = (gray_value 0xF8);
     *(
post_buff_ptr+col) <<= 8;
     *(
post_buff_ptr+col) |= (gray_value<<3);
     *(
post_buff_ptr+col) |= (gray_value>>3);
//hist_val
   
{
{[/
i][/i
[i][/i]

منبع
[عکس: matlabOpencv.gif]

« کلاس های آموزش پردازش تصویر با نرم افزار متلب »

جهت کسب اطلاعات بیشتر با شماره تلفن 09130130252 تماس حاصل فرمائید.


«جهت مشاهده سرفصل این دوره کلیک نمایید»
پاسخ
سپاس شده توسط
#5
هیستوگرام
[b]
منحني هاي هيستوگرام كليد درك تصاویر دیجیتال می باشد. شکل موزائیکی زیر از 40 موزائیک رنگی تشکیل شده که می توانیم آنها را روی هم و به صورت مجزا قرار دهیم.

هر چه ستون یک رنگ بلندتر باشد، تعداد بیشتری موزائیک از آن رنگ در تصویر وجود دارد. در نتیجه منحنی هیستوگرام این تصویر موزائیکی نشاندهنده توزیع قطعات رنگی در آن می باشد هر تصویر دیجیتال مجموعه ای از موزائیک ها یا پیکسل هاست. به جای دسته بندی پیکسل ها بر اساس رنگ می توانیم آنها را بر اساس روشنایی به 256 سطح تقسیم کنیم.
در این تقسیم بندی عدد صفر برای رنگ سیاه و عدد 255 برای رنگ سفید در نظر گرفته می شود . همانند مثال موزائیک بالا ، یک نرم افزار گرافیکی ، بطور اتوماتیک تصویر زیر زا به 256 سطح روشنایی دسته بندی می کند، ارتفاع هر میله عمودی نشاندهنده تعداد پیکسلهای آن روشنایی خاص می باشد. اعداد صفر و 255 به ترتیب نشاندهنده تیره ترین و روشن ترین نواحی تصویر می باشند.
[عکس: 1624115118559211054622895122159182119140141.jpg]
[عکس: 2309438169162142247711411496019020043225176.gif]

در این هیستوگرام عرض هر میله برابر با یک پیکسل می باشد. برخلاف هیستوگرام تصویر موزائیک بالا، 256 میله بدون هیچ گونه فاصله ای در کنار هم قرار گرفته اند .
[عکس: 182250221982252402212119117016718189917.jpg]
بر روی تصاویر کلیک کنید
اين كار به دلايل آموزشي انجام شده است تا ميله هاي عمودي قابل تفكيك از يكديگر باشند . در حالت عادي تمام ميله ها همانند هيستوگرام دوم به رنگ سياه مي باشند .
[عکس: 61196235104653212410155211821963239252213.jpg]
بر روی تصاویر کلیک کنید


( نوردهي مناسب )


مثالي از يك تصوير با نوردهي مناسب و هيستوگرام خوب . شيب ملايم در انتهاي 255 نشان مي دهد كه نواحي روشن به نرمي در ابرها و امواج حفظ شده و بهمين ترتيب نواحي سايه از صفر شروع شده و بتدريج افزايش مي يابند.


[عکس: 16552321411715277222345851620117433180.jpg]

( نوردهي كم )

اين منحني نشان مي دهد كه تعداد پيكسل هاي با ارزش صفر يا نزديك به صفر زياد بوده در نتيجه سايه هاي تيزي در تصوير ديده مي شود . بعضي از جزئيات سايه ها ناپديد شده اند بطور طبيعي پيكسل هاي سياه نبايد اين اندازه زياد باشد. همچنين به تعداد كم پيكسل ها در نواحي روشن توجه كنيد


[عکس: 213164244648780102221160947591955610179.jpg]

(نوردهی زیاد)

این منحنی نشان می دهد که تعداد پیکسل های با ارزش 255 یا نزدیک به آن در تصویر زیاد بوده درنتیجه نواحی بسیار روشن در تصویر دیده می شود . بعضی از جزئیات در ابرها و امواج ناپدید شده اند همچنین به تعداد کم پیکسل ها در نواحی تیره دقت کنید.


[عکس: 213164244648780102221160947591955610179.jpg]


بر روی تصاویر کلیک کنید
(کنتراست خیلی بالا)
در این تصاویر هم نواحی تیره و هم نواحی روشن دیده می شوند ، محدوده دینامیکی صحنه بزرگتر از محدوده دینامیکی دوربین می باشد.

[عکس: 24613510986231612224149147489186211168.jpg]
(کنتراست بهینه)


با گسترش هیستوگرام فوق از طریق تنظیم levels یا Curves کنتراست تصویر بهتر می شود اما از آنجایی که تونالیته ها در محدوده وسیع تری توزیع می گردند ، بعضی از تونالیتهها حذف خواهند شد.


منبع
[/b]
[عکس: matlabOpencv.gif]

« کلاس های آموزش پردازش تصویر با نرم افزار متلب »

جهت کسب اطلاعات بیشتر با شماره تلفن 09130130252 تماس حاصل فرمائید.


«جهت مشاهده سرفصل این دوره کلیک نمایید»
پاسخ
سپاس شده توسط zhashemi ، gholamgholy
#6
(10-26-2013, 11:00 PM)مهدی ابراهیمی نوشته: سلام
مشکلتون رو واضحتر مطرح کنید

سلام
خسته نباشید
من اموزش هیستوگرام بدون استفاده از دستور histeq متلب میگردم

ممنونتون میشم کمکم کنید
واقعیتش خیلی دنبالش گشتم نبوده
اگه جسارت نیس به ایمیلم جواب رو بزنیئ
ممنونم
omidmahmoodi70@gmail.com
پاسخ
سپاس شده توسط
#7
(02-19-2015, 05:08 PM)omidmahmoodi70 نوشته:
(10-26-2013, 11:00 PM)مهدی ابراهیمی نوشته: سلام
مشکلتون رو واضحتر مطرح کنید

سلام
خسته نباشید
من اموزش هیستوگرام بدون استفاده از دستور histeq متلب میگردم

ممنونتون میشم کمکم کنید
واقعیتش خیلی دنبالش گشتم نبوده
اگه جسارت نیس به ایمیلم جواب رو بزنیئ
ممنونم
omidmahmoodi70@gmail.com

سلام
این مطالب رو مطالعه بفرمائید:
whats the difference between cv::equalizeHist and matlab histeq()


کد پی‌اچ‌پی:
   #include "cv.h"  
 
   #include "highgui.h"  
 
     
    
#define HDIM    256    // bin of HIST, default = 256  
 
     
    int main
int argcchar** argv   
    
 
        IplImage 
*src 0, *dst 0 
        CvHistogram 
*hist 0 
          
        int n 
HDIM      
        double nn
[HDIM];  
        uchar T
[HDIM];  
        CvMat 
*T_mat 
          
        int x
 
        int sum 
0// sum of pixels of the source image Í¼ÏñÖÐÏóËصãµÄ×ܺ͠ 
 
       double val 0 
          
        if
argc != || (src=cvLoadImage(argv[1], 0)) == NULL // force to gray image  
 
           return -1 
          
        cvNamedWindow
"source");  
        cvNamedWindow
"result");  
          
        
// ¼ÆËãÖ±·½Í¼  
 
       hist cvCreateHist1, &nCV_HIST_ARRAY0);    
        cvCalcHist
( &srchist0);   
          
        
// Create Accumulative Distribute Function of histgram  
 
       val 0 
        for 
0nx++)  
        
 
            val 
val cvGetReal1D (hist->binsx);  
            nn
[x] = val 
        
 
      
        
// ¹éÒ»»¯Ö±·½Í¼  
 
       sum src->height src->width 
        for
0nx++ )  
        
 
            T
[x] = (uchar) (255 nn[x] / sum); // range is [0,255]  
 
        
      
        
// Using look-up table to perform intensity transform for source image   
 
       dst cvCloneImagesrc );  
        T_mat 
cvCreateMatHeader1256CV_8UC1 );  
        cvSetData
T_matT);      
        
// Ö±½Óµ÷ÓÃÄÚ²¿º¯ÊýÍê³É look-up-table µÄ¹ý³Ì  
 
       cvLUTsrcdstT_mat );   
      
        cvShowImage
"source"src );  
        cvShowImage
"result"dst );  
        cvWaitKey
(0);  
      
        cvDestroyWindow
("source");  
        cvDestroyWindow
("result");  
        cvReleaseImage
( &src );  
        cvReleaseImage
( &dst );  
        cvReleaseHist 
( &hist );  
          
        return 0
 
    
  
[عکس: matlabOpencv.gif]

« کلاس های آموزش پردازش تصویر با نرم افزار متلب »

جهت کسب اطلاعات بیشتر با شماره تلفن 09130130252 تماس حاصل فرمائید.


«جهت مشاهده سرفصل این دوره کلیک نمایید»
پاسخ
سپاس شده توسط


موضوعات مشابه ...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Information کتابها ، منابع و مقالات جهت یادگیری پردازش تصویر مهرداد عباسی 33 76,908 12-06-2018, 10:14 AM
آخرین ارسال: jarahlaser
  تشخیص امضای دستی با استفاده از پردازش تصویر sa akbari 0 824 01-06-2018, 08:42 PM
آخرین ارسال: sa akbari
  پردازش تصویر چیست؟ مهرداد عباسی 11 43,265 12-10-2017, 01:37 AM
آخرین ارسال: sa2017
  مقایسه دو تصویر از نظر ساختاری (SSim) مهدی ابراهیمی 2 5,853 08-12-2017, 07:25 PM
آخرین ارسال: سوسن مروارید
  قطعه بندی در پردازش تصویر helena_lovely99 14 33,818 10-01-2015, 11:48 AM
آخرین ارسال: raha1o5o3
Photo راهنمایی در مورد فرمول بهبود تصویر lakers 0 2,878 01-05-2015, 08:32 PM
آخرین ارسال: lakers
Sad ترجمه لغات پردازش تصویر atiati 4 13,168 09-30-2014, 09:35 PM
آخرین ارسال: mostafa.mcn90
  تبدیل مجموعه تصویر بصورت فیلم 8moein8 7 10,579 09-21-2014, 03:22 PM
آخرین ارسال: 8moein8
  پردازش تصویر با استفاده از الگوریتم k-means deniz 2 7,038 07-16-2014, 05:32 AM
آخرین ارسال: m_parsa11
  میانگین گیری از تصویر با پردازش تصویر مهدی ابراهیمی 8 15,646 05-19-2014, 02:08 PM
آخرین ارسال: shahinbufaluo

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان