سلام.
برای محاسبه SSD یا sum of squared distances دو تصویر غیر هم سایز چه دستوری در متلب وجود داره؟؟ اگر دو تصویر هم سایزباشند فکر کنم روش زیر درست باشه
کد:
ssd = sum(sum((template-image)^2));
ولی برای بدست آوردن SSD یا SAD دو تصویر غیر هم سایز راهی پیدا نکردم. چطور میشه فرمولش رو پیاده سازی کرد؟ ممنون میشم اگه کسی راهی میدونه کمک کنه
متاسفانه کسی انگار جواب نمیده ولی در هر صورت من سوالمو یه جور دیگه می پرسم من برای اینکه بتونم دو تا تصویر رو از هم کم کنم که یکی تصویر چشمه و یکی کل صورت باید تصویر چشم رو پیکسل به پیکسل از اول تصویر صورت مقایسه کنم و جلو برم یعنی در هر مقایسه از تصویر صورت یک پچ به اندازه پچ چشم بگیرم و این دو رو از هم کم کنم حالا مشکل من اینکه که حلقه های 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 سعی کردم یه پچ جدید به سایز پچ چشم از صورت بگیرم و مشکل همینجاست
ممنون
سلام.
بخش زیر از کدهاتون غلط است :
کد:
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) و به همین دلیل است که در شکل خروجی، تنها یک نقطه رسم می شود.
متوجه شدم..ممنون از پاسختون ..