تقسيم الصورة


(system) #1

السلام عليكم…كيف الحال؟؟ اذا ممكن احد يساعدني في مشروعي؟؟؟ احتاج الى كود يقسم الصورة الى
( blocks(8*8


(Ahmed) #2

[CENTER]وعليكم السلام

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

بفرض ان :
ابعاد الصورة الاصلية “طول وعرض” من مضاعفات 8

وبفرض صورة JPEG مثل هذه :

هذا الكود ممكن يساعدك

clear all
clc

Image=rgb2gray(imread('essai.jpg'));
[m n]=size(Image);

Nbrx = floor(m./8);
Nbry = floor(n./8);

Nd=1;
for i=1:Nbrx
    for j=1:Nbry
        Mat=Image((i-1)*8+1:i*8,(j-1)*8+1:j*8);
        subplot(Nbrx,Nbry,Nd);
        imshow(Mat)
        Nd=Nd+1;
    end
end

والنتيجة تكون

لكن لا ينصح ياظهار جميع الصور “لان هذا يتطلب وقت حساب كبير من ماتلاب”

لذلك يفضل نزع الجزء الخاص باظهار الصور

والكود يكون

clear all
clc

Image=rgb2gray(imread('essai.jpg'));
[m n]=size(Image);

Nbrx = floor(m./8);
Nbry = floor(n./8);

Nd=1;
for i=1:Nbrx
    for j=1:Nbry
        Mat(Nd,:,:)=Image((i-1)*8+1:i*8,(j-1)*8+1:j*8);
        Nd=Nd+1;
    end
end

والاجزاء تكون في المصفوفة Mat

Mat(X,:,:)

تعني الجزء رقم X

هذا الكود يعتبر “ثقيلا” بالنسبة للزمن الذي يستهلكه، وبسيط ومباشر
يمكن تغيير الكثير فيه واختصاره

[/center]