Προς το περιεχόμενο

Matlab interpolation


ekaiomen

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα,

Θα ήθελα μια βοήθεια στο εξής : Έχω τον βασικό πίνακα κβάντισης Q του jpeg που είναι 8X8 και θέλω μέσω interpolation να

φτιάξω εναν 16Χ16 και μέσω subsampling εναν 4Χ4 ετσι ώστε να διατηρούν το μοντέλο του 8Χ8 πίνακα. Βρήκα την

συνάρτηση interp2 στο matlab αλλά κολλάω στο πως να την δουλέψω.... καμιά βοήθεια ;;;

Δημοσ.

Αν θεωρήσουμε αυτές τις συντεταγμένες : Έχεις ορίσεις τα X και Υ ανα 1 pixel.

 

% original mesh

x1=[1:1:8];

y1=[1:1:8];

 

[XI1,YI1]=meshgrid(x1,y1);

 

%plot results

subplot(1,3,1)

contourf(XI,YI,Q);

title('8x8');

 

% interpolate on 4X4

x2=[1:2:8];

y2=[1:2:8];

 

[XI2,YI2]=meshgrid(x2,y2);

 

Q2=interp2(XI1,YI1,Q,XI2,YI2);

subplot(1,3,2)

contourf(XI2,YI2,Q2);

title('4x4');

 

 

% interpolate on 16X16

x3=[1:0.5:8];

y3=[1:0.5:8];

 

[XI3,YI3]=meshgrid(x3,y3);

Q3=interp2(XI1,YI1,Q,XI3,YI3);

subplot(1,3,3)

contourf(XI3,YI3,Q3);

title('16x16');

Δημοσ.

Ευχαριστώ......

Σχεδόν δουλεύει... Το μόνο που θέλει είναι οτι ο Q3 ειναι 15χ15 και οχι 16Χ16 ,

λογικά αν κανω το βήμα 0,45 απο 0,5 θα είναι οκ....

Thanks a lot..

Δημοσ.

Έχεις δίκιο, δεν το πρόσεξα. Το βήμα πρέπει να είναι (8-1)/15

 

x3=[1:(8-1)/15:8];

y3=[1:(8-1)/15:8];

 

Μπορείς να δοκιμάσεις την linspace

 

Αυτή η εντολή χωρίζει την απόσταση 1 εώς 8, σε 16 τμήματα.

 

x3=linspace(1,8,16);

y3=linspace(1,8,16);

 

 

Αντίστοιχα διόρθωσε και τα x2,y2

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...