# السلام عليكم



## admeral (10 ديسمبر 2007)

انا طالب فى الهندسة الميكاترونكس ولقد طلب من مشروع عند كيف الربوت يستطيع تحديد الاشكال و الامساك بهذة الاشكال وذالك عن طريق استخدام digital image processing using matlab 
i want help a bout this project


----------



## علي عباس جاسم (10 ديسمبر 2007)

السلام عليكم

اولا يجب تحديد الشكل المطلوب مسكه من الروبوت ومن ثم اخذ له صورة وخزنها في الحاسبة واستدعائها بالبرنامج ماثلاب وعند قدوم اي جسم اخر تؤخذ له صورة ومن ثم يتم مقارنتها بالاصلية ان كانت واحدة او اكثر واذا كان ناتج الطرح صفر او ثريشوالد قليل اذا هي نفس الشكل الستند ...... اما اذا كان الناتج مخالف فان الجسم ليس هو المطلوووب وهنالك بالماثلاب اعازات خاصة بالايج دتكشن وتحديد الجسم وشكلة وخزن الصور وطرح صورة من اخرى ..........................ارجو قرائة الماثلاب امج بوكس بعناية بعد ذلك يمكن لك بناء برنامج كامل لقراءة الصورة الاصلية كماتركس ومن ثم قرائة الشكل الجديد ايضا كماتركس وبعد ذلك طرح الصورتين بكسل مقابل بكسل لاستخراج الناتج النهائي وبعد ذلك الرجوع للصورة الثانية وتحديد الحواف لتحديد شكل الجسم 


مع الشكر والتقدير 

 اسف للازعاج سلامي


علي عباس جاسم ميكاترونيكس عراق


----------



## admeral (14 ديسمبر 2007)

السلام عليكم اريد ان اسلئلك كيف تقدر على حدف الخلفية من الصورة باستخدام الماتلاب اريد من ان ترسل لى الاوامر التى استخدمتها فى الماتلاب وسوف اكون متشكر لك


----------



## علي عباس جاسم (14 ديسمبر 2007)

السلام عليكم 

طبعا اني مو خبرة عالية بالامج مجرد عندي معلومات زينه بهذا المجال عالعموووم اعتقد ما متاكد يجوز اكو غير طريقة افضل ؟؟ المهم الطريقة اللي ببالي هي انه تاخذ او تخزن لقطة للخلفية بدون وجود الشي اللي تريده ومن ثم تاخذ القطة المطلوبة اللي بيه الجسم المطلوب وبوجود الخلفية ومن ثم تقرائه الصورتين بالماثلاب وتخزن كمصفوفة ومن ثم تطرح صورة من صورة اذا الناتج بكسل مقابل بكسل من الصورة الولى والثانية اذا كان ناتج الطرح للكري لفل صفر معناهه نفسه وتكدر تخلي شرط برمجي اذا كان الناتج صفر خليه يساوي رقم معينن مثلا تريد الخلفية سودة اكتبه يساوي صفر او ابيض مثلا انت مستخدم 1024 في 1024 تكتبه يساوي 1024 حسب المطلوب وبهذا تستطيع الخروج بصورة جديدة تحمل الجسم المطلوب فقط 

هذي وجهة نظري ؟؟ والطرح ايعاز عادي بين بكسل وبكسل بداخل لوب برمجي مثلا جي اوف الاي _ جي اوف الا بي يساوي الصورة الجديدة علما ان الاي والبي وحدة الصورة بس الخلفية والاخرى مع الجسم 


واسف للتقصير والازعاج وهذا كل اللي اكدر افيدك بيه 


والسلام عليكم ورحمة الله وبركاته 

علي عباس جاسم عراق ميكاترونيكس


Read picas
READ PICS B 
For I =0 : 256 
For j =0 : 256
A(i.j)= the name of original image for exmple A
End 
End
For k =0 : 256 
For l =0 : 256
B(I,j) = the image with required body
End 
End 
For I =0 : 256 
For j =0 : 256
C(I,j)=a(I,j)-b(I,j)
End
End


وهذا البرنامج مو صحيح بس مجرد حسب اللي اتذكره انت انطلق من هذا الاتجاه ................واني بالخدمة لكل احفاد الميكاترونيكس
وارجو قرائة التول بوكس الخاص بالامج لان مهم جدااا واكو اساتذة هواي يمشون عليه وسواحهم اقوياء بالامج والفضل للماثلاب اصلااا فانت اقره الايعازات قبل البرمجة مع الشكر والتقدير


اخوكم علي عباس iraq mechatronics


----------



## علي عباس جاسم (14 ديسمبر 2007)

im contact my freind to help you too he is very good in programming better me thanks Ali A bbas iraq


----------



## علي عباس جاسم (14 ديسمبر 2007)

شونك اخي الكريم هذا برنامج منفذ ممكن ان يفيدك تقنية اسمه ليبلنك برنامج جاهز راح من تقرة الصورة اللي مقروئة واللي هي ابعادهه قليلة وتشووف شون تحددت الابعاد والحدود ممكن تستفاد منه اكيد ...وهذا البرنامج نفذته على ماثلاب 6.5 وماثلاب 7 كذلك مابيه اشكال مع الف سلامة بالتوفيق


% labeling program
% the bacground will be white and objects blaks so BW is complemented
% The program is designed by Mr. Firas Ali Jawad 2005/2006
clc;
clear;
BW = [0 0 0 0 0 0 0 0;
0 1 1 0 0 1 1 1;
0 1 1 0 0 0 1 1;
0 1 1 0 0 0 0 0;
0 0 0 1 1 0 0 0;
0 0 0 1 1 0 0 0;
0 0 0 1 1 0 0 0;
0 0 0 0 0 0 0 0];
BW=(~BW);
[x y]=size(BW);
% b is labling matrix
b(1:x,1:y)=0;
% objct is a matrix for equivalent classes
objct(1:x,1:y)=0;
L=0;
for i=2:x;
for j=2:y;
if BW(i,j)==0;
if ((b(i,j-1)~=0)&&(b(i-1,j)==0));
b(i,j)=b(i,j-1);
elseif ((b(i,j-1)==0)&&(b(i-1,j)~=0));
b(i,j)=b(i-1,j);
elseif ((b(i,j-1)==b(i-1,j))&&(b(i,j-1)~=0));
b(i,j)=b(i,j-1);
elseif ((b(i,j-1)~=0)&&(b(i-1,j)~=0))&&((b(i,j-1)~=b(i-1,j)));
b(i,j)=b(i-1,j);
if (b(i,j-1)< b(i-1,j));
objct(i,j-1)=b(i,j-1);
objct(i-1,j)=b(i,j-1);
else
objct(i,j-1)=b(i-1,j);
 objct(i-1,j)=b(i-1,j);
end;
else;
L=L+1;
b(i,j)=L;
end;
end;
end;
end;
for i=2:x;
for j=2:y;
if(objct(i,j-1)==objct(i-1,j))&&(objct(i-1,j)~=0);
b(i-1,j)=objct(i-1,j);
b(i,j-1)=objct(i-1,j);
end;
end;
end;
RGB = label2rgb(b, @jet, 'k');
imshow(RGB,'notruesize')


----------



## علي عباس جاسم (14 ديسمبر 2007)

this is other excuted program for edge detection ......................Ali Abbas 


JJ= imread('cameraman.tif');
[x y]=size(JJ);
KK=double(JJ);
m=0;
for i=2:x-2;
m=m+1;
n=0;
for j=2:y-2;
n=n+1;
s1=-KK(i-1,j-1)-2*KK(i-1,j)-KK(i-1,j+1)+KK(i+1,j-1)+2*KK(i+1,j)+KK(i+1,j+1);
s2=-KK(i-1,j-1)+KK(i-1,j+1)-2*KK(i,j-1)+2*KK(i,j+1)-KK(i+1,j-1)+KK(i+1,j+1);
s(m,n)=sqrt(s1^2+s2^2);
if(s1==0)
a(m,n)=(22/14);
else
a(m,n)=atan(s2/s1);
end
end;
end;
max=0;
for i=1:x-3;
for j=1:y-3;
if(s(i,j)>max);
max=s(i,j);
end;
end;
end;
s=double(s);
max=double(m);
for i=1:x-3;
for j=1:y-3;
if((max-s(i,j))<20)
s(i,j)=0;
else
s(i,j)=255;
end;
end;
end;
s=uint8(s);
subplot(2,1,1),imshow(JJ);
subplot(2,1,2),imshow(s);


----------



## مروان20 (14 ديسمبر 2007)

الله يساعدك فيما تبحث عنه بس الرجاء لو وصلت الي شئ ان تخبرنا به


----------



## admeral (15 ديسمبر 2007)

السلام عليكم ورحمه الله وبركاته اريد ان اسكركم جميعا على الرد وانا اقدرت ان اشيل الصورة من الخلفيه لكن لاما اصرحها من الصورة الاصيله يحكيلى انه لم يقدر لان الابهاد تبع الصورة الاصليه هى 480x640x3 واما الصورة التى اصبحت بعد تنفيذ الاوامر هى الابعاد 480x640 فحاولت ان اضيف الى المصفوقه البعد التالت لكن لم اقد ممكن تساعدونى


----------

