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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
B1 = blockproc(im1,[8 8],vqm2(im));
Matlab me donne l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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