zahra jalili 746 اشتراک گذاری ارسال شده در 1 تیر، ۱۳۹۳ سلام دوستان من این برنامه ی ایزودیتا رو از رو نت برداشتم، الگوریتم کلی رو میدونم چیکار می کنه، ولی برنامه رو نه! ممنون میشم کمک کنید. Threshold = 0;[counts,N]=hist(V_3); i=1; mu=cumsum(counts); T(i)=(sum(N.*counts))/mu(end); T(i)=round(T(i)); idx = (Nmu2=cumsum(counts(idx)); MBT=sum(N(idx).*counts(idx))/mu2(end); idx2 = logical(1-idx); mu3=cumsum(counts(idx2)); MAT=sum(N(idx2).*counts(idx2))/mu3(end); i=i+1; % new T = (MAT+MBT)/2 T(i)=round((MAT+MBT)/2); % repeat step 2 if T(i)~=T(i-1) while abs(T(i)-T(i-1))>1 idx = (N mu2=cumsum(counts(idx)); MBT=sum(N(idx).*counts(idx))/mu2(end); idx2 = logical(1-idx); mu3=cumsum(counts(idx2)); MAT=sum(N(idx2).*counts(idx2))/mu3(end); i=i+1; T(i)=round((MAT+MBT)/2); Threshold=T(i); end بگم که این الگوریتم برای ترشولدینگ استفاده میشه، اولش یک آستانه انتخاب می کنه، بعدش میانگین شدت روشنایی رو واسه قبل و بعد از آستانه ی اولیه بدست میاره میانگین این دو تا رو دوباره محاسبه می کنه. این کار رو انقد انجام میده که اختلاف آستانه قبلی با فعلی ناچیز بشه. 3 لینک به دیدگاه
Imaaan 17059 اشتراک گذاری ارسال شده در 1 تیر، ۱۳۹۳ سلامدوستان من این برنامه ی ایزودیتا رو از رو نت برداشتم، الگوریتم کلی رو میدونم چیکار می کنه، ولی برنامه رو نه! ممنون میشم کمک کنید. threshold = 0;[counts,n]=hist(v_3); i=1; mu=cumsum(counts); t(i)=(sum(n.*counts))/mu(end); t(i)=round(t(i)); idx = (nmu2=cumsum(counts(idx)); mbt=sum(n(idx).*counts(idx))/mu2(end); idx2 = logical(1-idx); mu3=cumsum(counts(idx2)); mat=sum(n(idx2).*counts(idx2))/mu3(end); i=i+1; % new t = (mat+mbt)/2 t(i)=round((mat+mbt)/2); % repeat step 2 if t(i)~=t(i-1) while abs(t(i)-t(i-1))>1 idx = (n mu2=cumsum(counts(idx)); mbt=sum(n(idx).*counts(idx))/mu2(end); idx2 = logical(1-idx); mu3=cumsum(counts(idx2)); mat=sum(n(idx2).*counts(idx2))/mu3(end); i=i+1; t(i)=round((mat+mbt)/2); threshold=t(i); end بگم که این الگوریتم برای ترشولدینگ استفاده میشه، اولش یک آستانه انتخاب می کنه، بعدش میانگین شدت روشنایی رو واسه قبل و بعد از آستانه ی اولیه بدست میاره میانگین این دو تا رو دوباره محاسبه می کنه. این کار رو انقد انجام میده که اختلاف آستانه قبلی با فعلی ناچیز بشه. سلام یه ورودی هم برای v_3 مشخص می کنی؟ حالا رندوم هم باشه مهم نیست، فقط ویژگی های v_3 رو هم داشته باشه. مقادیرش بین چه اعدادی هست، از چه نوع و با چه ابعادی داره؟ 3 لینک به دیدگاه
zahra jalili 746 مالک اشتراک گذاری ارسال شده در 1 تیر، ۱۳۹۳ ورودیم تصویر هست، تصویر سه بعدی با 25 تا slice. مقادیرش هم بین 0 تا 255 و ابعادش 512*512*25 1 لینک به دیدگاه
Imaaan 17059 اشتراک گذاری ارسال شده در 1 تیر، ۱۳۹۳ ورودیم تصویر هست، تصویر سه بعدی با 25 تا slice. مقادیرش هم بین 0 تا 255 و ابعادش 512*512*25 الگوریتم رو نمیشناسم، کد رو توضیح میدم. V_3 هم اینجوری بهش دادم، اعداد صحیح بین 0 تا 255 با همون ابعاد: برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید. ورود یا ثبت نام خب اول بیایم دستور hist رو ببینیم رو یه ماتریس چجوری عمل می کنه، برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید. ورود یا ثبت نام اینجا اومده یه ماتریس 10 در 3 بهمون توی خروجی داده، یعنی اومده هیستوگرام هر ستون رو توی ستون ماتریس خروجی گذاشته. هیستوگرام روی بعد اول حساب میشه. بعد میاد همین رو به cumsum میده، بازم رو بعد اول این ماتریس Cumulative sum حساب میشه: برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید. ورود یا ثبت نام یعنی روی هر ستون تصویر هستوگرام رو حساب می کنه، تو یه ماتریس 10 در 12800 قرار میده، بعد هم این هیستوگرام رو به cumsum میده. خط بعد N.*counts که درست نیست، ابعاد این دو متغیر با هم برابر نیست که بتونیم در هم ضرب کنیم، جایی رو اشتباه کردم؟ 3 لینک به دیدگاه
zahra jalili 746 مالک اشتراک گذاری ارسال شده در 1 تیر، ۱۳۹۳ ممنون، بسیار عالی رو تصویر من که ابعادشون یکی هست هر دو 10*1 هستن. فقط من متوجه نشدم centers چیکار میکنه؟ 1 لینک به دیدگاه
Imaaan 17059 اشتراک گذاری ارسال شده در 1 تیر، ۱۳۹۳ ممنون، بسیار عالی رو تصویر من که ابعادشون یکی هست هر دو 10*1 هستن. فقط من متوجه نشدم centers چیکار میکنه؟ خواهش می کنم. مگه تصویر شما 512 در 512 در 25 نیست، V_3 هم گفتین همین ابعاد رو داره دیگه، چطور پس هر دوشون 10 در 1 میشن؟ دستور hist بازه مقادیر ورودی [255 0]رو به 10 قسمت تقسیم می کنه، centers در واقع مراکز این ده بازه هست. 3 لینک به دیدگاه
zahra jalili 746 مالک اشتراک گذاری ارسال شده در 1 تیر، ۱۳۹۳ اِ ببخشید من یادم رفت بگم که تصویرم رو تبدیل به یه بردار کردم! 1 لینک به دیدگاه
Imaaan 17059 اشتراک گذاری ارسال شده در 1 تیر، ۱۳۹۳ اِ ببخشید من یادم رفت بگم که تصویرم رو تبدیل به یه بردار کردم! خواهش می کنم، خوبه ساده تر هم میشه. پس V_3 رو این شکلی در نظر می گیریم: برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید. ورود یا ثبت نام رنج مقادیر تصویر به 10 بازه تبدیل میشه، تعداد پیکسل هایی که توی هر بازه در متغیر counts قرار می گیره، مرکز 10 تا بازه هم توی متغیر N. cumsum هم که به صورت تجمعی جمع می کنه، درایه آخرش تعداد پیکسل های تصویرتون میشه. یعنی توی این خط میاد مرکز هر بازه و در تعداد پیکس های اون بازه ضرب می کنه، با هم جمع می کنه، تقسیم برتعداد پیکسل ها می کنه. برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید. ورود یا ثبت نام بعد میاد عددی که بدست آورد رو به عدد صحیح تبدیل می کنه، ایندکس بازه هایی که کوچکتر از این عدد قرار دارن رو داخل idx میذاره. به همون روشی که T رو حساب کرد، MBT رو برای همین بازه ها حساب می کنه. برای دسته دومی که بزرگتر از T هستن هم MAT رو حساب می کنه. بعد این دو تا رو میانگین می گیره و به عدد صحیح تبدیل می کنه، برابر درایه دوم بردار T قرار میده: برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید. ورود یا ثبت نام بعد داخل یه حلقه این روند رو انقدر ادامه میده تا T همگرا بشه، عددی که از این روش بدست آورده مقدار Threshold رو تعیین می کنه: برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید. ورود یا ثبت نام به جای cumsumها از sum هم می تونست استفاده کنه، فقط با اینکار کدش پیچیده تر شده، کار خاصی انجام نمیدن. 2 لینک به دیدگاه
zahra jalili 746 مالک اشتراک گذاری ارسال شده در 1 تیر، ۱۳۹۳ ممنون یه سوال دیگه؛ البته ببخشید من انقدر سوال میکنم! چرا به 10 بازه تقسیم می کنه؟ و اینکه نقش end تو تقسیم چیه؟ برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید. ورود یا ثبت نام 1 لینک به دیدگاه
Imaaan 17059 اشتراک گذاری ارسال شده در 1 تیر، ۱۳۹۳ ممنونیه سوال دیگه؛ البته ببخشید من انقدر سوال میکنم! چرا به 10 بازه تقسیم می کنه؟ و اینکه نقش end تو تقسیم چیه؟ برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید. ورود یا ثبت نام خواهش می کنم. چرا 10 بازه می گیره رو نمی دونم، ولی خود hist حالت عادی برای 10 تا بازه رو حساب می کنه، که میشه تعداد بازه های کمتر یا بیشتر رو هم باهاش حساب کرد. end آدرس درایه آخر بردار mu هستش، چون به صورت Cumulative جمع میشه، برابر تعداد هستش، گفتم sum می تونست استفاده کنه که کد هم خیلی ساده تر میشد: برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید. ورود یا ثبت نام 2 لینک به دیدگاه
zahra jalili 746 مالک اشتراک گذاری ارسال شده در 1 تیر، ۱۳۹۳ برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید. ورود یا ثبت نام الگوریتم ایزودیتا 1 لینک به دیدگاه
Imaaan 17059 اشتراک گذاری ارسال شده در 1 تیر، ۱۳۹۳ Automatic T value selection: (1) Select an initial value for T (e.g. greater than the min and less than the max intensity value). (2) Segment the image using the value of T and produce two groups of pixels. (3) Compute the mean intensity of the two groups; m1 and m2. (4) The new value for T is:T=1/2(m1+m2) (5) Repeat the above steps until convergence. الگوریتم ایزودیتا خب اینجا که چیزی درباره ی هیستوگرام و اینا نگفته، فقط گفته میانگین رو برای دو گروه حساب کنین. کد بالا میانگین رو حساب نمی کنه ولی چیزی که حساب می کنه به میانگین فکر کنم نزدیک باشه. کد نویسی اینم سخت نیست، راحت می تونین بنویسینش. 2 لینک به دیدگاه
H.MAH 0 اشتراک گذاری ارسال شده در 24 تیر، ۱۳۹۹ در در 31 خرداد 1393 در 22:55، zahra jalili گفته است : سلام دوستان من این برنامه ی ایزودیتا رو از رو نت برداشتم، الگوریتم کلی رو میدونم چیکار می کنه، ولی برنامه رو نه! ممنون میشم کمک کنید. Threshold = 0; [counts,N]=hist(V_3); i=1; mu=cumsum(counts); T(i)=(sum(N.*counts))/mu(end); T(i)=round(T(i)); idx = (N mu2=cumsum(counts(idx)); MBT=sum(N(idx).*counts(idx))/mu2(end); idx2 = logical(1-idx); mu3=cumsum(counts(idx2)); MAT=sum(N(idx2).*counts(idx2))/mu3(end); i=i+1; % new T = (MAT+MBT)/2 T(i)=round((MAT+MBT)/2); % repeat step 2 if T(i)~=T(i-1) while abs(T(i)-T(i-1))>1 idx = (N mu2=cumsum(counts(idx)); MBT=sum(N(idx).*counts(idx))/mu2(end); idx2 = logical(1-idx); mu3=cumsum(counts(idx2)); MAT=sum(N(idx2).*counts(idx2))/mu3(end); i=i+1; T(i)=round((MAT+MBT)/2); Threshold=T(i); end بگم که این الگوریتم برای ترشولدینگ استفاده میشه، اولش یک آستانه انتخاب می کنه، بعدش میانگین شدت روشنایی رو واسه قبل و بعد از آستانه ی اولیه بدست میاره میانگین این دو تا رو دوباره محاسبه می کنه. این کار رو انقد انجام میده که اختلاف آستانه قبلی با فعلی ناچیز بشه. ممنون از این کد که گذاشتید ، موید سلامت باشید لینک به دیدگاه
ارسال های توصیه شده