انجمن سایت کلیدستان


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
محاسبه sum of squared distances دو تصویر غیر هم سایز

محاسبه sum of squared distances دو تصویر غیر هم سایز

#1
سلام. 
برای محاسبه SSD یا sum of squared distances دو تصویر غیر هم سایز چه دستوری در متلب وجود داره؟؟ اگر دو  تصویر هم سایزباشند فکر کنم روش زیر درست باشه

کد:
ssd = sum(sum((template-image)^2));

ولی برای بدست آوردن SSD یا SAD دو تصویر غیر هم سایز راهی پیدا نکردم. چطور میشه فرمولش رو پیاده سازی کرد؟ ممنون میشم اگه کسی راهی میدونه کمک کنه
پاسخ

محاسبه sum of squared distances دو تصویر غیر هم سایز

#2
متاسفانه کسی انگار جواب نمیده ولی در هر صورت من سوالمو یه جور دیگه می پرسم من برای اینکه بتونم دو تا تصویر رو از هم کم کنم که یکی تصویر چشمه و یکی کل صورت باید تصویر چشم رو پیکسل به پیکسل از اول تصویر صورت مقایسه کنم و جلو برم یعنی در هر مقایسه از تصویر صورت یک پچ به اندازه پچ چشم بگیرم و این دو رو از هم کم کنم حالا مشکل من اینکه که حلقه های for برای اینکار رو بلد نیستم چجوری بنویسم من دستور زیر رو نوشتم


کد:
a='C:\Users\Documents\MATLAB\exercise 3 template matching\einstein.jpg';
b=imread(a,'jpg');
image0=rgb2gray(im2double(b));
%figure(1);imshow(image0);
[ch1,cw1]=size(image0);
image=image0;

c='C:\Users\Documents\MATLAB\exercise 3 template matching\eye template.jpg';
d=imread(c,'jpg');
template0=rgb2gray(im2double(d));
%figure(2);imshow(template0);
[cht,cwt]=size(template0);
template=template0;

SSD=0

temp=0;
for i=1:ch1
    for j=1:cw1
        for i=1:cht
            for j=1:cwt
                temp=temp+template(i,j);

            end
        end
    end
end
SSD=sum(sum(temp-template).^2);

figure(50);imshow((SSD));

که هر بار اجراش می کنم به  جای تصویر یک نقطه سفید بهم نشون میده میشه لطفا کمک کنید بفهمم اشتباهم کجاست؟؟ منظور از template همون پچ چشمه،تصویر ورودی اول همون تصویر کل صورته تو حلقه for  سعی کردم یه پچ جدید به سایز پچ چشم از صورت بگیرم و مشکل همینجاست
ممنون
پاسخ

محاسبه sum of squared distances دو تصویر غیر هم سایز

#3
سلام.
بخش زیر از کدهاتون غلط است :

کد:
for i=1:ch1
     for j=1:cw1
         for i=1:cht
             for j=1:cwt
                 temp=temp+template(i,j);

             end
         end
     end
end

شما 4 حلقه تو در تو تعریف کرده اید که نام پارامترهای حلقه، دو به دو، یکسان می باشد. نمی دانم هدفتان چه بوده است، اما در حلقه های تو در تو، نباید پارامترهای حلقه با نام یکسان در نظر بگیریم، زیرا نتیجه، غلط می شود.
همچنین به بخش زیر از کدها توجه کنید :

کد:
SSD=sum(sum(temp-template).^2);

نتیجه عبارت بالا، یک عدد است (با توجه به استفاده از دستور sum) و به همین دلیل است که در شکل خروجی، تنها یک نقطه رسم می شود.

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط HodaAI

محاسبه sum of squared distances دو تصویر غیر هم سایز

#4
متوجه شدم..ممنون از پاسختون ..
پاسخ
 سپاس شده توسط admin ، شماره مجازی امارات ، تلگرام ضد فیلتر 2023


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان