تقسيم الصور


(sandra_2012) #1

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

لو سمحتو اريد أن اعرف كيف اقسم الصورة إلي مجموعة من (blocks) حجمه يكون 8*8

وكيف معرفة حجم الصورة ووضعها في صورة متساوية يعنى مثل 1024*1024


(eslamoo) #2

السلام عليكم

ممكن توضيح السؤال اكثر… لكي نستطيع مساعدتك ان امكن

وشكرا


(sandra_2012) #3

السلام عليكم

شكرا أخي على الرد

السؤال هو ان يكون عندى صورة ومندير عليها تحويل DCT

قبل ما اندير تحويل لازم يكون حجمها مساوي لبعضها

واريد ان اقسم الصورة إلي مجموعة من (Blocks)

يعنى ممكن اتكون الصورة حجمها 2024*1890

يعنى حجمها يكون 1024*1024 مثلا

وتقسم الي blocks

كل block يكون حجمه 8 *8

اتمنى ان تكون الصورة واضحة


(sandra_2012) #4

السلام عليكم

شكرا أخي على الرد

السؤال هو ان يكون عندى صورة ومندير عليها تحويل DCT

قبل ما اندير تحويل لازم يكون حجمها مساوي لبعضها

واريد ان اقسم الصورة إلي مجموعة من (Blocks)

يعنى ممكن اتكون الصورة حجمها 2024*1890

يعنى حجمها يكون 1024*1024 مثلا

وتقسم الي blocks

كل block يكون حجمه 8 *8

اتمنى ان تكون الصورة واضحة


(eslamoo) #5

وعليكم السلام.

طيب الى فهمته انه عندك صورة بأبعاد غير متساوية, وتريد تحويل هذه الصورة الى ابعاد متساوية ومن ثم تحويلها الى blocks 8*8 . بس هل الصورة عبارة عن تنائية البعد او ثلاثية الابعاد ؟؟

لحل هذه المسألة:

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

imread ويقوم بقراءة الصورة ومعرفة ابعادها
imresize ويقوم بتعديل حجم الصورة
mat2cell يقوم بتحويل الصورة الى مجموعة من blocks

الكود التالي يقوم بتحويل صورة بأبعاد 1200732 الى صورة بأبعاد 600600 ومن ثم يحول الى 8 blocks بأحجام متساوية 75*75

الكود والصورة في المرفقات…


clear all;
close all;
clc; 
M=imread('Libyafree.jpg'); 
B=imresize(M,[600 600])
C = mat2cell(B(:,:,1),[75 75 75 75 75 75 75 75],[75 75 75 75 75 75 75 75]);
 
 

ملاحضة الكود فقط للبعد الاول وهو B (:,:,1(

موفق


(sandra_2012) #6

السلام عليكم

بارك الله فيك أحي الكريم وجزاك الله كل خير ان شاء الله

أريد أن أسال سؤال آخر

وهو ان اعرف اكبر عنصر في كل block

وموقع هذا العنصر في كل block

وحفظه في ملف


(sandra_2012) #7

السلام عليكم

بارك الله فيك أحي الكريم وجزاك الله كل خير ان شاء الله

أريد أن أسال سؤال آخر

وهو ان اعرف اكبر عنصر في كل block

وموقع هذا العنصر في كل block

وحفظه في ملف


(eslamoo) #8

السلام عليكم

الكود في الاسفل يقوم بايجاد اكبر عنصر في كل block ويخزنه في مصفوفة اسمها maxval يعني تصبح مصفوفة 8*8
ومكان اكبر عنصر في كل block يتم تخزينه في مصفوفتين row و col
يعني مكان العنصر عبارة عن (row,col)



clear all;
close all;
clc; 
M=imread('Libyafree.jpg'); 
B=imresize(M,[600 600]);
C = mat2cell(B(:,:,1),[75 75 75 75 75 75 75 75],[75 75 75 75 75 75 75 75]);

for i=1:8
 for  j=1:8
   [maxval(i,j) ind(i,j)]=max(C{i,j}(:));   
    [row(i,j) col(i,j)] = ind2sub(size(C{i,j}),ind(i,j));
 end 
end
  maxval
  row
  col


ملاحضة: قمت فقط بأضافة عدد 2 لوب واستخدام دالتين هما max لايجاد اكبر عنصر , ودالة in2sub لايجاد مكان تلك العنصر.

موفق


(sandra_2012) #9

السلام عليكم

شكرا أخي الكريم

بصراحة ما فهمت آلية عمل الكود بالضبط

يا ريت توضحلى الكود أكثر


(eslamoo) #10

وعليكم السلام.

لم تفهم النتائج او لم تفهم الكود ؟

بالنسبة للنتائج هي
مصفوفة maxval وتحتوي علي اكبر عنصر لكل blocks

المصفوفتين row و col يحددان مكان اكبر عنصر في كل block

الامر بسيط جدا.

اما بالنسبة للكود: فقد قمت بأضافة عدد 2 loops
i=1:8 و j=1:8 لان ابعاد الصورة الجديدة مقسمة الى 8*8 blocks

وبداخل هذه ال loops

دالة max لحساب اكبر عنصر في كل block
ودالة ind2sub وتقوم بتحديد مكان ذلك العنصر

لفهم كيفية استخدام الدوال , فقط اذهب الى الماتلاب command window واكتب help ثم فراغ ثم اسم الدالة واضغط انتر.

الامر واضح جدا وسهل

موفق


(sandra_2012) #11

السلام عليكم

شكرا أخي الكريم وأعتذر عن التأخير في الرد

شكرا مرة تانية على الشرح لقد فهمت الكود

ولكنك قمت بوضع اكبر عنصر في كل Block في مصفوفة جديدة

وأنا لا أريد هذه الخطوة أريد الإحتفاظ بيه في المصفوفة الأصلية والإحتفاظ بموقعه في المصفوفة الأصلية

لقد وضحت لي الفكرة وقمت بتطبيقها كما أريد وشكرا على مساعدتك

ولكن أريد منك أن تساعدنى كيف اقوم بحفظ العناصر ومواقعها في ملف Excel


(eslamoo) #12

وعليكم السلام

لحفظ البيانات في ملف اكسل .

اضف فقط الجملة التالية للكود


xlswrite('yourfilename.xls',maxval)

وستجد ملف اكسل يحتوي علي بيانات المصفوفة maxval بأسم yourfilename في المجلد الحالي

موفق


(sandra_2012) #13

السلام عليكم أخي الكريم

شكرا على الرد

أريد معرفة كيف يمكن استدعاء هذا الملف وكيف يمكن تخزين الملف في مجلد ثاني

وشكرا