Utilisation de la fonction blockproc
Bonjour,
Je ne parviens pas à utiliser la fonction blockproc pour faire un calcul par blocs 8x8 sur une image 1920x1080.
J'ai une fonction simple appelée vqm2 :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
function [dy]=vqm2(im)
% Color Tranfform %%
r = im(:,:,1);
g = im(:,:,2);
b = im(:,:,3);
[y,u,v]=rgb2yuv(r,g,b);
%% DCT %%
dy = dct2(y);
%% Local Contrast %%
DC = dy(1,1);
LC = (dy * power( DC/1024, 0.65 )) / DC;
%% SCSF %%
Q = [8 16 19 22 26 27 29 34;
16 16 22 24 27 29 34 37;
19 22 26 27 29 34 34 38;
22 22 26 27 29 34 37 40;
22 26 27 29 32 35 40 48;
26 27 29 32 35 40 48 58;
26 27 29 34 38 46 56 69;
27 29 35 38 46 56 69 83];
dyq = dy.*Q; |
J'utilise ensuite la fonction blockproc de la façon suivante :
Code:
B1 = blockproc(im1,[8 8],vqm2(im));
Matlab me donne l'erreur suivante :
Code:
1 2 3
| ??? Error using ==> BLOCKPROC
Argument 'Function' failed validation with error:
Invalid block function. BLOCKPROC expects the user function, FUN, to be a valid function handle. |
Il semble donc que la fonction vqm2 ne fonctionne pas avec blockproc, mais je ne comprend pas pourquoi. J'ai regardé ce qu'est une fonction handle sans plus de résultat...
Merci d'avance pour votre aide