اطلاعیه

Collapse
No announcement yet.

Frequently Asked Questions -- مـبـاحـث و سـوالات مـتـداول

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    پاسخ : Frequently Asked Questions -- مـبـاحـث و سـوالات مـتـداول

    با سلام
    دوستان کسی پیاده سازی الگوریتم k-mean با متلب رو داره؟
    من یکی پیدا کردم ولی نتونستم ازش استفاده کنم.
    فایلش رو اینجا میزارم .اساتید متلب خواهشمندم برنامه را ملاحظه کنید و راهنمایی های لازم را ایراد فرمائید.
    :-?
    لینک دانلود:
    http://matlabdb.mathematik.uni-stuttgart.de/download.jsp?MC_ID=12&SC_ID=18&MP_ID=539

    دیدگاه


      پاسخ : Frequently Asked Questions -- مـبـاحـث و سـوالات مـتـداول

      با سلام
      اگر منظور شما از filter2 همان medfilt2 باشد. باید بگم که این یک فیلتر حذف نویز هستش که بر روی تصاویر گری عمل می کند.اما imfilter برای اعمال یک فیلتر خاص از پیش تغریف شده نظیر فیلتر میانگین یا فیلتر گوس یا لاپلاس یا ... بر روی تصویر بکار می رود.که می تواند برای مقاصدی چون بلور کردن تصویر و یا تقویت لبه و یا حذف فرکانسهای پائین تصویر و ... بکار رود.

      دیدگاه


        پاسخ : Frequently Asked Questions -- مـبـاحـث و سـوالات مـتـداول

        یک سوال

        می خواستم ببینم چگونه می شود تمامی ماتریس های مربوط به هرحرف به صورت برداری تبدیل کرد(یعنی 40*40به1*1600)

        لطفا راهنماییتان را از من دریغ نکنید(این بخشی از پایان نامم هست!)
        اگر می دانستید عوام به ندرت فکر می کنند دیگر قضاوت ها وحرف های عوام برایتان مهم نبود

        دیدگاه


          پاسخ : Frequently Asked Questions -- مـبـاحـث و سـوالات مـتـداول

          فکر می کنم دستورش در متلب وجود داشته باشه که هر ماتریسی رو تبدیل به ماتریس برداری می کنه ولی به عنوان یه کدی که همین جوری به ذهنم رسید و این کد حتما وقت گیره :

          A ماترسی 40 در 40
          B ماتریس 1600 در یک

          X=1
          for i=1:40
          for j=1:40
          B(X,1)=A(i,j)

          X=X+1
          end
          end
          انجمن طراحی مدارهای مایکرویو(فرکانس بالا)(http://www.eca.ir/forum2/index.php?board=283.0)
          انجمن شبکه های عصبی(http://www.eca.ir/forum2/index.php?board=207.0)
          *****

          دیدگاه


            پاسخ : Frequently Asked Questions -- مـبـاحـث و سـوالات مـتـداول

            نیازی به حلقه for نیست به دو دلیل
            اول اینکه خود متلب میتونه ماتریس رو تبدیل به یه بردار ستونی کنه. متاسفانه الان کتابش دستم نیست که برات نحوه انجامش رو بنویسم(کتاب آموزش متلب 6 با جلد مشکی)
            در متلب همواره توصیه شده که بجای حلفه for از قابلیت ایندکسینگ استفاده کنیم
            خب اینم کد: فرض کن ماتریسA رو داری و میخوای تبدیلش کنی به بردار B
            (B=A خب پرانتز و محتویاتش باید جلوی A نوشته بشن اما این ادیتور قبول نمیکنه واسه خودش میاره بعد از B
            حالا B یه بردار ستونیه که از پشت سر هم قرار دادن ستونهای A درست شده.
            اگه بخوای سطرهای A رو پشت سر هم ردیف کنی باید اونو اول ترانهاده کنی با A=A'
            , و اگه بخوای نتیجه هم سطری باشه باز هم باید اونو ترانهاده کنی B=B.'

            دیدگاه


              پاسخ : Frequently Asked Questions -- مـبـاحـث و سـوالات مـتـداول


              اگه میخوای ماتریس A رو به یه بردار سطری مثل B تبدیل کنی کافیه بنویسی : ( B=A(1:end

              اگر هم بخوای بردار ستونی داشته باشی میتونی ترانسپوز B را محاسبه کنی.

              دیدگاه


                پاسخ : Frequently Asked Questions -- مـبـاحـث و سـوالات مـتـداول

                با سلام
                از دستور reshape هم می توانید استفاده کنید.
                [A=[1 2 3 4 ;5 6 7 8;9 10 11 12
                (B=reshape(A',12,1
                جائی در پشت ذهنت به خاطر بسپار، که اثر انگشت خداوند بر همه چیز هست.

                دیدگاه


                  پاسخ : Frequently Asked Questions -- مـبـاحـث و سـوالات مـتـداول

                  با سلام

                  هر دو فیلتر خطی می باشند و اختلاف در 2 بعدی و چند بعدی بودنشان است.

                  filter2 یا همان فیلتر کردن دو بعدی می باشد.

                  (Y=filter2 (I, X داده های X را با فیلتر FIR دو بعدی داده شده بر I اعمال می کند. ( FIR – Finite Impulse Response یا پاسخ ضربه محدود است، که این رو یکی از دوستان کنترل و یا الکترونیک باید توضیح بدهند.) نتیجه Y با استفاده از correlationدو بعدی محاسبه شده و به همان ابعاد X است.

                  و (imfilter(I,X : فیلتری است که هم I(تصویر) و هم X(فیلتر) می توانند چند بعدی ( multidimensional ) باشند. که همان طور که دوستمون در بالا اشاره کردند می تواند هم برای Blur ، sharp, Motion ، تقویت لبه و ... استفاده شود.

                  و medfilt2 یک فیلتر میانه ، غیر خطی، دو بعدی می باشد و برای بالا بردن کیفیت تصویر و از بین بردن نویزهای فلفل نمکی (salt and pepper) استفاده می گردد و ماسکی که فیلتر میانه در نظر می گیرد؛ به صورت پیش فرض 3*3 است که می توانید آن را به دلخواه تغییر دهید.
                  جائی در پشت ذهنت به خاطر بسپار، که اثر انگشت خداوند بر همه چیز هست.

                  دیدگاه


                    پاسخ : Frequently Asked Questions -- مـبـاحـث و سـوالات مـتـداول

                    سلام دوستان
                    خطای
                    ??? Subscript indices must either be real positive integers or logicals.

                    در کد زیر
                    G2=imread('2926.jpg'
                    mar=im2double(G2);
                    [m n]=size(mar);
                    n=[0 1;1 1;1 0;1 -1;0 -1;-1 -1;-1 0;-1 1];
                    flag=1;
                    cc=[];
                    [x y]=find(mar==1);
                    x;
                    y;
                    x=min(x);
                    imx=mar(x,imx);
                    lمی دونید باید برا رفع خطا چه کارکنم؟؟؟؟
                    اگر می دانستید عوام به ندرت فکر می کنند دیگر قضاوت ها وحرف های عوام برایتان مهم نبود

                    دیدگاه


                      پاسخ : Frequently Asked Questions -- مـبـاحـث و سـوالات مـتـداول

                      با سلام

                      اگر خودتان یک بار همین کدها را اجرا نمایید به خطای .'Undefined function or variable 'imx برخورد می کنید زیرا متغییر imx در ابتدا مقداری ندارد.

                      اشکال منطقی دیگری که می توان از کدهای شما گرفت این است که: چون تصویر شما از نوع jpg می باشد در داخل یک ماتریس سه بعدی قرار می گیرد و شما در خط سوم خواستید سایز تصویر ( طول و عرض) را داخل متغییر های m و n قرار دهید که در همینجا دچار اشکال می شوید متغییر m شامل طول تصویر می شود ولی متغییر n سه برابر عرض تصویر را خواهد داشت. برای حل این مشکل به صورت زیر عمل نمایید و از متغییر k که سایز بعد سوم را در خود جای می دهد و برابر عدد 3 است، را استفاده نکنید.
                      [m n k]=size(mar);و اما خطایی که شما به آن برخورد کرده اید به این دلیل است که برای بدست آوردن عناصر یک ماتریس، از اعدادی غیر از اعداد طبیعی استفاده کرده اید.
                      متغییر imx در اینجا مقداری ندارد. ولی در برنامه اصلی خودتان مقادیری غیر از 1 2 3 4 5 6 7 ... n دارد که باعث بروز این خطا می گردد.
                      توضیح اضافه اینکه: خطاهایی که در زمان اجرای برنامه به آن برخورد می کنید در Help نرم افزار متلب، توضیح داده شده است.

                      جائی در پشت ذهنت به خاطر بسپار، که اثر انگشت خداوند بر همه چیز هست.

                      دیدگاه


                        پاسخ : Frequently Asked Questions -- مـبـاحـث و سـوالات مـتـداول

                        ببخشید چه جوری می تونم از تو helpخطا را برطرف کنم؟؟؟؟؟؟؟؟
                        میشه این کدو اجرا بگیرید بم بگید چه کار باید بکنم

                        mar=im2double(G2);
                        [m n p]=size(mar) ;
                        n=[0 1;1 1;1 0;1 -1;0 -1;-1 -1;-1 0;-1 1];
                        flag=1;
                        cc=[];
                        [x y]=find(mar==1);
                        x;
                        y;
                        x=min(x);
                        imx=mar(x,imx);
                        y=min(find(imx==1));
                        first=[x y];
                        first
                        dir=7;
                        while flag==1
                        tt=zeros(1,8);
                        ndir=mod(dir+7,8);
                        for i=0:7
                        j=mod(ndir+i,8)+1;
                        tt(i+1)=mar(x+n(j,1),y+n(j,2));
                        end
                        d=min(find(tt==1));
                        dir=mod(ndir+d-1,8);
                        cc=[cc,dir];
                        x=x+n(dir+1,1);
                        y=y+n(dir+1,2);
                        if x==first(1) && y==first(2)
                        flag=0;
                        end
                        end

                        % the output cc contain the chain code س? س? خروج? حاو? کد ها? زنج?ره ا?

                        ممنون
                        اگر می دانستید عوام به ندرت فکر می کنند دیگر قضاوت ها وحرف های عوام برایتان مهم نبود

                        دیدگاه


                          پاسخ : Frequently Asked Questions -- مـبـاحـث و سـوالات مـتـداول

                          با سلام
                          G2=imread('ECA-101114221723.JPG'
                          mar=im2double(G2);
                          n=[0 1;1 1;1 0;1 -1;0 -1;-1 -1;-1 0;-1 1];
                          flag=1; cc=[]; dir=7;
                          [Po(1, Po(2,]=find(mar(:,:,1)==0);
                          x=min(Po(1,);
                          y=Po(2,(find(Po(1,==x, 1 )));
                          first=[x y];
                          fprintf('%s%d%s%d%s\n','Start Point=(',first(1),',',first(2),&#03 9&#039
                          while flag==1
                          tt=zeros(1,8);
                          ndir=mod(dir+7,8);
                          for i=0:7
                          j=mod(ndir+i,8)+1;
                          tt(i+1)=mar(x+n(j,1),y+n(j,2));
                          end
                          d=find(tt==0, 1 );
                          dir=mod(ndir+d-1,8);
                          cc=[cc,dir];
                          x=x+n(dir+1,1);
                          y=y+n(dir+1,2);
                          if x==first(1) && y==first(2)
                          flag=0;
                          end
                          end

                          این برنامه، الگوریتمcode Chain می باشد. یک مقداری این کد را برای شما تصحیح کردم.
                          همانطور که می دانید Chain Code برای نمایش مرز با استفاده از یک دنباله پاره خط های متصل که طول و جهت مشخصی دارند، به کار می رود. و این برنامه مبتنی بر اتصال هشت گانه می باشد. که جهت ها از روی ماتریس n مشخص شده است.

                          معمولاً به دو دلیل مهم این روش به کار نمی رود:
                          1) Chain code حاصل بسیار طولانی می گردد.
                          2) هر اغتشاش کوچک در مرز، که می تواند ناشی از نویز یا بخش بندی ناقص باشد باعث تغییراتی در مرز می شود که ممکن است هیچ ارتباطی با شکل مرز نداشته باشد.

                          یکی از راه حلها این است که به جای یک پیکسل برای انتخاب مرز از چند پیکسل کنار هم استفاده شود. که تا حدودی مسئله نویز را پوشش می دهد.
                          یک تصویر را که این برنامه روی آن اجرا شده است را در زیر گذاشته ام.
                          http://www.ecapic.ir/image2/ECA-101114221723.jpg
                          [hr]
                          و اینکه چطور می توانید از help متلب استفاده کنید. بسیار ساده است کافی است در Help، عبارت خطای نمایش داده شده را جستجو نمایید.
                          جائی در پشت ذهنت به خاطر بسپار، که اثر انگشت خداوند بر همه چیز هست.

                          دیدگاه


                            پاسخ : Frequently Asked Questions -- مـبـاحـث و سـوالات مـتـداول

                            خیلی ممنونم از لطفتون وجوابی که دادید

                            یه سوالی ازتون دارم حالا من می خام عدد کد زنجیره ای را در ماتریسی ذخیره کنم در واقع این عدد همان
                            the output cc contain the chain code است درسته!!!Start Point که در خروجی چاپ کردیم نقشی نداره !!


                            بازم ممنونم

                            اگر می دانستید عوام به ندرت فکر می کنند دیگر قضاوت ها وحرف های عوام برایتان مهم نبود

                            دیدگاه


                              پاسخ : Frequently Asked Questions -- مـبـاحـث و سـوالات مـتـداول

                              درسته، متغییر cc همان بردار Chain code می باشد و Start Point نقطه آغازین روی تصویر است. که اولین پیکسل مشکی در بالا و سمت چپ تصویر میباشد و با دنبال کردن مرز در جهت حرکت عقربه ساعت CW در نهایت به همان نقطه آغازین بر می گردد.
                              جائی در پشت ذهنت به خاطر بسپار، که اثر انگشت خداوند بر همه چیز هست.

                              دیدگاه


                                پاسخ : Frequently Asked Questions -- مـبـاحـث و سـوالات مـتـداول

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

                                دیدگاه

                                لطفا صبر کنید...
                                X