مساعده معالجة الصور


(system) #1

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

انا لم اشتغل على الماتلاب في دراستي لكن من هذا المنتدى والحمد لله تعلمت اسياسيات فيه وجدت هنا شرح لدروس معالجة الصور لكن ما فتحت معي , ارجو رفعها من جديد ولكم جزيل الشكر

الان لدي مشروع تطوير ف احتاج مساعده في بناء الكود على معالجة الصور بحيث يتم تنقية الصور بعد تحويلها الى باينري

بحيث الصوره المدخله يتم تقسيمها الى مربعات بحجم ثابت 13*13

ويتم حساب الـ[FONT=&quot]thresholding

لكل مربع بناء على المعادله التاليه :
[/font]T(X,Y) = M(x,y)[FONT=&quot]*(1+k (s(x,y) / R )

[/font]M(x,y)
[FONT=&quot] المقصود فيه المتوسط بحيث ينقص اعلى قيمه من مستويات الرماديه باقل قيمه من مستويات الرماديه في المربع M(x,y)

k & R متغيرات ثابته
k=[/font][FONT=&quot]0.15
R= 128

[/font]المقصود به الانحراف المعياري لا اعرف كيف يتم [FONT=&quot]s(x,y)

للصور لكن وجدت ان هناك داله جاهزه بهذه الصيغه [/font][SIZE=4][COLOR=#790d0d] [FONT=Calibri]M1=std2(I)
هل هي تخص الصور الرماديه ام في الرياضيات لا اعلم ؟

بعد ما يتم حساب الـ [/font][/color][/size]thresholding
يتم تقسيم البكسلات الى 0 او 1
بحيث اذ كانت قيمة البكسل اقل من
[FONT=&quot]thresholding

يكون لونه اسود وياخذ قيمة (0)

واذا كانت اكبرر (1) يكون ابيض

وهكذا … حتى يتم تصفية الصوره

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

[/font]


#2

يمكنك عمل المربعات من خلال for loop بخطوة قدرها 13 فى الاتجاهين
وفى كل مرة يتم حساب قيمة متوسط ال threshold المطلوبة والتعويض فى المعادلة المذكورة وايجاد قيم البيكسل الجديدة

اعتقد الموضوع سهل ولكن يجب عليك البدء فيه وان شاء الله سنساعد عن وجود اى مشكلة


(system) #3

مرحبا استاذ احمد اعتذر جدا على التاخير بسبب ظروف الدراسه تم الحصول على كود لعمل ذلك

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

اذا ممكن تجربوا الكود هذا وتشوفوه وتعديل الخطا فيه

   I = imread('[COLOR=#7030A0]coins.bmp[/color]');
b= 80; [COLOR=#00B050]% Size of window[/color]
[w,h] =size(I);
con=zeros(w,h); [COLOR=#00B050]% create matrix =size image[/color]
[COLOR=#0070C0]for[/color] i=1 : h 
[COLOR=#00B050]% for i=1+b : h+b[/color]
    [COLOR=#0070C0]for[/color] j=1 : w 
    [COLOR=#00B050]%for j=1+b : w+b[/color]
            Win=I(i:b , j:b);[COLOR=#00B050]% create window b×b[/color]
           [COLOR=#0070C0] if[/color] max( Win(i:2*b) ) == 0
                con(Win(i,j))=max(Win(i:2*b))- min (Win(i:2*b)) / max(Win(i:2*b))+1;[COLOR=#00B050]% k=1 when max contrast=0[/color]
            [COLOR=#0070C0]else [/color]
                con(Win(i,j))=max(Win(i:2*b))- min (Win(i:2*b)) / max(Win(i:2*b));
            [COLOR=#0070C0]end[/color]
  [COLOR=#0070C0]  end
end[/color]
  

#4

اين الصورة coins.bmp


(system) #5

الصوره من جهاز لدي

ممكن تجرب على اي صوره لديك في جهازك يا استاذ $


#6

البرنامج فيه خطأ داخل اللوب حيث ان المتغير Win(i,j)
أصغر من الصورة ولذلك سيعطى خطأ


??? Attempted to access Win(1,41); index out of bounds because size(Win)=[80,40].

Error in ==> Untitled7 at 13
                con(Win(i,j))=max(Win(i:2*b))- min (Win(i:2*b)) / max(Win(i:2*b));

(system) #7

طيب كيف ممكن اغير اللوب ؟ واصحح الخطأ
انا حاولت اغير في قيمة المتغير , برضو نفس المشكله
ساعدني جزاك الله خير


#8

اعملى فور لوب تانيه للنافذة تكون مثلا لو النافذة مقاسها 80 تبقى الخطوة مقدارها 80 مع التأكد انها لا تتعدى حدود الصورة فى كل مرة


(system) #9

اهلن استاذ احمد
الف شكر , تم عمل فور لوب ثانيه وظبط

بسالك اذا ممكن تعطيني اسماء فنكشنات جاهزه في الماتلاب لتحسين الصور الباينري يعني تعمل فلتر بصوره ممتازه ؟؟

جزاك الله خير

او اي احد تعامل مع الصور الباينري وعمل عليها فلتر واعطاه نتيجه جيده يساعدني


#10

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