PDA

View Full Version : عملکرد histogram equalization در پردازش تصویر



JalaliMehr
شنبه 30 مهر 1390, 12:41 عصر
سلام
میخام بدونم چطوری تصویر به صورت خودکار equlize میشه؟

مصطفی ساتکی
دوشنبه 02 آبان 1390, 09:20 صبح
در اینجا (http://www.7khatcode.com/2479/%D8%AA%D8%B9%D8%AF%DB%8C%D9%84-%D9%87%DB%8C%D8%B3%D8%AA%D9%88%DA%AF%D8%B1%D8%A7%D 9%85-%D8%AF%D8%B1-%D9%BE%D8%B1%D8%AF%D8%A7%D8%B2%D8%B4-%D8%AA%D8%B5%D9%88%DB%8C%D8%B1)به صورت کامل توضیح داده شده.
زمانی histogram equlization انجام می دیم که بخایم میزان contrast تصویر رو افزایش بدیم در حالاتی که تصویر دارای dynamic range کمی باشد یعنی تصویر low contrast هستش و شما بایستی این تصویر رو به صورتی تبدیل کنید که dynamic range آن در کل
تصویر پخش گردد. برای انجام چنین کاری کافیه از تصویر هیستوگرام بگیرید چون بازه intensity از 0 تا 255 هستش شما bins دارید شما یه آرایه 256 دیگه در نظر بگیرید و توزیع تجمعی هیستوگرام رو در این آرایه بریزید
حالا آرایه توزیع تجمعی را در مقدار ((255/ (image.width*image.heigh))) ضرب کنید مقادیر جدید بدست آمده را جایگزین مقادیر قبلی کنید یعنی اینکه مقادیر قبلی intensity در تصویر را با مقادیر جدید intensity در آرایه جدید جایگزین کنید به این ترتیب تصویر equlize میشه.

hasan.najaf
جمعه 29 اردیبهشت 1391, 11:52 صبح
زمانی histogram equlization انجام می دیم که بخایم میزان contrast تصویر رو افزایش بدیم در حالاتی که تصویر دارای dynamic range کمی باشد یعنی تصویر low contrast هستش و شما بایستی این تصویر رو به صورتی تبدیل کنید که dynamic range آن در کل
تصویر پخش گردد. برای انجام چنین کاری کافیه از تصویر هیستوگرام بگیرید چون بازه intensity از 0 تا 255 هستش شما bins دارید شما یه آرایه 256 دیگه در نظر بگیرید و توزیع تجمعی هیستوگرام رو در این آرایه بریزید
حالا آرایه توزیع تجمعی را در مقدار ((255/ (image.width*image.heigh))) ضرب کنید مقادیر جدید بدست آمده را جایگزین مقادیر قبلی کنید یعنی اینکه مقادیر قبلی intensity در تصویر را با مقادیر جدید intensity در آرایه جدید جایگزین کنید به این ترتیب تصویر equlize میشه.

با سلام
دوستان کسی میدونه چطوری از عکس هیستوگرام بگیرم؟
مثل اینکه باید یه for تو در تو بنویسم اما نمی دونم چطوری !

مصطفی ساتکی
جمعه 29 اردیبهشت 1391, 22:39 عصر
بستگی داره من با 2 تا for برات نوشتم با یکی هم میشه.

int histoGray[256]={0};
int histoR[256] ={0};
int histoG[256]={0};
int histoB[256]={0};

if (img->depth == 8 && img->channels ==1)
{
for (int i=0; i < img->height;i++)
{
char* row = img->imageData + img->widthStep *i;
for (int j=0; j < img->width;j++)
histo[row[j]]++;
}
}
else if (img->depth == 8 && img->channels ==3)
{
for (int i=0; i < img->height;i++)
{
char* row = img->imageData + img->widthStep *i * 3;
for (int j=0; j < img->width;j++)
{
histoB[row[j*3]]++;
histoG[row[j*3+1]]++;
histor[row[j*3+2]]++;
}
}

}

mortezamsp
جمعه 12 خرداد 1391, 19:24 عصر
برای تعدیل نور تصویر باید تصویر رو ببریم به فضای رنگی دیگه ، مثلا تصویر رو ببریم به فضای LAB و بعد اونجا لومینانس رو تعدیل هیستوگرام کنیم و بعد دوباره تصویر رو ببریم به rgb .

leader_one
یک شنبه 21 خرداد 1391, 13:39 عصر
برای تعدیل نور تصویر باید تصویر رو ببریم به فضای رنگی دیگه ، مثلا تصویر رو ببریم به فضای LAB و بعد اونجا لومینانس رو تعدیل هیستوگرام کنیم و بعد دوباره تصویر رو ببریم به rgb .

دوست گرامی، می شه لطف کنین و منبعی که در این مورد اطلاعاتی داده رو معرفی کنین؟

مطمئن هستید همچین چیزی درسته؟

mortezamsp
یک شنبه 21 خرداد 1391, 16:12 عصر
خودتون امتحان کنید.
منبع فارسی (http://thesis.ecg-pnum.com/index.php?pages=thesis&opt=onel&i=16&l=766) :
مؤلفه لومینانس تصویر را می‌توان بدون اثر گذاری در محتوای رنگ پردازش کرد‌.

مصطفی ساتکی
یک شنبه 21 خرداد 1391, 19:50 عصر
دوست گرامی، می شه لطف کنین و منبعی که در این مورد اطلاعاتی داده رو معرفی کنین؟

مطمئن هستید همچین چیزی درسته؟
خوب تصویر رنگی تو فضای hsi از از hue و saturation و intensity از این 3 مقوله تشکیل شده و hue و saturation دلیلی نداره دستکاری بشه شما فقط intensity تصویر رو دستکاری می کنید منبع هم کتاب گنوزالز بخش فضای رنگی