• 0
عبير22

ارجو المساعدة في ماتلاب

سؤال

السلام عليكم,,, اخواني ارجو مساعدتي,, مطلوب انشاء صورة شطرنج ملون في الماتلاب,,انا عملت الكود بس معرفت اربط مع دالة rand()

Screenshot.jpg

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

15 إجابة على هذا السؤال .

  • 0

الكود الذي وضعتيه يعلمك كيف تنشئين مصفوفة أصفار (3 مصفوفات بحجم 640x480):

rgbImage = zeros(640, 480, 3, 'uint8');


كيف تفصلين مركبات الصورة RGB (أو أي مصفوفة عموماً) إلى ثلاث مصفوفات بثلاثة متغيرات، اجراء تعديلات عليها واعادة دمجها، أنت لست بحاجة لإتباع هذه الخطوات في كل كود تكتبينه.

إذا انت مصرة على استخدام cat، يمكنك كتابة مثلاً:

widthHeight = 1024;
squareSize = 64;
squares = widthHeight / squareSize;

redChannel = uint8(255 * rand([squares squares]));      % 1
greenChannel = uint8(255 * rand([squares squares]));    % 2
blueChannel = uint8(255 * rand([squares squares]));     % 3
image = cat(3, redChannel, greenChannel, blueChannel);  % 4
image = imresize(image, squareSize, 'nearest');
imshow(image);

خطوة الـzeros لن يكون لها أي فائدة لأن تلك القيمة لن تستخدم، الأربع الأسطر كان يمكن اختصارها بسطر واحد:

image = uint8(255 * rand([squares, squares, 3]));



			
		
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

رقعة الشطرنج مكونة من لونين فقط، لماذا كل هذه الألوان

و لماذا تستعمل الدالة رند هنا من الأساس

تستعمل لتوليد مصفوفة ذات قسم عشوائية rand

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اخي هدا المطلوبة ان تكون ملونة بالوان عشوائية وبستخدام دالة الراند

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
12 ساعه مضت , kenham said:

رقعة الشطرنج مكونة من لونين فقط، لماذا كل هذه الألوان

و لماذا تستعمل الدالة رند هنا من الأساس

تستعمل لتوليد مصفوفة ذات قسم عشوائية rand

اخي هدا المطلوبة ان تكون ملونة بالوان عشوائية وبستخدام دالة الراند

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

rand ستعطيك قيم عشوائية بين الـ0 والواحد، يمكنك توليد 10×10 بكسلات عشوائية حيث تمثل لون الرقع، هكذا:

m = rand([10, 10, 3]);
 

أو إذا كنت تفضلين تقليل الذاكرة الازمة لتمثيل الصورة عن طريق استخدام uint8:

m = uint8(255 * rand([10, 10, 3]));

 

ثم كبري الصورة باستخدام imresize مع استخدام nearest للتكبير (الدالة تستخدم bicubic interpolation افتراضياً لو لم تمرري شيء)، عدد مرات التكبير اضربيها بعدد البكسلات للحصول على الحجم النهائي للصورة:

m = imresize(m, 50.0, 'nearest');
 

مثال (حجم الصورة 10×50 = 500 بكسل لكنني صغرت النافذة):

img.png.a1ea284159cdd70104f2490fd7eff46f

m = uint8(255 * rand([10, 10, 3]));

	m = imresize(m, 50.0, 'nearest');

	imshow(m)
 
تم تعديل بواسطه Mr.B
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
2 ساعه مضت , Mr.B said:

rand ستعطيك قيم عشوائية بين الـ0 والواحد، يمكنك توليد 10×10 بكسلات عشوائية حيث تمثل لون الرقع، هكذا:

m = rand([10, 10, 3]);

 

أو إذا كنت تفضلين تقليل الذاكرة الازمة لتمثيل الصورة عن طريق استخدام uint8:

m = uint8(255 * rand([10, 10, 3]));

 

ثم كبري الصورة باستخدام imresize مع استخدام nearest للتكبير (الدالة تستخدم bicubic interpolation افتراضياً لو لم تمرري شيء)، عدد مرات التكبير اضربيها بعدد البكسلات للحصول على الحجم النهائي للصورة:

m = imresize(m, 50.0, 'nearest');

 

مثال (حجم الصورة 10×50 = 500 بكسل لكنني صغرت النافذة):

img.png.a1ea284159cdd70104f2490fd7eff46f

m = uint8(255 * rand([10, 10, 3]));

	m = imresize(m, 50.0, 'nearest');

	imshow(m)

 

جميل بارك الله فيك,,ولكن الصورة تظهر صغيرة والمطلوبة ان تكون بحجم 1024*1024 وحجم كل مربع 64,,ماذا افعل

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
1 ساعة مضت, عبير22 said:

جميل بارك الله فيك,,ولكن الصورة تظهر صغيرة والمطلوبة ان تكون بحجم 1024*1024 وحجم كل مربع 64,,ماذا افعل

أنشئ مصفوفة الـrand لتكون 16×16وكبريها في imresize لـ64 مرة أو العكس (لأن 1024/64=16).

تم تعديل بواسطه Mr.B
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
10 دقيقة مضت , Mr.B said:

أنشئ مصفوفة الـrand لتكون 16×16وكبريها في imresize لـ64 مرة أو العكس (لأن 1024/64=16).

تمام ظبطت ,,بس اخي هدا جوهر الحل ولكن المطلوب مني انشاء3 مصفوفات ودمجهم في مصفوفة واحدة عن طريق الدالة ()cat ثم جعل المصفوفة المدموجة تأخدالقيم من الدالة rand()  عموما انا سويت الكود التالي لكن ما عرفت اربط المصفوفة بدالة الراند <<كيف تم عملية الربط


;('rgbImage = zeros(640, 480, 3, 'uint8
 Extract the individual red, green, and blue color channels%
;(redChannel = rgbImage(:, :, 1
;(greenChannel = rgbImage(:, :, 2
;(blueChannel = rgbImage(:, :, 3
 Make a square some RGB color%
;redChannel(100:150, 200:350) = 255
;greenChannel(100:150, 200:350) = 213
;blueChannel(100:150, 200:350) = 57
 Recombine separate color channels into a single, true color RGB image%
;(rgbImage = cat(3, redChannel, greenChannel, blueChannel
 Display it%
;(imshow(rgbImage

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ربما تقصدين شيء مثل:

rgbImage = zeros(640, 480, 3, 'uint8');
% Extract the individual red, green, and blue color channels
redChannel = rgbImage(:, :, 1);
greenChannel = rgbImage(:, :, 2);
blueChannel = rgbImage(:, :, 3);
% Make a square some RGB color

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
dim = size(redChannel(100:150, 200:350));

redChannel(100:150, 200:350) = uint8(255 * rand(dim));
greenChannel(100:150, 200:350) = uint8(255 * rand(dim));
blueChannel(100:150, 200:350) = uint8(255 * rand(dim));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%Recombine separate color channels into a single, true color RGB image
rgbImage = cat(3, redChannel, greenChannel, blueChannel);
% Display it
imshow(rgbImage);

انظري لكيفية استخدام rand وجربيها بقيم مختلفة:

>> rand(2, 2) % مصفوفة 2×2


ans =
    0.4644    0.9302
    0.9677    0.1364

>> rand(1, 2, 3) % ثلاثة مصفوفات 2×1

ans(:,:,1) =
    0.4486    0.9150

ans(:,:,2) =
    0.9629    0.9524

ans(:,:,3) =
    0.9988    0.9827

>> uint8(255 * rand(2, 2)) % مصفوفة 2×2 لأعداد صحيحة من 0-255

ans =
  122   83
   31   13

>>

انظري لصفحة المساعدة في ماتلاب help، ستجدين كل ماتحتاجينه من معلومات عن طرق استخدام الدوال، مثلاً search rand

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

عرب.jpg

10599138_1126965950669086_881544042339804825_n.jpg

تم تعديل بواسطه عبير22
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الله يحفظك ويزيدك علم,, على مجهودك الرائع...

!عفوا ليش استخدمت هده الخطوة 

	squares = widthHeight / squareSize;

وما استخدمت squarsize على طول يعني اقصد ماهوالغرض من عملية التقسيم...

* وهل يوجد بديل للتكبير بدل من استخدام الامر الجاهز;(imresize(image, squareSize, 'nearest

....................................................................................................

عندي سؤال تاني هل استخدام checkerboard/kron function مع بعض تعطى نفس النتيجة وهى شطرنج ملون 

 
تم تعديل بواسطه عبير22
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
On ٢٧‏/٣‏/٢٠١٦ at 4:10 PM, Mr.B said:

 

 

تم تعديل بواسطه عبير22
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
On ٢٧‏/٣‏/٢٠١٦ at 4:59 PM, عبير22 said:

الله يحفظك ويزيدك علم,, على مجهودك الرائع...

!عفوا ليش استخدمت هده الخطوة 

	squares = widthHeight / squareSize;

وما استخدمت squarsize على طول يعني اقصد ماهوالغرض من عملية التقسيم...

* وهل يوجد بديل للتكبير بدل من استخدام الامر الجاهز;(imresize(image, squareSize, 'nearest

....................................................................................................

عندي سؤال تاني هل استخدام checkerboard/kron function مع بعض تعطى نفس النتيجة وهى شطرنج ملون 

 

النسر الدهبي اين انت

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

squares = widthHeight / squareSize;


هذه غرضها ايجاد عدد المربعات التي تحتويها الصورة للصف والعمود، إذا كان عرض الصورة 1024 وأبعاد كل مربع 64، فعدد المربعات 1024/64=16 في كل صف وعمود.

ضرب الـkronecker أول مرة أقرأ عنه، لكن يظهر أنه يمكن استخدامه لاستبدال imresize(..., 'nearest')، إذا ضربتي بمصفوفة الوحدة ones كل عناصرها واحد، فإن المصفوفة ستكبر كما لو استخدمتي الـnearest، فيمكن استبدال:

    image = imresize(image, squareSize, 'nearest');


بـ:

    image = kron(image, ones(squareSize, 'uint8'));


لكن الفرق أن imresize أسرع للصور الكبيرة، وكذلك من يقرأ الكود يفهم أنك تكبيرين صورة.

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

النسر الذهبي ,,,اعذرني على كثرة الاسئلة  ف انا مبتدائه في ماتلاب>>>:angel_80_anim_gif:

اخي طلب مني عند الحل استخدام Class of image & Determine Class of image ...هل تم استخدامها بالفعل في الكود السابق؟.. ام اضيف الامر(class(image في نهاية الكود السابق ,,

اخير ,,, مطلوب مني كمان في Coursework  شطرنج ملون بستخدام checkerboard/kron function انا سويت الكود بس طلع بدون الوان ,,كيف ضيف دالة الراند للكود التالي :

                                                                                                       ; (J=checkerboard(64,4,4
                                                                                                                                 ;J=J>0
                                                                                                                            ;(x=ones(8  
                                                                                                                        ;(A=kron(x,J

                                                                                                                           ;(imshow(A    

تم تعديل بواسطه عبير22
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .