الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Bitplane Slicing

بدأه لمسة ملاك في 7 مايو 2010 · 4 رد · 1,199 مشاهدة · في الرياضيات والخوارزميات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

        (  Bitplane Slicing (bitsli.m 

  this code gives the darkened image produced by bit slicing
  written by srikanth


 ; ( a=imread('geo'.jpg
   ;(  a=a(:,:,1 
        ;  ( b=zeros(120,160,8

for k=1:8
for i=1:120
for j=1:160
b(i,j,k)=bitget(a(i,j),k); % get the pixel color and change
if b(i,j,k)==1; % accordingly
b(i,j,k)=255;
end
end
end
end
for k=1:8
figure,imshow(b(:,:,k));
end

اطلب منكم شرح لي كل سطر ماعمله

اكثر شي مافهمت هو السطرين الاوال والثاني والطر الي فيه الشرط ifوالسطر الي بعدة

تم تعديل هذه المشاركة بواسطة ibr_exn في 7 مايو 2010 في 22:18

#2

معروف ان الصورة تتكون من بكسلات

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

مثلا اذا كان كل بكسل نوع بياناته بحجم 8 بتات تمثل عدد صحيح موجب uint8

فسيكون لدينا بكسل تترواح قيمه من 0 الى 255

في بعض التطبيقات (خصوصا في مجال التشفير وضغط الصور) نحتاج الة معرفة اسهام كل بت في الصورة ومدى تأثيره على الصورة لذلك نقوم (في هذا المثال)بعرض الصورة 8 مرات، في كل مرة نقوم بعرض قيمة بكسل واحد فقط ونهمل البقيه.

%قراءة صورة من نوع تدرج الرمادي uint8  وخزنها في متغير 
a=imread('lena256G.BMP');
%حساب طول h وعرض w و عمق الصورة d
[h w d]=size(a);
%حذف العمق من الصورة فلا داعي له لان لدينا بعدين فقط
a=a(:,:,1 );
%عمل صورة احتياطيه خالية (سوداء) بنفس حجم الصورة الاصليه (ستستخدم لخزن صور البتات الثمانيه)
b=zeros(h,w,8);
%نمر على كل بت من الثمانية البتات المكونة للبكسل
for k=1:8
%نمر على كل صف في الصورة
    for i=1:h
%نمر على كل عمود في الصورة
       for j=1:w
%نخزن في الصورة الاحتياطية قيمة البت k فقط من الصورة الاصليه
           b(i,j,k)=bitget(a(i,j),k); % get the pixel color and change
%اذا كانت قيمة البت 1 معناه لون ابيض (في الصور الثنائية ) لذلك نحوله الى 255  (ابيض في الصور الرماديه)
          if b(i,j,k)==1; % accordingly
             b(i,j,k)=255;
          end
       end
    end
end
%نقوم باظهار الصور لكل بت ، طبعا كل ما زادت رتبة البت كلما كان تأثيره في الصورة اكبر
% مثلا البت الثامن مهم جدا بينما البت الاول لاقيمة تذكر له ويمكن ملاحظة ذلك عند عرض الصور
for k=1:8
    figure,imshow(b(:,:,k));
end

لمزيد من المعلومات حول الماتلاب والصور انصح بقراءة الكتب التاليه

. معالجة الصور الرقمية باستخدام ماتلاب:

كتاب يشرح الجزء النظري :

http://ifile.it/snz1kq/digitalimageprocessing-gonzalez.pdf

كتاب يشرح الجزء العملي :

http://ifile.it/v1n5mk/digitalimageprocess...matlab_muya.rar

بالتوفيق،

تم تعديل هذه المشاركة بواسطة ibr_exn في 8 مايو 2010 في 00:38

الحمد لله الذي هدانا لهذا وماكنا لنهتدي لولا ان هدانا الله

#3

مشكور مشرفنا الرائع

الله يجزاك الف خير على الشرح الرائع

لك مني جزيل الشكر والتقدير

#4

سوري مشرفنا على الازعاج

بس الروابط ماتفتح

#5

تم تصحيح الروابط

الحمد لله الذي هدانا لهذا وماكنا لنهتدي لولا ان هدانا الله

مواضيع مشابهة