اطلاعیه

Collapse
No announcement yet.

segmentation

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

    segmentation

    سلام

    چطور میشه یه تصویر رو توی متلب به بلوک های 8*8 تقسیم کرد؟

    میخوام یه تصویر رو بدم به متلب و بعد اون تصویر رو به بلوک هایی 8*8 پیکسل تقسیم کنم.و بعدش از هر بلوک DCT بگیرم.

    ممنون
    فقر ، شب را " بي غذا " سر كردن نيست ................ فقر ، روز را " بي انديشه" سر كردن است

    #2
    پاسخ : segmentation

    سلام
    دستورات رو تو مطلب ببین

    R=round(r/4); % pixon
    C=round(c/4);
    r1=round(r/R);
    c1=round(c/C);
    cel=cell(R,C);
    mpix=zeros(R,C,3);
    for i=1:R
    for j=1:C
    cel{i,j}=imcrop(img,[(j-1)*c1+1 (i-1)*r1+1 c1-1 r1-1]);
    mpix(i,j,=mean(mean(cel{i,j}));
    end
    end
    اگه مشکلی بود بگو تا بیشتر توضیح بدم
    بنظر میرسه میخوای براساس بافت قطعه بندی کنی
    object tracking: http://www.eca.ir/forum2/index.php?topic=88447.msg547644#msg547644

    any help or opinion on robot mapping will be welcome

    دیدگاه


      #3
      پاسخ : segmentation

      ممنون.

      اصل کاری که میخوام انجام بدم اینه که یه تصویر رو از زمینه جدا کنم.حالا باید از طریق تفاوت فرکانسی بخش های مختلف تصویر این کار رو انجام بدم.به همین دلیل باید اول تصویر رو به بلوک های 8*8 تقسیم کنم و فرکانس هر بلوک رو بدست بیارم و بعد از مقایسه و...استفاده کنم.
      فقر ، شب را " بي غذا " سر كردن نيست ................ فقر ، روز را " بي انديشه" سر كردن است

      دیدگاه


        #4
        پاسخ : segmentation

        اگه موافقید عکس و mfile که تا به حال نوشتینو اینجا قرار بدین تا به کمک دوستان مسئله رو حل کنیم
        object tracking: http://www.eca.ir/forum2/index.php?topic=88447.msg547644#msg547644

        any help or opinion on robot mapping will be welcome

        دیدگاه


          #5
          پاسخ : segmentation

          نوشته اصلی توسط DIP
          اگه موافقید عکس و mfile که تا به حال نوشتینو اینجا قرار بدین تا به کمک دوستان مسئله رو حل کنیم
          این عکس:
          http://1.vped.comeze.com/images/b36809566dc0.jpg

          هدف اینه که یوزپلنگ از تصویر زمینه جدا بشه.

          اما mfile راستش من هنوز مرحله اول هستم و کلا تو همین قسمت تقسیم تصویر گیر کردم!! :sad:
          فقر ، شب را " بي غذا " سر كردن نيست ................ فقر ، روز را " بي انديشه" سر كردن است

          دیدگاه


            #6
            پاسخ : segmentation

            در واقع در مرحله اول میخوام همچین کاری که رو این عکس انجام شده رو انجام بدم!

            http://1.vped.comeze.com/images/caf41d62364d.jpg
            فقر ، شب را " بي غذا " سر كردن نيست ................ فقر ، روز را " بي انديشه" سر كردن است

            دیدگاه


              #7
              پاسخ : segmentation

              نوشته اصلی توسط DIP
              سلام
              دستورات رو تو مطلب ببین

              R=round(r/4); % pixon
              C=round(c/4);
              r1=round(r/R);
              c1=round(c/C);
              cel=cell(R,C);
              mpix=zeros(R,C,3);
              for i=1:R
              for j=1:C
              cel{i,j}=imcrop(img,[(j-1)*c1+1 (i-1)*r1+1 c1-1 r1-1]);
              mpix(i,j,=mean(mean(cel{i,j}));
              end
              end
              اگه مشکلی بود بگو تا بیشتر توضیح بدم
              بنظر میرسه میخوای براساس بافت قطعه بندی کنی
              دستور round برای گرد کردن هست اما چرا r/4/؟
              بخش حلقه for رو متوجه میشم واسه چیه اما قبلی هاش رو نه!:(
              فقر ، شب را " بي غذا " سر كردن نيست ................ فقر ، روز را " بي انديشه" سر كردن است

              دیدگاه


                #8
                پاسخ : segmentation

                نوشته اصلی توسط (فرشته)
                سلام

                چطور میشه یه تصویر رو توی متلب به بلوک های 8*8 تقسیم کرد؟

                میخوام یه تصویر رو بدم به متلب و بعد اون تصویر رو به بلوک هایی 8*8 پیکسل تقسیم کنم.و بعدش از هر بلوک DCT بگیرم.
                با سلام ....

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

                http://www.eca.ir/forum2/index.php?topic=50451.0



                کد PHP:
                clc

                clear

                Image 
                imread('gol narges.jpg') ;

                Image=rgb2gray(Image);

                [
                c]=size(Image

                for 
                : ( mod(size(Image,1),8) )
                  
                    for 
                : ( mod(size(Image,2),8) )
                    
                        
                I(i,j) = Image(i,j) ;
                    
                  
                end
                  
                end

                row  
                size(I,1) / ;

                column size(I,2) / ;


                for 
                row
                  
                    r
                (i) = ;
                  
                end

                for column
                  
                    c
                (i) = ;
                  
                end


                I2cell 
                mat2cell(I,r,c) ; 


                توضیح برنامه :

                خوب اولین کاری که باید انجام بدید این هست که باید سطر و ستون های ماتریس تصویر طوری تغییر بدید که به عدد 8 بخش بذیر باشه چون میخواید هر بلوکتون 8*8 باشه خوب این کار خیلی راحت هست . کافی هست باقی مانده سطر و ستون تقسیم بر 8 رو از سطر و ستون اصلی کم کنید با این کار در واقع یه تعداد از سطر و ستون ها دور ریخته میشه که فکر کنم چاره ای جز این هم نباشه ولی خوب روی تصو.یر نهایی چندان محسوس نیست .
                حالا ماتریسی که از سطر و ستونش حذف شده رو پیکسل به پیکسل میخونیم و داخل یه ماتریس جدید دیگه قرار میدیم . که توی برنامه اسمش I هست در واقع ماتریس I ماتریسی هست که سطر و ستونش بر عدد 8 بخش پذیر هست .

                در ادامه سطر و ستون ماتریس I بر عدد 8 تقسیم میشه و داخل دو متغیر row و colummn ریخته میشه . در ادامه دو تا متغیر به نام های r و c در نظر گرفته شده که در واقع یک بردار سطری هست که تمامی اعداد این بردار برابر با عدد 8 در نظر گرفته میشه علتش هم به خاطر این هست که میخوام بلوک هامون 8*8 باشه از طرفی دیگه هم میخوایم از تابع mat2cell استفاده کنیم عملکرد این تابع رو روی شکل بخوایم بگیم این جوری هست :




                این هم نمایی از متغیر I2cell ؛ که تصویر رو به بلوک های 8*8 تقسیم کرده :


                مصادیق اظهار محبت به همسر
                بررسی مسائل جنسی در زندگی زناشویی(فایل صوتی)
                ویژگی های خانواده سالم - مصادیق احترام (فایل صوتی)
                اثر قصه گویی برای کودکان

                دیدگاه


                  #9
                  پاسخ : segmentation

                  نوشته اصلی توسط (فرشته)
                  دستور round برای گرد کردن هست اما چرا r/4/؟
                  بخش حلقه for رو متوجه میشم واسه چیه اما قبلی هاش رو نه!:(
                  با سلام ...

                  به نظر من به جای 4 باید عدد 8 رو بنویسید اخه قرار شما به بلوک های 8 تایی تقسیم کنید نه 4 تایی یعنی برنامه مثل زیر بشه . در واقع سطر و ستون بعد از تقسیم به عدد 8 گرد میشه .
                  ولی به نظرم یه جای کار میلنگه :sad: ساختار cel رو که نگاه کنید بعضی درایه هاش هیچی توش نیست که نباید این جوری باشه .
                  کد PHP:
                  clc

                  clear all

                  img
                  =imread('gol narges.jpg');

                  [r c ]=size(img)

                  R=round(r/8)  

                  C=round(c/8)

                  r1=round(r/R)

                  c1=round(c/C)

                  cel=cell(R,C);

                  mpix=zeros(R,C,3);

                  for 
                  i=1:R
                    
                    
                  for j=1:C
                      
                     cel
                  {i,j}=imcrop(img,[(j-1)*c1+(i-1)*r1+1 c1-1 r1-1]);
                     
                     
                  mpix(i,j,:)=mean(mean(cel{i,j}));
                     
                    
                  end
                  end 
                  مصادیق اظهار محبت به همسر
                  بررسی مسائل جنسی در زندگی زناشویی(فایل صوتی)
                  ویژگی های خانواده سالم - مصادیق احترام (فایل صوتی)
                  اثر قصه گویی برای کودکان

                  دیدگاه


                    #10
                    پاسخ : segmentation

                    سلام
                    فکر می کنم این برنامه کامل باشه

                    کد:
                    clc
                    clear all
                    close all
                    img=imread('tiger.jpg');                       % Read Image
                    img=(1/3)*(double(img(:,:,1))+double(img(:,:,2))+double(img(:,:,3))); % Illumination
                    [R C]=size(img);                           % Image Size
                    bh=8;bw=8;                              % Block Size
                    r=floor(R/bh);c=floor(C/bw);                     % Cell Size
                    cel=cell(r,c);
                    for i=1:r                               % Put Blocks in Cells
                      for j=1:c
                       cel{i,j}=imcrop(img,[(j-1)*bw+1 (i-1)*bh+1 bw-1 bh-1]);
                      end
                    end
                    object tracking: http://www.eca.ir/forum2/index.php?topic=88447.msg547644#msg547644

                    any help or opinion on robot mapping will be welcome

                    دیدگاه


                      #11
                      پاسخ : segmentation

                      نوشته اصلی توسط DIP
                      سلام
                      فکر می کنم این برنامه کامل باشه

                      کد:
                      clc
                      clear all
                      close all
                      img=imread('tiger.jpg');                       % Read Image
                      img=(1/3)*(double(img(:,:,1))+double(img(:,:,2))+double(img(:,:,3))); % Illumination
                      [R C]=size(img);                           % Image Size
                      bh=8;bw=8;                              % Block Size
                      r=floor(R/bh);c=floor(C/bw);                     % Cell Size
                      cel=cell(r,c);
                      for i=1:r                               % Put Blocks in Cells
                        for j=1:c
                         cel{i,j}=imcrop(img,[(j-1)*bw+1 (i-1)*bh+1 bw-1 bh-1]);
                        end
                      end
                      با سلام ....

                      با تشکر از پاسختون ....

                      خط 5 برنامه شما هدفتون دقیقا چی بوده ؟ اخه اگه تصویر رو بعد از خط 5 ام ببینید مشاهده میشه که تصویر کاملا روشن شده و در نتیجه تصویری که بلوک بندی دارید میکنید تصویر اصلی نیست .....اگه هم هدفتون این بوده که تصویر رو به rgb تبدیل کنید همون دستور rgb2gray متلب کافی هست ....


                      یه سوالی که الان برای خودم پیش اومده فرض کنیم تصویر ورودی رنگی باشه .و به گری تیدیل نکنیم . یعنی ما 3 تا ماتریس دویعدی R ؛ G ؛ B داریم . پس باید برای هر سه این ها بلوک بندی 8*8 صورت بگیره درسته ؟ اینجوری باید باشه ؟؟

                      منظورم این هست که باید یک حلقه for دیگه باشه که 3 بار for که شما نوشتید رو برای R G B تکرار کنه ....حالا خودم هم نمی دونم همین جوری سوال برام سوال پیش اومد .... :sad:
                      مصادیق اظهار محبت به همسر
                      بررسی مسائل جنسی در زندگی زناشویی(فایل صوتی)
                      ویژگی های خانواده سالم - مصادیق احترام (فایل صوتی)
                      اثر قصه گویی برای کودکان

                      دیدگاه


                        #12
                        پاسخ : segmentation

                        با سلام ....

                        من این جوریش کردم ولی خطا میده ...

                        کد PHP:
                        clc

                        clear all

                        close all

                        img1
                        =imread('10-angoshti.jpg'); 

                        %figure(1)

                        %
                        imshow(img1)

                        %
                        img2=rgb2gray(img1); 

                        %
                        figure(2)

                        %
                        imshow(img2)

                        [
                        R C D]=size(img1); 

                        bh=8;bw=8

                        r=floor(R/bh);c=floor(C/bw); 

                        %
                        cel=cell(r,c);

                        for 
                        g=1:D
                          
                          
                        for i=1:
                          
                            
                        for j=1:c
                            
                              cel
                        (i,j,g)=imcrop(img1(i,j,g),[(j-1)*bw+(i-1)*bh+1 bw-1 bh-1]);
                           
                            
                        end
                          
                         end

                        end 
                        مصادیق اظهار محبت به همسر
                        بررسی مسائل جنسی در زندگی زناشویی(فایل صوتی)
                        ویژگی های خانواده سالم - مصادیق احترام (فایل صوتی)
                        اثر قصه گویی برای کودکان

                        دیدگاه


                          #13
                          پاسخ : segmentation

                          کاری که خانوم فرشته می خوان انجام بدن گرفتن DCT از اون بلوک هاست
                          تا از DCT بعنوان ویژگی استفاده کنن و با استفاده از DCT (محتوای فرکانسی) بتون بلوک ها رو کلاسه بندی کنن
                          اینکار به نوعی زیر مجموعه ی از مبحث بافت (texture) در تصویر هست
                          برای تعیین بافت هم تنها از ماتریس Illumination (روشنایی) استفاده می شه
                          و خط 5 مربوط به محاسبه ی روشنایی تصویر هست چون همونطور که میدونیم:
                          کد PHP:
                           I=(1/3)*(R+G+b

                          الان چک کردم rgb2gray هم همین کارو می کنه مرسی از تذکرتون
                          فقط چون فرمت double مورد نظر ماست آخر باید double هم کنیم، یعنی خط 5 می تونست به صورت زیر هم باشه :
                          کد PHP:
                          img=double(rgb2gray(img)) 
                          object tracking: http://www.eca.ir/forum2/index.php?topic=88447.msg547644#msg547644

                          any help or opinion on robot mapping will be welcome

                          دیدگاه


                            #14
                            پاسخ : segmentation

                            اینم همون برنامه با یه روش سریع تر :arrow:
                            کد PHP:
                            img=imread('tiger.jpg');            % Read Image
                            img=rgb2gray(img);               % Illumination
                            [R C]=size(img);                % Image Size
                            bh
                            =8;bw=8;                   % Block Size
                            r
                            =floor(R/bh);c=floor(C/bw);          % Cell Size
                            img
                            =img(1:r*bh,1:c*bw);            % Round &ampResize Image 
                            rc
                            =zeros(1,r)+bh;cc=zeros(1,c)+bw;       % Put Blocks in Cells                           
                            cel
                            =mat2cell(double(img),rc,cc); 
                            object tracking: http://www.eca.ir/forum2/index.php?topic=88447.msg547644#msg547644

                            any help or opinion on robot mapping will be welcome

                            دیدگاه


                              #15
                              پاسخ : segmentation

                              حالا میشه راهنمایی کنید که چجوری میشه بلوک 8*8را با بلوک 8*8یک ماتریس دیگه مقایسه کرد و درصورت تساوی هر بلوک اون رو در ماتریس سوم ذخیره کنیم؟؟؟ :wow:

                              دیدگاه

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