رفتن به مطلب

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


ارسال های توصیه شده

این چه حرفیه، انجمن برای سوال کردن دیگه.

 

خب زهرا خانوم توضیح دادن، شما سطوح روشنایی تصویر ورودیت بین 0 تا 255 هست، این منحنی cdf هم که حساب کردی توی 256 تا درایه داره که مقادیر جدید این پیکسل های داخلش قرار داره، تنها کاری که باید انجام بشه اینه که دونه دونه پیکسل ها مفدارشون بررسی بشه (دو تا حلقه اینکار رو می کنن، جهت افقی و عمودی)، بعد هر مقداری داست با یک جمع می کنیم چون آدرس ها توی متلب از یک شروع میشه دیگه، مقدار جدید رو از بردار cdf بر می داریم، مثلا اگه مقدار قبلی پیکسلمون 10 باشه، مقدار جدیدش میشه درایه 11 بردار cdfمون.

 

در مورد اون فرمول هم باید بیشتر توضیح داده بشه، هر کدوم از این متغیر هایی که استفاده شدن چی هستن، int فکر کنم برای integer باشه، L هم تعداد سطوح روشنایی.

سلام

مقدار جدید رو چطور بر می داریم؟

یا اون out که من گذاشتم درست هست یا غلط؟

لینک به دیدگاه
سلام

مقدار جدید رو چطور بر می داریم؟

یا اون out که من گذاشتم درست هست یا غلط؟

 

مثلا تصویر وردی مون این باشه با 8 سطح روشنایی:

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

خب ماتریس cdfمون رو در 7 ضرب کردیم و رندشون کردیم، مثل ورودی مون بین 0 تا 7 بشه:

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

یعنی به جای سطح روشنایی اول و دوم باید 0 بذاریم، برای سطح روشنایی سوم باید 1 بذاریم، برای سطح روشنایی چهارم (یعنی 3) باید 3 بذاریم، همینطور تا آخر، تصویر خورجی مون میشه این:

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

لینک به دیدگاه
مثلا تصویر وردی مون این باشه با 8 سطح روشنایی:

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

خب ماتریس cdfمون رو در 7 ضرب کردیم و رندشون کردیم، مثل ورودی مون بین 0 تا 7 بشه:

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

یعنی به جای سطح روشنایی اول و دوم باید 0 بذاریم، برای سطح روشنایی سوم باید 1 بذاریم، برای سطح روشنایی چهارم (یعنی 3) باید 3 بذاریم، همینطور تا آخر، تصویر خورجی مون میشه این:

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

مرسی. خیلی محبت کردید همه دوستان

اما من نتونستم پیاده سازیش کنم.

:icon_gol:

لینک به دیدگاه

این الگوریتم تعدیل سازی هیستوگرام هست:

hlhokgi797yvuzatarp7.jpg

اینم کد مربوطه که من ازش جواب گرفتم:

 


f=imread('0.jpg');
hnorm=imhist(f)./ numel(f);
cdf=round(cumsum(hnorm)*255);
for i=1:size(f,1)

for j=1:size(f,2)

f(i,j)=cdf(f(i,j)+1);

end

end
imhist(f)

تصویری که هم گذاشتین، واضح نیست!

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

لینک به دیدگاه

سلام زهرا جان دستتون درد نکنه محبت کردید

من دوباره عکس از هر کدوم فرمول ها جدا عکس گرفتم(3 تا عکس) محبت می کنید یه نگاه بندازید؟

عزیزم لطف کردید من برام با حلقه ها کار کردن خیلی سخت هست. الانم بس که استرس دارم دیگه اوضاع بدتر شده.:ws52:

1.PNG

2.jpg

3.jpg

لینک به دیدگاه
سلام زهرا جان دستتون درد نکنه محبت کردید

من دوباره عکس از هر کدوم فرمول ها جدا عکس گرفتم(3 تا عکس) محبت می کنید یه نگاه بندازید؟

عزیزم لطف کردید من برام با حلقه ها کار کردن خیلی سخت هست. الانم بس که استرس دارم دیگه اوضاع بدتر شده.:ws52:

به اون L-1 و 0.5

تو فرمول3 شک دارم که نکنه فرق داشته باشه :banel_smiley_4:

لینک به دیدگاه
سلام زهرا جان دستتون درد نکنه محبت کردید

من دوباره عکس از هر کدوم فرمول ها جدا عکس گرفتم(3 تا عکس) محبت می کنید یه نگاه بندازید؟

عزیزم لطف کردید من برام با حلقه ها کار کردن خیلی سخت هست. الانم بس که استرس دارم دیگه اوضاع بدتر شده.:ws52:

 

به اون L-1 و 0.5

تو فرمول3 شک دارم که نکنه فرق داشته باشه :banel_smiley_4:

 

سلام

به نظرم L باید همون 256 (تعداد سطوح) باشه، که یکی کم می کنیم بشه ماکزیمم سطح روشنایی، اون نیم هم واسه این گذاشته اگه به مقدار بالایی نزدیک تر بود به اون گرد بشه، مثلا من عددم وقتی در L منهای یک ضرب میشه بدست بیاد، 200.75، همینجوری به پایین گرد کنه میشه 200، ولی وقتی با نیم جمع کنه بعد گردش کنه به پایین میشه 201.:a030:

لینک به دیدگاه
سلام

به نظرم L باید همون 256 (تعداد سطوح) باشه، که یکی کم می کنیم بشه ماکزیمم سطح روشنایی، اون نیم هم واسه این گذاشته اگه به مقدار بالایی نزدیک تر بود به اون گرد بشه، مثلا من عددم وقتی در L منهای یک ضرب میشه بدست بیاد، 200.75، همینجوری به پایین گرد کنه میشه 200، ولی وقتی با نیم جمع کنه بعد گردش کنه به پایین میشه 201.:a030:

سلام

پس احتمالا به جای استفاده از hiteq باید خود این فرمول رو پیاده سازی کنم.:w58:

 

می دونید T و Tmin چطور محاسبه می شه؟:ws37:

لینک به دیدگاه
سلام

پس احتمالا به جای استفاده از hiteq باید خود این فرمول رو پیاده سازی کنم.:w58:

 

می دونید T و Tmin چطور محاسبه می شه؟:ws37:

 

سلام

خیلی شبیه histeq هست.

 

T رو که فرمولش رو داری، وقتی محاسبه ش کردی، کوچکترین مقدارش میشه Tmin.

لینک به دیدگاه

سلام

من چند تا سئوال داشتم . اگر راهنمایی بفرمایید ممنون میشم.

 

ا) دستور hist ,histeq برای تصاویر از نوع unit8 هستند و نمی شه برای تصویر از نوع double استفاده بشن؟

2) وقتی یه تصویر به double تبدیل می شه دیگه نمی شه خط افقی هیستوگرام از 0 تا 255 باشه؟

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

وقتی بیشترین مقدار L یک هست چه طور باید خط افقی از 0 تا 255 باشه؟

چطوری رسمش کنم درست

دستور plot(h,256) رو بلدم اما باز یه جور دیگه رسم می کنه.:hanghead:

لینک به دیدگاه
سلام

من چند تا سئوال داشتم . اگر راهنمایی بفرمایید ممنون میشم.

 

ا) دستور hist ,histeq برای تصاویر از نوع unit8 هستند و نمی شه برای تصویر از نوع double استفاده بشن؟

2) وقتی یه تصویر به double تبدیل می شه دیگه نمی شه خط افقی هیستوگرام از 0 تا 255 باشه؟

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

وقتی بیشترین مقدار L یک هست چه طور باید خط افقی از 0 تا 255 باشه؟

چطوری رسمش کنم درست

دستور plot(h,256) رو بلدم اما باز یه جور دیگه رسم می کنه.:hanghead:

 

سلام

ببین نینا خانوم متلب تصویر دابل رو بین یک و صفر فرض می کنه، یعنی مقادیر بزگتر از یک رو یک در نظر می گیره و مقادیر کوچیکتر از صفر رو هم صفر، در واقع تصویرت رو تقسیم بر 255 می کنی. به جای دستور double برای تصویر از im2double استفاده کن، مقادیر خروجیش بین صفر و یک میشه:

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

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

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

لینک به دیدگاه

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...